SpringBoot+zk+dubbo架构实践(一):本地部署zookeeper

退步的程序员 2018-06-04 16:27:46 ⋅ 733 阅读


SpringBoot+zk+dubbo架构实践系列实现目标

  1. 本地部署zookeeper

  2. SpringBoot 集成 zookeeper

  3. Dubbo-admin管理平台安装

  4. SpringBoot+ zookeeper +dubbo 框架搭建

  5. 架构业务实践(实现电商部分业务)

备注:本系列偏向于动手实践,不讲太多理论。

前言

本文操作都是在Mac上进行的,如果大家用的windows 可以相对应的进行修改一下。

下载zookeeper

首先去官网下载zookeeper包,这里使用3.4.12版本(也可以选择其他的),在这里下载:http://apache.claz.org/zookeeper/zookeeper-3.4.12/
下载并解压,目录如下图所示:


下载后在本地解压,进入zookeeper-3.4.12/conf目录下,将zoo_sample.cfg文件改名为zoo.cfg,再用文本编辑器打开这个文件,修改如下红框位置的内容,改成本地一个可以访问的已有目录:


备注:如果是windows可以选择磁盘路径

打开命令行窗口,进入zookeeper-3.4.12/bin目录,执行命令:

mac/linux :./zkServer.sh status
windows:zkServer.cmd status

查看当前zookeeper的运行状态,如下图所示,是没有启动的信息

xx:bin lin$ ./zkServer.sh status
ZooKeeper JMX enabled by defaultUsing config: /Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../conf/zoo.cfgError contacting service. It is probably not running.

执行命令启动zookeeper命令

mac/linux :./zkServer.sh start
windows:zkServer.cmd start

控制台输出如下信息说明zookeeper启动成功

xxx:bin lin$ ./zkServer.sh start
ZooKeeper JMX enabled by defaultUsing config: /Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

控制台输入zkServer.cmd status 查看启动结果:

xxx:bin lin$ ./zkServer.sh status
ZooKeeper JMX enabled by defaultUsing config: /Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../conf/zoo.cfg
Mode: standalone

如上所示zookeeper正在以standalone模式运行中;

接下来用客户端命令来链接服务端,执行如下命令:

mac/linux :./zkCli.sh
windows:zkCli.cmd

查看一下控制台输出结果:

xxx:bin lin$ ./zkCli.sh
Connecting to localhost:21812018-05-25 17:27:58,908 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.12-e5259e437540f349646870ea94dc2658c4e44b3b, built on 03/27/2018 03:55 GMT2018-05-25 17:27:58,914 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=192.168.2.162018-05-25 17:27:58,914 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_912018-05-25 17:27:58,916 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation2018-05-25 17:27:58,916 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre2018-05-25 17:27:58,917 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../build/classes:/Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../build/lib/*.jar:/Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../lib/slf4j-log4j12-1.7.25.jar:/Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../lib/slf4j-api-1.7.25.jar:/Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../lib/netty-3.10.6.Final.jar:/Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../lib/log4j-1.2.17.jar:/Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../lib/jline-0.9.94.jar:/Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../lib/audience-annotations-0.5.0.jar:/Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../zookeeper-3.4.12.jar:/Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../src/java/lib/*.jar:/Users/lin/Documents/temp/zookeeper-3.4.12 2/bin/../conf:2018-05-25 17:27:58,917 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/Users/lin/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.2018-05-25 17:27:58,917 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/var/folders/cf/q_dg400d5ql4vxlv7c4h_qvm0000gn/T/2018-05-25 17:27:58,917 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>2018-05-25 17:27:58,917 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Mac OS X2018-05-25 17:27:58,917 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=x86_642018-05-25 17:27:58,917 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=10.11.32018-05-25 17:27:58,918 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=lin2018-05-25 17:27:58,918 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/Users/lin2018-05-25 17:27:58,918 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/Users/lin/Documents/temp/zookeeper-3.4.12 2/bin2018-05-25 17:27:58,919 [myid:] - INFO  [main:ZooKeeper@441] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@5a2e4553
Welcome to ZooKeeper!2018-05-25 17:27:58,944 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1028] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled2018-05-25 17:27:59,022 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@878] - Socket connection established to localhost/127.0.0.1:2181, initiating session2018-05-25 17:27:59,056 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1302] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x100448cddc80000, negotiated timeout = 30000[zk: localhost:2181(CONNECTED) 0] 
WATCHER::

WatchedEvent state:SyncConnected type:None path:null

好了客户端链接上服务器端了。

创建znode节点,执行命令

#创建一个zone节点node_1 对应的value值为“abc”
create /node_1 abc
#控制台输出
[zk: localhost:2181(CONNECTED) 5] create /node_1 abc Created /node_1

查询创建的znode 节点

#创建一个zone节点node_1 对应的value值为“abc”
get /node_1#控制台输出
[zk: localhost:2181(CONNECTED) 6] get /node_1 abc cZxid = 0x9 ctime = Fri May 25 19:00:02 CST 2018 mZxid = 0x9 mtime = Fri May 25 19:00:02 CST 2018 pZxid = 0x9 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 3 numChildren = 0

zookeeper 常用命令总结

#服务命令
1. 启动ZK服务:       sh bin/zkServer.sh start 2. 查看ZK服务状态: sh bin/zkServer.sh status 3. 停止ZK服务:       sh bin/zkServer.sh stop 4. 重启ZK服务:       sh bin/zkServer.sh restart
#客户端命令
1. 显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容 2. 显示根目录下、文件: ls2 / 查看当前节点数据并能看到更新次数等数据 3. 创建文件,并设置初始内容: create /node_1 "test" 创建一个新的 znode节点“ node_1 ”以及与它关联的字符串 4. 获取文件内容: get /node_1 确认 znode 是否包含我们所创建的字符串 5. 修改文件内容: set /node_1 "zkbak" 对 zk 所关联的字符串进行设置 6. 删除文件: delete /node_1 将刚才创建的 zone 删除 7. 退出客户端: quit 8. 帮助命令: help

关注我们

更多精彩内容请关注“IT实战联盟”公众号,也可以加入交流群和作者互撩哦~~~



全部评论: 0

    我有话说:

    SpringBoot+zk+dubbo架构实践(二):SpringBoot 集成 zookeeper

    不啰嗦,本篇完成两件事:1、搭建SpringBoot 框架;2、基于spring boot框架访问zookeeper

    SpringBoot+zk+dubbo架构实践(三):部署Dubbo-admin管理平台

    本系列架构实践不做深入探讨,主旨是带领大家能够快速踏入微服务架构门槛,能够轻松的搭建套属于自己的微服务架构。——写代码我们是认真滴!

    SpringBoot+zk+dubbo架构实践(四):sb+zk+dubbo框架搭建(内附源码GitHub地址)

    本篇案例模拟了一个provider服务提供方和PC、Web两个服务消费方内附GitHub源码......

    SpringBoot+zk+dubbo架构实践(五):搭建微服务电商架构(内附GitHub地址)

    集成了mybatis和swagger让接口可视化并完成了一些增删改查的基础业务,对了还有个分页查询!

    架构实战篇(十):Spring Boot 集成 Dubbo

    Dubbo是阿里巴巴SOA服务化治理方案的核心框架,一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案。

    精品推荐:Nacos 发布 v0.6.0 版本,支持 Dubbo 和 Docker 部署

    阿里巴巴微服务开源项目Nacos发布 v0.6.0 版本,该版本开始支持 Dubbo的服务发现和配置管理,并针对 Docker 部署提供了官方的 Docker 镜像,以及优化了Nacos 控制台的

    传统保险企业基于 Dubbo 的微服务实践

    Dubbo 社区开发者日深圳站的现场分享

    服务化改造实践 | 如何在 Dubbo 中支持 REST

    随着微服务的流行以及多语言互操作诉求的日益增多,在 Dubbo 中暴露 REST 服务变成了一个不容忽视的诉求。

    架构实战篇:认识ZooKeeper和CAP及一致性原则

    一个分布式系统不可能同时满足以下三种一致性(一致性(C:Consistency) 可用性(A:Available)分区容错性(P:Partition Tolerance)

    架构实战篇:认识下微服务架构

    微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。

    微服务架构实战篇:快速入手SpringBoot 2.0,欢迎入坑哦~~~

    SpringBoot 2.0 基本要求Java最低要求8以上,不再支持Java 6 和 7等低版本。

    Dubbo Admin重构版-v0.1发布

    为了提升 Dubbo 里程碑版本2.7.0的使用体验,去年年中启动了 Dubbo Admin 的重构计划

    架构实战篇(十):Spring Boot 集成企业级搜索引擎 SolrCloud

    Solr是以Lucene为基础实现的文本检索应用服务。Solr部署方式有单机方式、多机Master-Slaver方式、Cloud方式。

    WeCube 2.7.1 发布,站式 IT 架构管理和运维管理工具

    WeCube简介 微众银行在分布式架构实践的过程中,发现将银行核心系统构建于分布式架构之上,会遇到一些与传统单体应用不同的痛点(例如,服务器增多,部署难度大;调用链长,全链路跟踪困难; 系统复杂

    微服务架构学习笔记():重新认识微服务

    微服务(Microservice)是服务化思路的种最佳实践方向,遵循SOA的思路,各个企业在服务化治理的道路上走的时间长了,踩的坑多了,整个软件交付链路上各个环节的基础设施逐渐成熟了,微服务

    Dubbo3.0 来了:服务发现百万集群,可伸缩微服务架构

    来自:高可用架构原文:https://mp.weixin.qq.com/s/_Ih4AyL2c1JjyLwKCPmphg 本文篇关于 Dubbo 地址推送性能的压测文章,我们期望通过对比的方式

    架构实战篇:一个可供中小团队参考的微服务架构技术栈

    作者近年一直在一线互联网公司(携程,拍拍贷等)开展微服务架构实践,根据我个人的一线实践经验和我平时对Spring Cloud的调研,我认为Spring Cloud技术栈中的有些组件离生产级开发尚有

    【分享】次单体架构改造成微服务架构的拆分实践

    从5个方面设计这次微服务的拆分方案,以及经验总结!