Zookeeper是什么
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
Zookeeper能做什么
zookeeper功能非常强大,可以实现诸如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能。
Zookeeper原理
ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader (领导者),只有leader才能提交proposer,具体算法可见Fast Paxos。因此,要想弄懂ZooKeeper首先得对Fast Paxos有所了解。
ZooKeeper的基本运转流程:
- 选举Leader
- 同步数据
- 选举Leader过程中算法有很多,但要达到的选举标准是一致的
- Leader要具有最高的执行ID,类似root权限
- 集群中大多数的机器得到响应并接受选出的Leader
Zookeeper安装
-
下载zookeeper,下载地址:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/ ,这里下载的是3.4.14版本的,下载完成后解压到本地目录即可,如图所示:
-
运行解压目录下的/bin/zkServer.cmd,初次运行会报错(而且会闪退),因为没有zoo.cfg配置文件
-
为了解决报错,需要编辑zkServer.cmd,在文件末尾添加pause 。这样运行出错就不会退出,而会提示错误信息,方便找到原因,如图所示:
-
再次运行zkServer.cmd,可以看到错误原因,如图所示:
-
想要解决这个问题,只需要将conf文件夹下面的zoo_sample.cfg复制一份,并且改名为zoo.cfg即可
注意两个重要位置:-
dataDir=./ 临时数据存储的目录(可写相对路径)
-
clientPort=2181 zookeeper的端口号
-
-
修改完成后再次启动zkServer.cmd,运行成功,如图所示:
-
使用zkCli.cmd进行测试,步骤如下:
ls /
:列出Zookeeper根下保存的全部节点,如图所示:
create –e /abc 123
:创建一个abc节点,值为123,如图所示:
get /abc
:获取/abc节点的值,如图所示:
Zookeeper详细学习
推荐博客:https://blog.csdn.net/java_66666/article/details/81015302