美文网首页
2018-06-23-zookeeper

2018-06-23-zookeeper

作者: 迪奥炸 | 来源:发表于2018-06-23 15:13 被阅读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描述的路径,预新增的最终节点之前的所有父节点都必须要存在,否则会抛出异常。所以根据自己需要做好处理。

    相关文章

      网友评论

          本文标题:2018-06-23-zookeeper

          本文链接:https://www.haomeiwen.com/subject/vpyryftx.html