客戶端命令
Session
-
quit:直接離開客戶端(停止了客戶端程式),因此再次連接服務端需要重新運行zkCli.sh腳本,

-
close:不會直接離開客戶端,只是關閉與服務端的連接,執行該命令后Session狀態會變成CLOSED,由于沒有離開客戶端,因此還可以使用connect命令重新連接服務端,但Session和之前的Session不是同一個了,session id會發生改變了,但session timeout還是保留了之前的配置(畢竟沒有停止客戶端程式),

-
connect:該命令就是為了在沒有離開客戶端的情況下重新連接服務端,會先將當前的Session關閉再重新連接服務端,

-
history:該命令會列出在客戶端中執行過的命令,

-
redo:重新執行之前的命令,

-
version:輸出當前ZooKeeper客戶端版本資訊,

Znode
-
create:該命令用于創建Znode;-s引數表示創建順序Znode、-e引數表示創建臨時Znode(默認是創建持久Znode)、-c引數表示創建容器Znode、-t ttl引數表示創建TTL Znode、data引數表示該Znode需要存盤的資料、acl引數表示該Znode的權限設定(下面會進行介紹),

需要修改組態檔zoo.cfg:

重啟ZooKeeper服務端(./zkServer.sh restart),再使用客戶端重新連接服務端:

接下來就可以創建TTL Znode了(順序Znode會在節點名后加數字后綴,從0000000000開始,十位數字):

很顯然符合之前的描述(當該節點沒有子節點,并且超過了指定的TTL時間后就會被自動洗掉),而-t引數與-e引數不能同時使用,也就是說不能創建臨時TTL Znode(畢竟臨時Znode本來就會隨著Session的結束而被洗掉),

而-c引數只能單獨使用(沒有子節點的容器Znode并不會馬上被洗掉,洗掉時機,留到以后分析ZooKeeper原始碼時再進行介紹):

-
delete:該命令用于洗掉Znode,可以基于version洗掉Znode,如果指定的version與Znode當前的dataVersion不同,洗掉就不會成功,否則會成功洗掉該Znode(不出現其他情況),類似樂觀鎖,

不指定version,會直接洗掉該Znode,

不能洗掉有子節點的Znode,應該使用deleteall命令,

-
deleteall:可以洗掉有子節點的Znode,沒有子節點的Znode同樣可以洗掉,

-
get:獲取Znode存盤的資料,加上-s引數還可以獲取Znode的狀態資訊,加上-w引數還可以在Znode上留下一次性Watcher(觸發一次就會被移除),


-
getAllChildrenNumber:獲取Znode的所有子節點(子孫節點),

-
getEphemerals: 獲取Znode的所有臨時子節點(只能是直接臨時子節點,因為臨時節點不能有子節點),
-
ls:列出Znode下的所有直接子節點,加上-s引數還可以獲取Znode的狀態資訊,加上-w引數還可以在Znode上留下一次性Watcher(觸發一次就會被移除,同get方法),加上-R引數則是獲取Znode的所有子節點(子孫節點),

-
set:設定Znode存盤的資料,加上-s引數還可以獲取Znode的狀態資訊,并且可以基于version設定Znode存盤的資料,和delete命令規則類似,

-
stat:獲取Znode的狀態資訊,加上-w引數還可以在Znode上留下一次性Watcher(觸發一次就會被移除,同get方法),

-
sync:強制同步節點,這需要在ZooKeeper集群中使用,ZooKeeper不保證強一致性,但保證最終一致性,如果對節點資料的實時性要求很高,可以使用該命令, -
setquota:設定節點的配額,節點個數(-n,所有子節點以及自身節點)和資料位元組數(-b),quota并沒有實際的限制作用,超出了也只是列印WARN級別日志),配額一旦設定完成,只能洗掉再重新設定,setquota不能重置之前的配額,



-
listquota:列出節點的配額資訊(-1表示無限,即沒有限制),

-
delquota:洗掉節點的配額,洗掉節點時并不會自動洗掉系結在特定路徑上的quota,需要手動洗掉,
Watcher
addWatch:客戶端在節點上添加監聽,有兩種模式PERSISTENT和PERSISTENT_RECURSIVE,PERSISTENT模式只監聽指定的節點事件,而PERSISTENT_RECURSIVE模式會監聽指定節點與它所有子節點的事件,

printwatches:是否列印監聽事件(on或者off),

removewatches:洗掉客戶端對節點的監聽,在上面有使用過,想要詳細了解[-c|-d|-a]這些引數可以看一下這篇博客:ZooKeeper :Java客戶端Watcher API介紹,[-c|-d|-a]表示需要洗掉的Watcher型別,
ACL
addauth:添加認證用戶,getAcl:獲取節點的ACL,加上-s引數還可以獲取Znode的狀態資訊,setAcl:設定節點的ACL,加上-s引數還可以獲取Znode的狀態資訊,并且可以基于version設定Znode的ACL,和delete命令規則類似,加上-R引數可以將該節點和其所有子節點都設定成指定的ACL,- 授權策略(
Scheme) -digest:創建節點時不指定auth,該節點的ACL就是world:anyone:cdrwa,digest用SHA1+base64加密后的密碼,這個加密后的密碼可以用這條命令得到:echo -n kaven:kaven | openssl dgst -binary -sha1 | openssl base64(kaven:kaven表示username:password),

客戶端一:

客戶端二:

- 其他授權策略(
Scheme)類似,這里就不再贅述了,
到這里就結束了,如果博主有說錯的地方或者大家有不同的見解,歡迎大家評論補充,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423745.html
標籤:其他
上一篇:【歷史上的今天】2 月 12 日:Gedit 首次發布;波士頓計算機協會成立;計算機先驅誕生日
下一篇:Kafka匯總
