執行 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
