ZooKeeper 客户端命令 zkCli
执行 bin/zkCli 文件进入客户端
查看帮助
help ZooKeeper -server host:port cmd args stat path [watch] set path data [version] ls path [watch] delquota [-n|-b] path ls2 path [watch] setAcl path acl setquota -n|-b val path history redo cmdno printwatches on|off delete path [version] sync path listquota path rmr path get path [watch] create [-s] [-e] path data acl addauth scheme auth quit getAcl path close connect host:port
查看节点(ZNode)
# 查看根节点 ls / [zookeeper]
查看节点详细数据
# 查看根节点详细数据 ls2 / [zookeeper] cZxid = 0x0 ctime = Thu Jan 01 08:00:00 CST 1970 mZxid = 0x0 mtime = Thu Jan 01 08:00:00 CST 1970 pZxid = 0x0 cversion = -1 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 1
数据中的信息说明
1)czxid-创建节点的事务zxid 每次修改ZooKeeper状态都会收到一个zxid形式的时间戳,也就是ZooKeeper事务ID。 事务ID是ZooKeeper中所有修改总的次序。每个修改都有唯一的zxid,如果zxid1小于zxid2,那么zxid1在zxid2之前发生。 2)ctime - znode被创建的毫秒数(从1970年开始) 3)mzxid - znode最后更新的事务zxid 4)mtime - znode最后修改的毫秒数(从1970年开始) 5)pZxid-znode最后更新的子节点zxid 6)cversion - znode子节点变化号,znode子节点修改次数 7)dataversion - znode数据变化号 8)aclVersion - znode访问控制列表的变化号 9)ephemeralOwner- 如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0。 10)dataLength- znode的数据长度 11)numChildren - znode子节点数量
查看节点状态,与 ls2 类似
# 查看根节点状态
stat /
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x200000004
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2
创建普通节点(持久)
# 在根目录下创建 zhongguo 节点,内容为 hubei,必须要有内容,不允许创建空节点 create /zhongguo hubei Created /zhongguo # 在 /zhongguo 下创建 zhongguo 节点,必须存在 /zhongguo 节点 create /zhongguo/guangdong guangzhou Created /zhongguo/guangdong # 查看节点,不能加尾斜杠 ls /zhongguo [guangdong]
创建短暂节点(客户端断开连接后会自动删除)
# 加上 -e 参数 create -e /zhongguo/hainan haikou Created /zhongguo/hainan
创建带序号节点
# 加上 -s 参数,从2 开始说明 /zhongguo 下之前已创建过节点,没有的话是从 0 开始 create -s /zhongguo/shanghai pudong Created /zhongguo/shanghai0000000002 # 再次创建 create -s /zhongguo/shanghai pudong Created /zhongguo/shanghai0000000003
获取节点内容
# 获取 /zhongguo/guangdong 节点内容 get /zhongguo/guangdong guangzhou cZxid = 0x200000005 ctime = Sun Apr 21 23:28:15 CST 2019 mZxid = 0x200000005 mtime = Sun Apr 21 23:28:15 CST 2019 pZxid = 0x200000005 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0
修改节点内容
# 修改 /zhongguo 内容为 beijing set /zhongguo beijing cZxid = 0x200000004 ctime = Sun Apr 21 23:24:28 CST 2019 mZxid = 0x20000000a mtime = Sun Apr 21 23:44:04 CST 2019 pZxid = 0x200000009 cversion = 4 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 7 numChildren = 4
删除节点
# 删除空节点,节点下不能有节点 delete /zhongguo/shanghai0000000003 # 递归删除节点 rmr /zhongguo
监听节点的值的变化
# 监听 /zhongguo 的值的变化 get /zhongguo watch beijing cZxid = 0x200000004 ctime = Sun Apr 21 23:24:28 CST 2019 mZxid = 0x20000000a mtime = Sun Apr 21 23:44:04 CST 2019 pZxid = 0x20000000b cversion = 5 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 7 numChildren = 3 # 设置监听后,用其他客户端修改该节点的值,就会看到信息,只能监听一次 WATCHER:: WatchedEvent state:SyncConnected type:NodeDataChanged path:/zhongguo
监听节点下的子节点变化(路径变化)
# 监听 /zhongguo 下节点的变化 ls /zhongguo watch [shanghai0000000002, hainan, guangdong] # 用其他客户端在 /zhongguo 下增加节点,就会看到消息,只能监听一次 WATCHER:: WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/zhongguo
https://zookeeper.apache.org/doc/current/zookeeperProgrammers.html#sc_zkStatStructure