啟動(dòng)zookeeper并使用bin目錄下的zkCli.sh連接zookeeper服務(wù)器,輸入任何zookeeper不能識(shí)別的命令,zookeeper都會(huì)列出所有可供使用的命令:
成都創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括網(wǎng)站設(shè)計(jì)、做網(wǎng)站、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)營銷等。成都創(chuàng)新互聯(lián)公司為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,成都創(chuàng)新互聯(lián)公司核心團(tuán)隊(duì)十年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗(yàn),為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。
[zk: 127.0.0.1:2184(CONNECTED) 105] k
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
創(chuàng)建節(jié)點(diǎn):create [-s] [-e] path data acl
-s
有序節(jié)點(diǎn)
一個(gè)znode還可以設(shè)置為有序(sequential)節(jié)點(diǎn)。一個(gè)有序znode節(jié)點(diǎn)被分配唯一個(gè)單調(diào)遞增的整數(shù)。當(dāng)創(chuàng)建有序節(jié)點(diǎn)時(shí),一個(gè)序號(hào)會(huì)被追加到路徑之后。
-e
臨時(shí)節(jié)點(diǎn)
znode節(jié)點(diǎn)可以是持久(persistent)節(jié)點(diǎn),還可以是臨時(shí)(ephemeral)節(jié)點(diǎn)。持久的znode只能通過調(diào)用delete來進(jìn)行刪除。臨時(shí)的znode與之相反,當(dāng)創(chuàng)建該節(jié)點(diǎn)的客戶端崩潰或關(guān)閉了與ZooKeeper的連接時(shí),這個(gè)節(jié)點(diǎn)就會(huì)被刪除。因?yàn)榕R時(shí)的znode在其創(chuàng)建者的會(huì)話過期時(shí)被刪除,所以我們現(xiàn)在不允許臨時(shí)節(jié)點(diǎn)擁有子節(jié)點(diǎn)。
總之,znode一共有4種類型:持久的(persistent)、臨時(shí)的(ephemeral)、持久有序的(persistent_sequential)和臨時(shí)有序的(ephemeral_sequential)。
data
節(jié)點(diǎn)保存的數(shù)據(jù)
acl
權(quán)限相關(guān)內(nèi)容,暫不考慮
創(chuàng)建一個(gè)持久節(jié)點(diǎn)
[zk: 127.0.0.1:2184(CONNECTED) 7] create /test testdata
Created /test
[zk: 127.0.0.1:2184(CONNECTED) 8] ls /
[zookeeper, test]
創(chuàng)建一個(gè)臨時(shí)節(jié)點(diǎn)
[zk: 127.0.0.1:2184(CONNECTED) 9] create -e /testephemeral testdata2
Created /testephemeral
[zk: 127.0.0.1:2184(CONNECTED) 11] ls /
[zookeeper, test, testephemeral]
ctrl+c斷開與服務(wù)端連接在查看
WatchedEvent state:SyncConnected type:None path:null
[zk: 127.0.0.1:2184(CONNECTED) 0] ls /
[zookeeper, test]
臨時(shí)節(jié)點(diǎn)已經(jīng)被移除了
創(chuàng)建有序節(jié)點(diǎn)
[zk: 127.0.0.1:2184(CONNECTED) 4] create -s /testsquence testdata2
Created /testsquence0000000008
[zk: 127.0.0.1:2184(CONNECTED) 5] ls /
[testsquence0000000008, zookeeper, test]
它會(huì)自動(dòng)在我們指定的path后面追加一個(gè)序列號(hào)。
節(jié)點(diǎn)狀態(tài)stat path [watch]
watch
添加監(jiān)視器,后面再說
列出節(jié)點(diǎn)/test的狀態(tài)
[zk: 127.0.0.1:2184(CONNECTED) 10] stat /test
cZxid = 0x21
ctime = Wed May 08 05:43:54 CST 2019
mZxid = 0x21
mtime = Wed May 08 05:43:54 CST 2019
pZxid = 0x21
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0
屬性說明
狀態(tài)屬性 | 說明 |
---|---|
cZxid | 節(jié)點(diǎn)創(chuàng)建的事務(wù)zxid。每次修改ZooKeeper狀態(tài)都會(huì)收到一個(gè)zxid形式的時(shí)間戳,也就是ZooKeeper事務(wù)ID。事務(wù)ID是ZooKeeper中所有修改總的次序。每個(gè)修改都有唯一的zxid,如果zxid1小于zxid2,那么zxid1在zxid2之前發(fā)生。 |
ctime | znode的創(chuàng)建時(shí)間 |
mzxid | znode最后修改的zxid |
mtime | znode最后修改時(shí)間 |
pZxid | znode最后更新的子節(jié)點(diǎn)zxid |
cversion | znode子節(jié)點(diǎn)變化號(hào),每變化一次就自增1 |
dataversion | znode數(shù)據(jù)變化號(hào),數(shù)據(jù)每變化一次就自增1(每次更新讀取最新的值,可用于實(shí)現(xiàn)類似數(shù)據(jù)庫樂觀鎖功能) |
aclVersion | znode訪問控制列表的變化號(hào) |
ephemeralOwner | 如果是臨時(shí)節(jié)點(diǎn),這個(gè)是znode擁有者的session id。如果不是臨時(shí)節(jié)點(diǎn)則是0 |
dataLength | znode的數(shù)據(jù)長度 |
dataLength | znode子節(jié)點(diǎn)數(shù)量 |
查詢數(shù)據(jù)get path [watch]
查詢節(jié)點(diǎn)/test的數(shù)據(jù)
[zk: 127.0.0.1:2184(CONNECTED) 19] get /test
testdata
cZxid = 0x21
ctime = Wed May 08 05:43:54 CST 2019
mZxid = 0x21
mtime = Wed May 08 05:43:54 CST 2019
pZxid = 0x21
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0
嗯,就是data的值加上狀態(tài)信息。
列出節(jié)點(diǎn)
ls path [watch]
ls2 path [watch]
列出根節(jié)點(diǎn)信息
[zk: 127.0.0.1:2184(CONNECTED) 0] ls /
[testsquence0000000008, zookeeper, test]
[zk: 127.0.0.1:2184(CONNECTED) 1] ls2 /
[testsquence0000000008, zookeeper, test]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x25
cversion = 15
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 3
ls2 想當(dāng)于在ls的基礎(chǔ)上加上了當(dāng)前節(jié)點(diǎn)的狀態(tài)信息。
設(shè)置數(shù)據(jù)set path data [version]
data
要設(shè)置的數(shù)據(jù)
version
數(shù)據(jù)版本號(hào),當(dāng)指定的版本號(hào)與節(jié)點(diǎn)當(dāng)前數(shù)據(jù)版本號(hào)相同時(shí)才設(shè)置
設(shè)置節(jié)點(diǎn)/test數(shù)據(jù)為newdata
[zk: 127.0.0.1:2184(CONNECTED) 33] set /test newdata
cZxid = 0x21
ctime = Wed May 08 05:43:54 CST 2019
mZxid = 0x28
mtime = Wed May 08 06:40:59 CST 2019
pZxid = 0x21
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0
[zk: 127.0.0.1:2184(CONNECTED) 34] get /test
newdata
cZxid = 0x21
ctime = Wed May 08 05:43:54 CST 2019
mZxid = 0x28
mtime = Wed May 08 06:40:59 CST 2019
pZxid = 0x21
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0
有沒有發(fā)現(xiàn)dataVersion從0變成了1,這個(gè)就是和最后一個(gè)參數(shù)version
關(guān)聯(lián)的。
指定一個(gè)錯(cuò)誤的version更新數(shù)據(jù)
[zk: 127.0.0.1:2184(CONNECTED) 59] set /test nnn 0
version No is not valid : /test
失敗......
我們用正確的試試
[zk: 127.0.0.1:2184(CONNECTED) 61] set /test nnn 1
cZxid = 0x21
ctime = Wed May 08 05:43:54 CST 2019
mZxid = 0x2a
mtime = Wed May 08 06:46:12 CST 2019
pZxid = 0x21
cversion = 0
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
成功了,然后dataVersion又從1變成了2
刪除節(jié)點(diǎn)
delete path [version]
rmr path
version
: 版本號(hào),和set命令一樣中的意思一樣,版本相同才能刪。
delete和rmr的不同之處是在有子節(jié)點(diǎn)的情況下delete不能刪除,而rmr可以級(jí)聯(lián)刪除子節(jié)點(diǎn)。
使用delete刪除/test
[zk: 127.0.0.1:2184(CONNECTED) 73] delete /test
[zk: 127.0.0.1:2184(CONNECTED) 74] ls /
[testsquence0000000008, zookeeper]
使用delete刪除一個(gè)有子節(jié)點(diǎn)的試試
[zk: 127.0.0.1:2184(CONNECTED) 77] create /test tt
Created /test
[zk: 127.0.0.1:2184(CONNECTED) 78] create /test/child tt
Created /test/child
[zk: 127.0.0.1:2184(CONNECTED) 80] delete /test
Node not empty: /test
是的,不能刪除有子節(jié)點(diǎn)的
使用rmr刪除有子節(jié)點(diǎn)的/test試試
[zk: 127.0.0.1:2184(CONNECTED) 85] rmr /test
[zk: 127.0.0.1:2184(CONNECTED) 86] ls /
[testsquence0000000008, zookeeper]
刪除成功
watch用法
Watch機(jī)制: 一個(gè)zk的節(jié)點(diǎn)可以被監(jiān)控,包括這個(gè)目錄中存儲(chǔ)的數(shù)據(jù)的修改,子節(jié)點(diǎn)目錄的變化,一旦變化可以通知設(shè)置監(jiān)控的客戶端,這個(gè)功能是zookeeper對(duì)于應(yīng)用最重要的特性,通過這個(gè)特性可以實(shí)現(xiàn)的功能包括配置的集中管理,集群管理,分布式鎖等等。一個(gè)Watch事件是一個(gè)一次性的觸發(fā)器,當(dāng)被設(shè)置了Watch的數(shù)據(jù)發(fā)生了改變的時(shí)候,則服務(wù)器將這個(gè)改變發(fā)送給設(shè)置了Watch的客戶端。
通過ls對(duì)節(jié)點(diǎn)/test創(chuàng)建一個(gè)watch
[zk: 127.0.0.1:2184(CONNECTED) 92] ls /test mywatch
[zk: 127.0.0.1:2184(CONNECTED) 94] delete /test
WATCHER::
WatchedEvent state:SyncConnected type:NodeDeleted path:/test
當(dāng)刪除該節(jié)點(diǎn)時(shí)我們收到了通知
標(biāo)題名稱:zookeepercli常用命令解析
網(wǎng)站路徑:http://jinyejixie.com/article26/jjehcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、微信公眾號(hào)、App設(shè)計(jì)、云服務(wù)器、手機(jī)網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)