zookeeper常用客戶端命令


zookeeper常用客戶端命令

zookeeper 命令用於在 zookeeper 服務上執行操作。首先執行命令,打開新的 session 會話,進入終端:

sh zkCli.shsh zkCli.sh -server 127.0.0.1:2181

一、新增節點

create [-s] [-e] [-c] [-t ttl] path [data] [acl] //其中-s為有序節點 -e為臨時節點 -c為容器節點 -t指定ttl節點

1、創建持久化節點

[zk: localhost:2181(CONNECTED) 3] create /wfj "123456"
Created /wfj
[zk: localhost:2181(CONNECTED) 4] create /wfj1 ""
Created /wfj1

2、創建持久化有序節點,此時創建的節點名為指定節點名 + 自增序號

[zk: localhost:2181(CONNECTED) 7] create -s /a "a"
Created /a0000000003
[zk: localhost:2181(CONNECTED) 8] create -s /b "b"
Created /b0000000004
[zk: localhost:2181(CONNECTED) 9] create -s /c "c"
Created /c0000000005

 3、創建臨時節點,臨時節點在會話過期后被刪除

[zk: localhost:2181(CONNECTED) 10] create -e /tmp "tmp"
Created /tmp

4、創建臨時有序節點,臨時節點在會話過期后被刪除

[zk: localhost:2181(CONNECTED) 1] create -s -e /aa "aa"
Created /aa0000000007
[zk: localhost:2181(CONNECTED) 2] create -s -e /bb "bb"
Created /bb0000000008
[zk: localhost:2181(CONNECTED) 3] create -s -e /cc "cc"
Created /cc0000000009

 5、創建容器節點,當刪除掉container節點下的所有子節點后, container節點本身也會被清除掉,默認被清除的時間是60s

[zk: localhost:2181(CONNECTED) 11] create -c /container
Created /container
[zk: localhost:2181(CONNECTED) 12] create /container/sub1
Created /container/sub1
[zk: localhost:2181(CONNECTED) 13] create /container/sub2
Created /container/sub2
[zk: localhost:2181(CONNECTED) 14] ls -R /container
/container
/container/sub1
/container/sub2
[zk: localhost:2181(CONNECTED) 15] delete /container/sub1
[zk: localhost:2181(CONNECTED) 16] delete /container/sub2
[zk: localhost:2181(CONNECTED) 17] ls -R /container
/container
[zk: localhost:2181(CONNECTED) 18] ls -R /container
Node does not exist: /container

 6、創建就ttl節點 -t ,ttl節點的特性是可以創建一個打失效時間的節點,失效時間過來之后節點會被自動刪除。需要添加擴展業務,修改zkServer.sh。 -Dzookeeper.extendedTypesEnabled=true

[zk: localhost:2181(CONNECTED) 0] create -t 5000 /ttl-node ttttt
Created /ttl-node

 二、修改節點

通過set命令可以對節點進行修改,如下:

[zk: localhost:2181(CONNECTED) 3] set /wfj "345"
[zk: localhost:2181(CONNECTED) 4] get /wfj
345
[zk: localhost:2181(CONNECTED) 5] stat /wfj
cZxid = 0x54
ctime = Tue May 11 07:32:08 UTC 2021
mZxid = 0x55
mtime = Tue May 11 08:03:06 UTC 2021
pZxid = 0x54
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

也可以基於版本號進行修改,類似於樂觀鎖機制。如果傳入的版本號dataVersion和當前版本號不一致時,zookeeper會拒絕本次修改:

[zk: localhost:2181(CONNECTED) 13] set -v 2 /wfj "123"
version No is not valid : /wfj

三、刪除節點

可以用過delete命令或者delateall命令對節點進行刪除,使用delete刪除節點時,如果該節點下存在子節點,該節點不允許刪除。如果想刪除某個節點極其所有后代節點,可以使用deleteall命令進行刪除。部分老版本不支持deleteall命令,可以使用rmr path命令進行遞歸刪除。刪除節點和更新節點一樣,也可以傳入版本號,當傳入的數據版本號和當前節點的數據版本不一致時,zookeeper不會執行刪除操作。

[zk: localhost:2181(CONNECTED) 7] delete /wfj
Node not empty: /wfj
[zk: localhost:2181(CONNECTED) 10] deleteall /wfj
[zk: localhost:2181(CONNECTED) 24] delete -v 1 /wfj 
version No is not valid : /wfj
[zk: localhost:2181(CONNECTED) 25] delete -v 0 /wfj

四、查看節點

查看節點列表有 ls 和 ls2 兩個命令,后者時前者的增強。不近可以查看指定路徑下的所有節點,還可以查看當前節點的信息,zookeeper最新版本已經取消了對 ls2 命令的支持,提供了-s參數來取代ls2。-R參數遞歸顯示子節點,-w參數為節點設置監視,此處我們只演示ls命令。

[zk: localhost:2181(CONNECTED) 33] ls /wfj 
[node1]
[zk: localhost:2181(CONNECTED) 34] ls -R /wfj 
/wfj
/wfj/node1
[zk: localhost:2181(CONNECTED) 35] ls -s /wfj 
[node1]
cZxid = 0x69
ctime = Mon May 17 10:55:29 UTC 2021
mZxid = 0x69
mtime = Mon May 17 10:55:29 UTC 2021
pZxid = 0x6a
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 1
[zk: localhost:2181(CONNECTED) 36] ls -w /wfj 
[node1]

 通過get查看節點數據,通過stat查看節點屬性。在舊版本中,通過get命令即可以同時獲取到節點屬性和節點數據。新版本也可以通過 -s 參數同時獲取節點屬性和數據,-w參數為在數據更改上做監視。

[zk: localhost:2181(CONNECTED) 38] get /wfj
123
[zk: localhost:2181(CONNECTED) 39] stat /wfj
cZxid = 0x69
ctime = Mon May 17 10:55:29 UTC 2021
mZxid = 0x69
mtime = Mon May 17 10:55:29 UTC 2021
pZxid = 0x6a
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 1

五、監聽器

zookeeper的具有監聽機制,注冊事件監聽器可以在節點發生變化的時候向客戶端發起通知。需要注意的是zookeeper的觸發器是一次性的,即觸發一次后立即失效。

5.1、監聽器get -w path

使用get -w path注冊的監聽器能夠在節點內容發生改變的時候,向客戶端發起通知。在舊版本的zookeeper中,注冊監聽器的方式為 get path [watch]。在注冊監聽之后,在另一個會話set修改節點數據,可以看到客戶端收到了server發來的節點變更消息

[zk: localhost:2181(CONNECTED) 45] get -w /wfj
123
[zk: localhost:2181(CONNECTED) 46] 
WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/wfj

5.2、監聽器stat -w path

使用stat -w path注冊的監聽器能夠在節點狀態發送改變的時候,向客戶端發起通知。在舊版本的zookeeper中,注冊監聽器的方式為 stat path [watch]。在注冊監聽之后,在另一個會話set修改節點數據,可以看到客戶端收到了server發來的節點變更消息

[zk: localhost:2181(CONNECTED) 47] stat -w /wfj
cZxid = 0x69
ctime = Mon May 17 10:55:29 UTC 2021
mZxid = 0x6c
mtime = Mon May 17 12:02:27 UTC 2021
pZxid = 0x6a
cversion = 1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 1
[zk: localhost:2181(CONNECTED) 48] 
WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/wfj

5.3、監聽器ls -w path

使用ls -w path注冊的監聽器能夠監聽該節點下所有子節點的增加和刪除操作。在舊版本的zookeeper中,注冊監聽器的方式為 ls/ls2 path [watch]。在注冊監聽之后,在另一個會話刪除子節點,可以看到客戶端收到了server發來的節點變更消息 

[zk: localhost:2181(CONNECTED) 49] ls -w /wfj
[node1]
[zk: localhost:2181(CONNECTED) 50] 
WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/wfj

zookeeper常用的客戶端命令基本就這些,同時還存在這許多其他命令,但是日常會很少用到。可以登錄zookeeper客戶端之后,執行help來查看。


免責聲明!

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



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