https://blog.csdn.net/feixiang2039/article/details/79810102
安裝 zookeeper
brew install zookeeper
啟動/停止 zookeeper
brew services start zookeeper
brew services stop zookeeper
配置文件
配置文件位置:/usr/local/etc/zookeeper/
下面是配置文件的內(nèi)容:
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
dataDir=/usr/local/var/run/zookeeper/data
clientPort=2181
tickTime 是zookeeper中的基本時間單元抗楔,單位是毫秒辑鲤。
datadir是zookeeper持久化數(shù)據(jù)存放的目錄纹安。
clientPort是zookeeper監(jiān)聽客戶端連接的端口涮帘,默認(rèn)是2181
initLimit:follower連接和同步leader的時長召边。如果大多數(shù)follower這個時長內(nèi)同步失敗粪滤,將重新選舉一個leader代替之前的leader官套。如果經(jīng)常發(fā)生這種情況盛正,說明這個值設(shè)置的太低删咱。
syncLimit:folloer同步leader的時長。如果follower在這個時長內(nèi)同步失敗豪筝,follower將自動重啟痰滋。連接他的client將連接到其他的follower上。
zookeeper 命令
我們通過nc或者telnet命令訪問2181端口续崖,通過執(zhí)行ruok(Are you OK?)命令來檢查zookeeper是否啟動成功:
% echo ruok | nc localhost 2181
imok
那么我看見zookeeper回答我們“I’m OK”敲街。下表中是所有的zookeeper的命令,都是由4個字符組成严望。
3.5.0以上的版本會有一個內(nèi)嵌的web服務(wù)多艇,通過訪問http://localhost:8080/commands來訪問以上的命令列表。
zookeeper cli
使用 brew 安裝像吻,已經(jīng)把 zookeeper bin 目錄下的命令添加的系統(tǒng)中峻黍,因此在終端直接執(zhí)行 zkCli复隆,就創(chuàng)建了一個 zk 客戶端,連接 zk 服務(wù)姆涩。
輸入 help 命令(其實輸入任何 zkCli 不能識別的命令挽拂,都會列出所有的命令),查看可用的命令:
對 znode 進(jìn)行增刪改查
創(chuàng)建節(jié)點 create
語法
create [-s] [-e] path data acl
-s 創(chuàng)建有序節(jié)點
如果在創(chuàng)建znode時骨饿,我們使用排序標(biāo)志的話亏栈,ZooKeeper會在我們指定的znode名字后面增加一個數(shù)字。我們繼續(xù)加入相同名字的znode時宏赘,這個數(shù)字會不斷增加绒北。這個序號的計數(shù)器是由這些排序znode的父節(jié)點來維護(hù)的。
-e 創(chuàng)建臨時節(jié)點
znode有兩種類型:ephemeral和persistent察署。在創(chuàng)建znode時镇饮,我們指定znode的類型,并且在之后不會再被修改箕母。當(dāng)創(chuàng)建znode的客戶端的session結(jié)束后,ephemeral類型的znode將被刪除俱济。persistent類型的znode在創(chuàng)建以后嘶是,就與客戶端沒什么聯(lián)系了,除非主動去刪除它蛛碌,否則他會一直存在聂喇。Ephemeral znode沒有任何子節(jié)點。
acl 在下面的《 ACL 操作》中詳細(xì)介紹蔚携。
使用方法:
普通節(jié)點
[zk: localhost:2181(CONNECTED) 3] create /mynode hello
Created /mynode
[zk: localhost:2181(CONNECTED) 4] create /mynode/subnode world
Created /mynode/subnode
有序節(jié)點
[zk: localhost:2181(CONNECTED) 4] create -s /mynode hello
Created /mynode0000000004
[zk: localhost:2181(CONNECTED) 6] create -s /mynode world
Created /mynode0000000005
臨時節(jié)點
[zk: localhost:2181(CONNECTED) 7] create -e /temp hello
Created /temp
退出 zkCli希太,然后再重新打開它,/temp 節(jié)點已經(jīng)被刪除了酝蜒。
列出節(jié)點 ls
語法
ls path [watch]
ls2 path [watch]
[watch] 添加一個 watch(監(jiān)視器)誊辉,如果該節(jié)點發(fā)生變化,watch 可以使客戶端得到通知亡脑。watch 只能被觸發(fā)一次堕澄。如果要一直獲得znode的創(chuàng)建和刪除的通知,那么就需要不斷的在znode上開啟觀察模式霉咨。如果在該 path 下創(chuàng)建節(jié)點蛙紫,會產(chǎn)生 NodeChildrenChanged 事件;如果在該 path 下刪除節(jié)點途戒,會產(chǎn)生 NodeDeleted 事件坑傅。
使用 ls2 命令來查看某個目錄包含的所有文件,與 ls 不同的是它查看到time喷斋、version等信息
使用方法:
列出根節(jié)點
[zk: localhost:2181(CONNECTED) 0] ls /
[dubbo, mynode, zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls2 /
[mynode, zookeeper, dubbo]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x578
cversion = 63
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 3
列出子節(jié)點
[zk: localhost:2181(CONNECTED) 2] ls /mynode
[subnode]
使用 watch
創(chuàng)建一個名為 1 的watch唁毒,然后再根節(jié)點下添加(刪除)節(jié)點蒜茴,就會觸發(fā)該 watch。在其他節(jié)點下創(chuàng)建子節(jié)點枉证,不會觸發(fā)該 watch矮男。
[zk: localhost:2181(CONNECTED) 3] ls / 1
[dubbo, mynode, zookeeper]
[zk: localhost:2181(CONNECTED) 4] create /mynode2 hello
Created /mynode2
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/
從上面的操作可以看到,在根節(jié)點添加了 /mynode2 節(jié)點之后室谚,觸發(fā)了 watch毡鉴,WatchedEvent 的類型是 NodeChildrenChanged。
獲取節(jié)點信息 get
語法
get path [watch]
[watch] 添加一個 watch(監(jiān)視器)秒赤,如果節(jié)點內(nèi)容發(fā)生改變猪瞬,會產(chǎn)生 NodeDataChanged 事件;如果刪除節(jié)點入篮,會產(chǎn)生 NodeDeleted 事件陈瘦。
使用方法
[zk: localhost:2181(CONNECTED) 4] get /mynode
hello
cZxid = 0x4e8
ctime = Mon Apr 02 17:25:29 CST 2018
mZxid = 0x4e8
mtime = Mon Apr 02 17:25:29 CST 2018
pZxid = 0x4e8
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
每一個對znode樹的更新操作,都會被賦予一個全局唯一的ID潮售,我們稱之為zxid(ZooKeeper Transaction ID)痊项。更新操作的ID按照發(fā)生的時間順序升序排序。例如酥诽,z1大于z2鞍泉,那么z1的操作就早于z2操作。
每個 znode 的狀態(tài)信息包含以下內(nèi)容:
czxid肮帐,創(chuàng)建(create)該 znode 的 zxid
mzxid咖驮,最后一次修改(modify)該 znode 的 zxid
pzxid,最后一次修改該 znode 子節(jié)點的 zxid
ctime训枢,創(chuàng)建該 znode 的時間
mtime托修,最后一次修改該 znode 的時間
dataVersion,該節(jié)點內(nèi)容的版本恒界,每次修改內(nèi)容睦刃,版本都會增加
cversion,該節(jié)點子節(jié)點的版本
aclVersion仗处,該節(jié)點的 ACL 版本
ephemeralOwner眯勾,如果該節(jié)點是臨時節(jié)點(ephemeral node),會列出該節(jié)點所在客戶端的 session id婆誓;如果不是臨時節(jié)點吃环,該值為 0
dataLength,該節(jié)點存儲的數(shù)據(jù)長度
numChildren洋幻,該節(jié)點子節(jié)點的個數(shù)
檢查狀態(tài) stat
語法
stat path [watch]
[watch] 添加一個 watch(監(jiān)視器)郁轻,如果節(jié)點內(nèi)容發(fā)生改變,會產(chǎn)生 NodeDataChanged 事件;如果刪除節(jié)點好唯,會產(chǎn)生 NodeDeleted 事件竭沫。
與 get 的區(qū)別是,不回列出 znode 的值骑篙。
使用方法
[zk: localhost:2181(CONNECTED) 11] stat /mynode
cZxid = 0x50e
ctime = Mon Apr 02 20:12:05 CST 2018
mZxid = 0x50e
mtime = Mon Apr 02 20:12:05 CST 2018
pZxid = 0x50e
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
修改節(jié)點 set
語法
set path data [version]
修改已經(jīng)存在的節(jié)點的值
使用方法
[zk: localhost:2181(CONNECTED) 60] set /mynode newvalue
cZxid = 0x504
ctime = Mon Apr 02 18:02:56 CST 2018
mZxid = 0x505
mtime = Mon Apr 02 18:03:11 CST 2018
pZxid = 0x504
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0
可以看到蜕提,在修改節(jié)點值之后,mZxid靶端、mtime谎势、dataVersion 都發(fā)生了變化。
刪除節(jié)點 rmr
語法
rmr path
使用方法
[zk: localhost:2181(CONNECTED) 34] rmr /mynode
刪除 /mynode杨名,不會返回任何內(nèi)容脏榆。如果有子節(jié)點的時候,連帶子節(jié)點也一起刪除台谍。
刪除節(jié)點 delete
語法
delete path [version]
調(diào)用delete和set操作時须喂,如果指定znode版本號,需要與當(dāng)前的版本號匹配趁蕊。如果版本號不匹配坞生,操作將會失敗。失敗的原因可能是在我們提交之前掷伙,該znode已經(jīng)被修改過了恨胚,版本號發(fā)生了增量變化。如果不指定版本號炎咖,就是直接操作最新版本的 znode。
使用方法
[zk: localhost:2181(CONNECTED) 15] create /mynode hello
Created /mynode
[zk: localhost:2181(CONNECTED) 16] delete /mynode
如果要刪除的節(jié)點有子節(jié)點寒波,不能刪除
[zk: localhost:2181(CONNECTED) 33] create /mynode/sub sub
Created /mynode/sub
[zk: localhost:2181(CONNECTED) 34] delete /mynode
Node not empty: /mynode
其他指令
歷史記錄 history
history 列出最近的10條歷史記錄
[zk: localhost:2181(CONNECTED) 7] history
0 - history
1 - create /mynode hello
2 - ls /
3 - set /mynode worold
4 - get /mynode
5 - stat /mynode
6 - rmr /mynode
7 - history
重復(fù)之前的命令 redo
redo cmdno 根據(jù) cmdno 重復(fù)之前的命令乘盼,cmdno 就是方括號里面最后的數(shù)字,每次執(zhí)行命令都會自增俄烁。
[zk: localhost:2181(CONNECTED) 5] create /mynode hello
Created /mynode
[zk: localhost:2181(CONNECTED) 6] rmr /mynode
[zk: localhost:2181(CONNECTED) 7] redo 5
Created /mynode
是否輸出 watch 事件(printwatches)
語法
printwatches on|off
使用方法
[zk: localhost:2181(CONNECTED) 43] printwatches
printwatches is on
[zk: localhost:2181(CONNECTED) 44] ls /mynode 1
[sub]
[zk: localhost:2181(CONNECTED) 45] create /mynode/child child
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/mynode
Created /mynode/child
如果設(shè)置 printwatches off 绸栅,就看不到上面的 WATCHER 事件了。
關(guān)閉連接 close
close
[zk: localhost:2181(CONNECTED) 50] close
[zk: localhost:2181(CLOSED) 51]
[zk: localhost:2181(CLOSED) 52] ls /
Not connected
打開連接 connect
connect host:port
[zk: localhost:2181(CLOSED) 52] connect
[zk: localhost:2181(CONNECTING) 53]
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 53]
指定 host:port 可以連接遠(yuǎn)程的 zk 服務(wù)页屠。缺省的時候粹胯,會連接本地的 2181 端口。
退出連接 quit
quit
直接退出當(dāng)前的 zkCli 命令行辰企。
強(qiáng)制同步 sync
sync path
sync方法會強(qiáng)制客戶端所連接的服務(wù)器狀態(tài)與leader的狀態(tài)同步风纠,這樣在讀取 path 的值就是最新的值了。
ACL 操作
一個znode中不僅包含了存儲的數(shù)據(jù)牢贸,還有 ACL(Access Control List)竹观。znode的創(chuàng)建時,可以給它設(shè)置一個ACL(Access Control List),來決定誰可以對znode做哪些操作臭增。
ACL 具有以下特點:
ZooKeeper的權(quán)限控制是基于每個znode節(jié)點的懂酱,需要對每個節(jié)點設(shè)置權(quán)限
每個znode支持設(shè)置多種權(quán)限控制方案和多個權(quán)限
子節(jié)點不會繼承父節(jié)點的權(quán)限,客戶端無權(quán)訪問某節(jié)點誊抛,但可能可以訪問它的子節(jié)點
所以任何一個客戶端都可以通過exists 操作來獲得任何znode的狀態(tài)列牺,從而得知znode是否真的存在。
ACL Permissions
ACL 權(quán)限 ACL 簡寫 允許的操作
CREATE c 創(chuàng)建子節(jié)點
READ r 獲取節(jié)點的數(shù)據(jù)和它的子節(jié)點
WRITE w 設(shè)置節(jié)點的數(shù)據(jù)
DELETE d 刪除子節(jié)點 (僅下一級節(jié)點)
ADMIN a 設(shè)置 ACL 權(quán)限
權(quán)限相關(guān)命令
命令 語法 描述
getAcl getAcl path 讀取ACL權(quán)限
setAcl setAcl path acl 設(shè)置ACL權(quán)限
addauth addauth scheme auth 添加認(rèn)證用戶
create create [-s] [-e] path data acl 創(chuàng)建節(jié)點時指明 ACL 權(quán)限
ACL Schemes
ZooKeeper內(nèi)置了一些權(quán)限控制方案拗窃,可以用以下方案為每個節(jié)點設(shè)置權(quán)限:
方案 描述
world 只有一個用戶:anyone瞎领,代表所有人(默認(rèn))
ip 使用IP地址認(rèn)證
auth 使用已添加認(rèn)證的用戶認(rèn)證
digest 使用“用戶名:密碼”方式認(rèn)證
ACL是由鑒權(quán)方式、鑒權(quán)方式的ID和一個許可(permession)的集合組成并炮。例如默刚,我們想通過一個ip地址為10.0.0.1的客戶端訪問一個znode。那么逃魄,我們需要為znode設(shè)置一個ACL荤西,鑒權(quán)方式使用IP鑒權(quán)方式,鑒權(quán)方式的ID為10.0.0.1伍俘,只允許讀權(quán)限邪锌。那么 ACL 的格式就是:ip:10.0.0.1:w
world 方案
設(shè)置方式:setAcl <path> world:anyone:<acl>
默認(rèn)情況下時 world 方法,任何人有所有權(quán)限:
[zk: localhost:2181(CONNECTED) 6] getAcl /mynode
'world,'anyone
: cdrwa
[zk: localhost:2181(CONNECTED) 7] setAcl /mynode world:anyone:cdr
cZxid = 0x54a
ctime = Tue Apr 03 09:26:36 CST 2018
mZxid = 0x54a
mtime = Tue Apr 03 09:26:36 CST 2018
pZxid = 0x54a
cversion = 0
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
[zk: localhost:2181(CONNECTED) 15] set /mynode hello
Authentication is not valid : /mynode
可以看出癌瘾,在修改權(quán)限為 cdr 之后觅丰,不能再設(shè)置節(jié)點數(shù)據(jù)了。注意 aclVersion 也發(fā)生了變化妨退。
IP 方案
設(shè)置方式:setAcl <path> ip:<ip>:<acl>
<ip>:可以是具體IP也可以是IP/bit格式妇萄,即IP轉(zhuǎn)換為二進(jìn)制,匹配前bit位咬荷,如192.168.0.0/16匹配192.168.*.*
[zk: localhost:2181(CONNECTED) 19] create /mynode hello
Created /mynode
[zk: localhost:2181(CONNECTED) 20] setAcl /mynode ip:192.168.1.250:cdrwa
cZxid = 0x552
ctime = Tue Apr 03 09:38:58 CST 2018
mZxid = 0x552
mtime = Tue Apr 03 09:38:58 CST 2018
pZxid = 0x552
cversion = 0
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
[zk: localhost:2181(CONNECTED) 21] getAcl /mynode
'ip,'192.168.1.250
: cdrwa
使用其他電腦方法方法該節(jié)點:
#使用IP非 192.168.100.1 的機(jī)器
[zk: localhost:2181(CONNECTED) 0] get /node2
Authentication is not valid : /node2 #沒有權(quán)限
[zk: localhost:2181(CONNECTED) 1] delete /node2 #刪除成功(因為設(shè)置DELETE權(quán)限僅對下一級子節(jié)點有效冠句,并不包含此節(jié)點)
auth 方案
設(shè)置方式
addauth digest <user>:<password> #添加認(rèn)證用戶
setAcl <path> auth:<user>:<acl>
示例:
[zk: localhost:2181(CONNECTED) 22] create /mynode1 hello
Created /mynode1
[zk: localhost:2181(CONNECTED) 23] addauth digest admin:admin #添加認(rèn)證用戶
[zk: localhost:2181(CONNECTED) 24] setAcl /mynode1 auth:admin:cdrwa
cZxid = 0x554
ctime = Tue Apr 03 09:44:32 CST 2018
mZxid = 0x554
mtime = Tue Apr 03 09:44:32 CST 2018
pZxid = 0x554
cversion = 0
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
[zk: localhost:2181(CONNECTED) 25] getAcl /mynode1
'digest,'admin:x1nq8J5GOJVPY6zgzhtTtA9izLc=
: cdrwa
[zk: localhost:2181(CONNECTED) 26] get /mynode1
hello #剛才已經(jīng)添加認(rèn)證用戶,可以直接讀取數(shù)據(jù)幸乒,斷開會話重連需要重新addauth添加認(rèn)證用戶
cZxid = 0x554
ctime = Tue Apr 03 09:44:32 CST 2018
mZxid = 0x554
mtime = Tue Apr 03 09:44:32 CST 2018
pZxid = 0x554
cversion = 0
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
digest 方案
設(shè)置方式
setAcl <path> digest:<user>:<password>:<acl>
這里的密碼是經(jīng)過SHA1及BASE64處理的密文懦底,在SHELL中可以通過以下命令計算:
echo -n <user>:<password> | openssl dgst -binary -sha1 | openssl base64
先來算一個密文密碼:
echo -n admin:admin | openssl dgst -binary -sha1 | openssl base64
x1nq8J5GOJVPY6zgzhtTtA9izLc=
示例:
[zk: localhost:2181(CONNECTED) 8] create /mynode2 hello
Created /mynode2
#使用是上面算好的密文密碼添加權(quán)限:
[zk: localhost:2181(CONNECTED) 9] setAcl /mynode2
digest:admin:x1nq8J5GOJVPY6zgzhtTtA9izLc=:cdrwa
cZxid = 0x55a
ctime = Tue Apr 03 13:17:12 CST 2018
mZxid = 0x55a
mtime = Tue Apr 03 13:17:12 CST 2018
pZxid = 0x55a
cversion = 0
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
[zk: localhost:2181(CONNECTED) 10] getAcl /mynode2
'digest,'admin:x1nq8J5GOJVPY6zgzhtTtA9izLc=
: cdrwa
[zk: localhost:2181(CONNECTED) 11] get /mynode2
#沒有權(quán)限
Authentication is not valid : /mynode2
[zk: localhost:2181(CONNECTED) 12] addauth digest admin:admin #添加認(rèn)證用戶
[zk: localhost:2181(CONNECTED) 13] get /mynode2
hello? #成功讀取數(shù)據(jù)
cZxid = 0x55a
ctime = Tue Apr 03 13:17:12 CST 2018
mZxid = 0x55a
mtime = Tue Apr 03 13:17:12 CST 2018
pZxid = 0x55a
cversion = 0
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
創(chuàng)建節(jié)點時指定 ACL
#添加 admin 用戶
[zk: localhost:2181(CONNECTED) 2] addauth digest admin:admin
#創(chuàng)建節(jié)點時賦予權(quán)限
[zk: localhost:2181(CONNECTED) 3] create /mynode hello auth:admin:cdrwa
Created /mynode
[zk: localhost:2181(CONNECTED) 4] getAcl /mynode
'digest,'admin:x1nq8J5GOJVPY6zgzhtTtA9izLc=
: cdrwa
[zk: localhost:2181(CONNECTED) 5] close
[zk: localhost:2181(CLOSED) 6] connect
[zk: localhost:2181(CONNECTING) 7]
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
#斷開會話重連需要重新addauth添加認(rèn)證用戶
[zk: localhost:2181(CONNECTED) 7] get /mynode
Authentication is not valid : /mynode
[zk: localhost:2181(CONNECTED) 8] addauth digest admin:admin
[zk: localhost:2181(CONNECTED) 9] get /mynode
hello
cZxid = 0x56c
ctime = Tue Apr 03 15:00:27 CST 2018
mZxid = 0x56c
mtime = Tue Apr 03 15:00:27 CST 2018
pZxid = 0x56c
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
注意了!使用 rmr 刪除節(jié)點沒有權(quán)限時罕扎,竟然可以使用 delete
[zk: localhost:2181(CONNECTED) 25] rmr /mynode
Authentication is not valid : /mynode
[zk: localhost:2181(CONNECTED) 26] delete /mynode
zookeeper quota
zookeeper quota 機(jī)制支持節(jié)點個數(shù)(namespace)和空間大芯厶啤(bytes)的設(shè)置。
zookeeper quota 保存在 /zookeeper/quota 節(jié)點下腔召,可以設(shè)置該節(jié)點的 ACL 權(quán)限杆查,以防其他人修改。
語法:
listquota path
setquota -n|-b val path
delquota [-n|-b] path
使用方法:
# 目前還沒有任何設(shè)置
[zk: localhost:2181(CONNECTED) 9] ls /zookeeper/quota
[]
# 還沒有為 /mynode 設(shè)置 quota
[zk: localhost:2181(CONNECTED) 10] listquota /mynode
absolute path is /zookeeper/quota/mynode/zookeeper_limits
quota for /mynode does not exist.
# -n表示設(shè)置znode count限制臀蛛,這里表示/mynode這個path下的znode count個數(shù)限制為3(包括/mynode本身)
[zk: localhost:2181(CONNECTED) 11] setquota -n 3 /mynode
Comment: the parts are option -n val 3 path /mynode
[zk: localhost:2181(CONNECTED) 12] create /mynode/sub1 hello
Created /mynode/sub1
[zk: localhost:2181(CONNECTED) 9] listquota /mynode
absolute path is /zookeeper/quota/mynode/zookeeper_limits
Output quota for /mynode count=3,bytes=-1
Output stat for /mynode count=2,bytes=6
注意根灯,即使節(jié)點數(shù)超出了限制,也不會看到提示信息,zookeeper 只會在日志中提醒一下烙肺。
使用 listquota 列出了節(jié)點的設(shè)置的 quota纳猪,和節(jié)點實際的容量。
[zk: localhost:2181(CONNECTED) 20] delquota -n /mynode
[zk: localhost:2181(CONNECTED) 21] listquota /mynode
absolute path is /zookeeper/quota/mynode/zookeeper_limits
Output quota for /mynode count=-1,bytes=-1
Output stat for /mynode count=2,bytes=6
刪除 quota 之后桃笙,count 也變成了 -1
至此氏堤,Zookeeper客戶端所有的命令介紹完畢!
參考:
https://zookeeper.apache.org/doc/r3.4.11/zookeeperProgrammers.html
http://www.yoonper.com/post.php?id=47
http://holynull.leanote.com/post/Zookeeper
https://zookeeper.apache.org/doc/r3.1.2/zookeeperQuotas.html