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

posted @ 2019-04-22 00:14  江湖小小白  阅读(9433)  评论(0编辑  收藏  举报