2018-06-23-zookeeper

2018-06-23  本文已影响0人  迪奥炸

https://blog.csdn.net/catoop/article/details/50848555

http://www.cnblogs.com/ejiyuan/p/5587700.html

集群部署

1、下载

2、安装【解压,创建data,dataLog目录】

3、配置【cd zookeeper-3.4.8/conf ,创建文件 zoo.cfg】

4、创建myid文件【cd server1 ,echo 1 > myid】

5、搭建集成环境:拷贝server1为server2、server3,并修改其中的zoo.cfg、myid【注意server端口号和clientPort不要重复了,不然会出现端口冲突】【每一个server的myid内容都不能一样,这也可以理解为不同server的标识】

启动

进入 zookeeper-3.4.8/bin 目录,使用 ./zkServer.sh start 启动zk服务。(你也可以使用 ./zkServer.sh start myzoo.cfg 指定配置文件启动,这在自动化运维的时候很有用) 

使用 tail -f zookeeper.out 查看日志。 

要说的是:在启动第一个的时候,日志中会出现一堆错误,仔细一看就能明白,是因为另外2个server还没有启动它连接不上的错误。然后当我们启动第二个server的时候,日志中的错误将会减少。最后我们把所有server都启动起来后,日志中便没有错误了。

测试

随便进入一个zk目录,连接一个server测试【cd zookeeper-3.4.8/bin ,zkCli.sh -server 127.0.0.1:2181 】

基本命令说明:

ls 查看指定节点中包含的子节点(如:ls / 或 ls /app1/server1)

create 创建节点并赋值 

get 读取节点内容 

set 改变节点内容 

delete 删除--------->注意zk中所有节点都基于路径确定,如你要删除 /app1/server1/nodeA 的命令为:delete /app1/server1/nodeA

Demo中的Java

1、创建zookeeper实例

2、创建Watcher实例【建立watched事件】

3、初始化zookeeper实例【连接到ZK服务,多个可以用逗号分割写】

4、操作节点

5、关闭zookeeper

开源的zkclient

为了更易于使用,有人写了开源的zkclient,我们可以直接使用它来操作zk。 

zkClient 针对 zk 的一次性watcher,做了重新封装,然后定义了 stateChanged【监听children变化】、znodeChanged【监听节点数据变化】、dataChanged 【监听连接状态变化】三种监听器。

1、创建并初始化zkClient和节点[即节点路径]

2、订阅监听事件:

childChangesListener(zkClient, node);----> zkClient.subscribeChildChanges

dataChangesListener(zkClient, node);   ------>zkClient.subscribeDataChanges

stateChangesListener(zkClient);------> zkClient.subscribeStateChanges

最后说几点关于ZkClient的注意事项: 

1. 创建节点的时候一定要先判断节点是否存在,如果直接使用zkclient创建一个已经存在的节点,则会抛出异常。 

2. 使用zkclient创建节点的时候,path描述的路径,预新增的最终节点之前的所有父节点都必须要存在,否则会抛出异常。所以根据自己需要做好处理。

上一篇下一篇

猜你喜欢

热点阅读