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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM