ZooKeeper是一个分布式应用程序的分布式协调服务,用于分布式协调服务的应用程序中,它的设计易于编程,内部使用熟悉的文件系统目录的树状结构样式存储数据,它在Java环境下运行,同时可以与C语言进行交互。
如图,组成ZooKeeper的服务器之间都必须相互了解,它们在内存中维护数据,也可持久化存储事务日志和快照。组成服务的的ZooKeeper只要大多数服务可用,ZooKeeper集群则保持可用。
客户端连接单个ZooKeeper服务器,客户端维护一个TCP连接,通过它发送请求,获取响应,获取监视事件并发送心跳。如果与服务器的TCP连接断开,则客户端会连接到其他服务器上。
- 下载
我们可以在ZooKeeper的官网上下载数据包:http://zookeeper.apache.org/releases.html - 下载好后将其解压缩到指定目录,启动前先配置,在conf/zoo.cfg,你可以在里面拷贝一份zoo_sample.cfg将其命名成zoo.cfg
# 监测心跳的毫秒数
tickTime=2000
# 集群中follower服务器和leader服务器之间初始连接时能容忍的最多心跳数,超时时间计算是tickTime * initLimit
initLimit=10
# 集群中follower服务器和leader服务器之间请求和应答之间能容忍的最多心跳数,超时时间计算是tickTime * syncLimit
syncLimit=5
# 存储内数据快照的位置,除此之外,还会存储数据更新的事务日志
dataDir=/var/data/zookeeper
# 设置监听客户端的连接端口
clientPort=2181
- 创建好配置文件后,启动ZooKeeper:
./bin/zkServer.sh start
- 使用客户端连接ZooKeeper
./bin/zkCli.sh -server 127.0.0.1:2181
在控制台中,你可以发出查看所有节点list命令:
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
接下来运行创建一个新的znode节点:
[zk: localhost:2181(CONNECTED) 2] create /test_node1 test_node1_data
Created /test_node1
再发出一个ls /命令查看目录:
[zk: localhost:2181(CONNECTED) 3] ls /
[test_node1, zookeeper]
可以看到已经创建了一个test_node1目录。
接下来我们运行get命令查看节点数据:
[zk: localhost:2181(CONNECTED) 4] get /test_node1
test_node1_data
可以通过发出set命令来更改与test_node1相关的数据:
[zk: localhost:2181(CONNECTED) 5] set /test_node1 modify_test_node1_data
[zk: localhost:2181(CONNECTED) 6] get /test_node1
modify_test_node1_data
在执行玩set命令后数据已经完成修改。
最后,可以发出delete命令来删除节点
[zk: localhost:2181(CONNECTED) 7] delete /test_node1
[zk: localhost:2181(CONNECTED) 8] ls /
[zookeeper]
至此,以上只是的ZooKeeper的安装和简单用法。