🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 客户端连接 运行`zkCli.sh –server <ip>`进入命令行工具 ![](https://box.kancloud.cn/ee4ff73cd4be3353c90c2cafea906eed_652x713.png) 需要注意的是ZK是不能一次创建多级节点的 ~~~ help # 肯定有个根节点,查看根节点 [zk: localhost:2181(CONNECTED) 0] ls / [zookeeper] # 创建个节点,内容是我的女孩,权限不写默认是所有人都可以访问 [zk: localhost:2181(CONNECTED) 1] create /mygir "我的女孩" Created /mygir # 读取数据 [zk: localhost:2181(CONNECTED) 3] get /mygir 我的女孩 cZxid = 0x100000004 ctime = Wed Feb 28 13:37:35 UTC 2018 mZxid = 0x100000004 mtime = Wed Feb 28 13:37:35 UTC 2018 pZxid = 0x100000004 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 12 numChildren = 0 # 再创建个节点 [zk: localhost:2181(CONNECTED) 1] create /mygir/liuyifei "我的大女朋友" Created /mygir/liuyifei # 修改数据 [zk: localhost:2181(CONNECTED) 2] set /mygir "都是我的梦想" cZxid = 0x100000004 ctime = Wed Feb 28 13:37:35 UTC 2018 mZxid = 0x100000008 mtime = Wed Feb 28 13:44:15 UTC 2018 pZxid = 0x100000007 cversion = 1 dataVersion = 1 //数据版本,表示修改过了一次 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 18 numChildren = 1 //有几个节点 ~~~ # `_stat`结构体 ~~~ czxid # 引起这个znode创建的zxid,创建节点的事务的zxid ctime # znode被创建的毫秒数(从1970年开始) mzxid # znode最后更新的zxid mtime # znode最后修改的毫秒数(从1970年开始) pZxid # znode最后更新的子节点zxid cversion # znode子节点变化号,znode子节点修改次数 dataversion # znode数据变化号 aclVersion # znode访问控制列表的变化号 ephemeralOwner # 如果是临时节点,这个是znode拥有者的session dataLength # znode的数据长度 numChildren # znode子节点数量 ~~~ # 查看znode路径 ~~~ ls /mygirls ~~~ # 获取znode数据 ~~~ get /mygirls ~~~ # Zookeeper客户端四字符指令 conf 配置信息 cons 连接信息 dump 未处理会话节点 envi 环境信息 reqs 未处理请求 stat 统计信息 wchs 服务器watch的详细信息 wchp 列出指定路径下服务器信息 ~~~ [root@zk-003 ~]# echo conf | nc 10.0.0.8 2181 clientPort=2181 dataDir=/tmp/zookeeper/version-2 dataLogDir=/tmp/zookeeper/version-2 tickTime=2000 maxClientCnxns=60 minSessionTimeout=4000 maxSessionTimeout=40000 serverId=8 initLimit=10 syncLimit=5 electionAlg=3 electionPort=3888 quorumPort=2888 peerType=0 [root@zk-003 ~]# echo envi | nc 10.0.0.8 2181 Environment: zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT host.name=zk-001 java.version=1.8.0_121 java.vendor=Oracle Corporation java.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre java.class.path=/usr/local/zookeeper/bin/../build/classes:/usr/local/zookeeper/bin/../build/lib/*.jar:/usr/local/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/bin/../lib/netty-3.7.0.Final.jar:/usr/local/zookeeper/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/bin/../zookeeper-3.4.6.jar:/usr/local/zookeeper/bin/../src/java/lib/*.jar:/usr/local/zookeeper/bin/../conf: java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib java.io.tmpdir=/tmp java.compiler=<NA> os.name=Linux os.arch=amd64 os.version=2.6.32-504.el6.x86_64 user.name=root user.home=/root user.dir=/usr/local/zookeeper/conf [root@zk-003 ~]# echo stat | nc 10.0.0.8 2181 Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT Clients: /10.0.0.10:41192[0](queued=0,recved=1,sent=0) Latency min/avg/max: 0/0/0 Received: 4 Sent: 3 Connections: 1 Outstanding: 0 Zxid: 0x200000000 Mode: leader Node count: 4 ~~~ # 监听znode事件 ~~~ ls /mygirls watch ## 就对一个节点的子节点变化事件注册了监听 get /mygirls watch ## 就对一个节点的数据内容变化事件注册了监听 ~~~ 注意: 监听器只生效一次,再次改变,监听器就不起效果 监听器的工作机制,其实是在客户端会专门创建一个监听线程,在本机的一个端口上等待zk集群发送过来事件 ![](https://box.kancloud.cn/3aa5b68a57a86eb30423b18cec569415_923x489.png)