版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://sunkuan.blog.csdn.net/article/details/120501762
上一篇博客我们用 Dubbo + Multicast 来搭建了一个 HelloWorld 小程序,相信大家已经对这个流程有了一些了解。但是官方并不推荐大家将 Multicast 这个注册中心用于实际生产,因为它不能跨网络,而且使用范围小,仅用于学习和测试。而 Zookeeper 才是真正的中心,服务都注册在 Zookeeper 中,所以只要服务还在,挂了也无所谓。
本篇博客重点为大家介绍 Zookeeper,以及它的安装和使用。一般情况下我们都会用 Linux 系统来安装它,由于我的电脑由于出了一点小故障,导致 VMware 虚拟机安装不上。所以本篇博客我将使用 Windows 系统来演示安装,Linux 的安装教程网上资料有很多,感兴趣的小伙伴可以自行百度。
一、Zookeeper概述
-
Zookeeper 是一个分布式服务框架,是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题。
-
本篇博客中,Zookeeper 主要的角色是做服务注册中心存在,我们将编写好的服务注册至 Zookeeper 服务注册中心 中。
-
服务注册中心,给客户端提供可供调用的服务列表,客户端在进行远程服务调用时,根据服务列表然后选择服务提供方的服务地址进行服务调用。服务注册中心在分布式系统中大量应用,是分布式系统中不可或缺的组件,例如 Dubbo 中的 Zookeeper 注册中心,Spring Cloud 中的服务注册中心 Eureka。
二、Zookeeper安装
不管是 Linux 还是 Windows 系统,它们下载的安装文件都是一样的。本篇博客中使用的 Windows 系统,所以我会以截图方式演示安装步骤。
-
Zookeeper 下载地址: https://archive.apache.org/dist/zookeeper/
-
1)解压到常用的安装目录:
- 2)将
conf
目录下的zoo_sample.cfg
文件,复制一份,重命名为zoo.cfg
:
- 3)在安装目录下面新建一个空的
data
文件夹和logs
文件夹,修改zoo.cfg
配置文件,修改内容下:
1、单机版
如果是单机的话,我们直接运行
zkServer.cmd
就可以开启 Zookeeper 服务了。
再运行
zkCli.cmd
,开启一个客户端,出现如图欢迎字样则安装成功!
我们在 客户端 上可进行一些常用命令的操作:
-
ls
:查看某个目录包含的所有文件。如:[zk: 127.0.0.1:2181(CONNECTED) 1] ls /
-
create
:创建节点,并设置初始内容。如:[zk: 127.0.0.1:2181(CONNECTED) 1] create /test "test" Created /test
-
get
:获取节点的数据。如:[zk: 127.0.0.1:2181(CONNECTED) 1] get /test test
-
set
:修改/设置节点数据。如:[zk: 127.0.0.1:2181(CONNECTED) 1] set /test "ricky"
-
delete
:删除节点。如:[zk: 127.0.0.1:2181(CONNECTED) 1] delete /test
-
quit
:退出客户端。 -
help
:帮助命令。
2、集群版
为了节省资源我们通过多个进程的方式模拟集群环境。我们将 单机版 的 Zookeeper 复制三份,分别为:
zk1
、zk2
、zk3
。
修改每个 Zookeeper 的文件内容:
在
zoo.cfg
中修改clientPort
配置,zk1 为2181
,zk2 为2182
,zk3 为2183
;在
zoo.cfg
中修改dataDir
和dataLogDir
配置;在
data
目录下新建文件:myid
,zk1 的myid
写1
,zk2 中写2
,zk3 中写3
;在
zoo.cfg
中的最后增加 集群配置:# 集群配置 # server.1 中的 1 是 myid 文件中的内容,2888 2889 2890 用于集群内部通信,3888 3889 3890 用于选择 leader server.1=127.0.0.1:2888:3888 server.2=127.0.0.1:2889:3889 server.3=127.0.0.1:2890:3890
然后分别启动 zk1、zk2、zk3 的
zkServer.cmd
文件。我们可以通过命令窗口看到 zk2 是主节点了。