zookeeper 客戶端 zkCli 命令詳解

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搏明,一起剝皮案震驚了整個濱河市鼠锈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌星著,老刑警劉巖购笆,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異虚循,居然都是意外死亡同欠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門横缔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铺遂,“玉大人,你說我怎么就攤上這事茎刚〗笕瘢” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵膛锭,是天一觀的道長粮坞。 經(jīng)常有香客問我,道長初狰,這世上最難降的妖魔是什么捞蚂? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮跷究,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘敲霍。我一直安慰自己俊马,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布鱼喉。 她就那樣靜靜地躺著梆掸,像睡著了一般靡砌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上艘儒,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼界睁。 笑死觉增,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的翻斟。 我是一名探鬼主播逾礁,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼访惜!你這毒婦竟也來了嘹履?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤债热,失蹤者是張志新(化名)和其女友劉穎砾嫉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窒篱,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡焕刮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了舌剂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片济锄。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖霍转,靈堂內(nèi)的尸體忽然破棺而出荐绝,到底是詐尸還是另有隱情,我是刑警寧澤避消,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布低滩,位于F島的核電站,受9級特大地震影響岩喷,放射性物質(zhì)發(fā)生泄漏恕沫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一纱意、第九天 我趴在偏房一處隱蔽的房頂上張望婶溯。 院中可真熱鬧,春花似錦偷霉、人聲如沸迄委。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叙身。三九已至,卻和暖如春硫狞,著一層夾襖步出監(jiān)牢的瞬間信轿,已是汗流浹背晃痴。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留财忽,地道東北人倘核。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像定罢,于是被迫代替她去往敵國和親笤虫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容