上一篇文章,博主介紹了zookeeper集羣的搭建全過程;今天博主將爲你們分享的是zookeeper的命令行客戶端使用、zookeeper的數據結構和監聽功能。node
zookeeper啓動與關閉服務的命令:windows
./bin/zkServer.sh start 開啓zookeeper ./bin/zkServer.sh stop 中止zookeeper
1、zookeeper數據結構服務器
zookeeper特性:session
1)、Zookeeper:一個leader,多個follower組成的集羣
2)、全局數據一致:每一個server保存一份相同的數據副本,client不管鏈接到哪一個server,數據都是一致的
3)、分佈式讀寫,更新請求轉發,由leader實施
4)、更新請求順序進行,來自同一個client的更新請求按其發送順序依次執行
5)、數據更新原子性,一次數據更新要麼成功,要麼失敗
6)、實時性,在必定時間範圍內,client能讀到最新數據數據結構
zookeeper數據結構:app
1)、層次化的目錄結構,命名符合常規文件系統規範(見下圖)
2)、每一個節點在zookeeper中叫作znode,而且其有一個惟一的路徑標識
3)、節點Znode能夠包含數據和子節點(EPHEMERAL短暫類型的節點不能有子節點)
4)、客戶端應用能夠在節點上設置監視器 分佈式
數據結構的圖:工具
節點類型ui
1)、Znode有兩種類型:
短暫(ephemeral)(斷開鏈接本身刪除)
持久(persistent)(斷開鏈接不刪除)
2)、Znode有四種形式的目錄節點(默認是persistent )
PERSISTENT -----永久節點
PERSISTENT_SEQUENTIAL(持久序列/test0000000019 ) ------永久序號節點
EPHEMERAL -----臨時節點(短暫節點)
EPHEMERAL_SEQUENTIAL ------短暫序號節點
3)、建立znode時設置順序標識,znode名稱後會附加一個值,順序號是一個單調遞增的計數器,由父節點維護
4)、在分佈式系統中,順序號能夠被用於爲全部的事件進行全局排序,這樣客戶端能夠經過順序號推斷事件的順序命令行
2、zookeeper命令行客戶端初識
zookeeper的客戶端和其它可執行命令都在其bin目錄中,分別是zkCli.sh和zkCli.cmd,前者是Linux中使用的客戶端啓動腳本,後者是windows系統中的客戶端啓動腳本。
1)、運行 zkCli.sh –server <ip>進入命令行工具:./zkCli.sh -server 192.168.29.135
cd /opt/apps/zookeeper-3.4.13/bin ./zkCli.sh -server 192.168.29.135 若是不指定-server參數,鏈接的是本機ip
2)、命令行客戶端鏈接上zookeeper後,輸入help可查看zookeeper命令幫助
3)、客戶端命令例子
一、使用 ls 命令來查看當前 ZooKeeper 中所包含的內容: [zk: 192.168.29.135(CONNECTED) 1] ls / 二、建立一個新的 znode ,使用 create /zk myData 。這個命令建立了一個新的 znode 節點「 zk 」以及與它關聯的字符串,默認爲建立永久節點: [zk: 192.168.29.135(CONNECTED) 2] create /zk "myData「 三、咱們運行 get 命令來確認 znode 是否包含咱們所建立的字符串: [zk: 192.168.29.135(CONNECTED) 3] get /zk //數據描述信息 "" cZxid=0x30000004建立事務id ctime=Tue apr 05 02:35:02 CST 2016 mZxid=0x30000004修改事務id mtime=Tue apr 05 02:35:02 CST 2016 cversion=1建立版本號, dataversion=1 數據版本號 aclversion=0 權限版本號 ephemeralOwner dataLength=5數據長度 numChildren=1子節點數 #監聽這個節點的變化,當另一個客戶端改變/zk時,它會打出下面的 #WATCHER:: #WatchedEvent state:SyncConnected type:NodeDataChanged path:/zk [zk: 192.168.29.135(CONNECTED) 4] get /zk watch 四、下面咱們經過 set 命令來對 zk 所關聯的字符串進行設置: [zk: 192.168.29.135(CONNECTED) 5] set /zk "zsl「 五、下面咱們將剛纔建立的 znode 刪除,只能刪除葉子節點: [zk: 192.168.29.135(CONNECTED) 6] delete /zk 六、刪除節點,可刪除非葉子節點及其下的子節點的全部數據:rmr [zk: 192.168.29.135(CONNECTED) 7] rmr /zk 七、建立短暫節點(客戶端退出後自動刪除) [zk: 192.168.29.135(CONNECTED) 8] create -e /aap2 「bbb」 八、帶序號的短暫節點,zookeeper在建立帶序號的節點時,若是歷來沒建立過,序號衝0開始,反之從1開始 [zk: 192.168.29.135(CONNECTED) 9] create -s -e /aap2 「bbb」 九、設置值 [zk: 192.168.29.135(CONNECTED) 10] set /app1 bbbb 十、拿數據而且註冊監聽本節點數據的變化(監聽只生效一次) [zk: 192.168.29.135(CONNECTED) 11] get /app1 watch 十一、獲取子節點變化的監聽 [zk: 192.168.29.135(CONNECTED) 12] ls /app1 watch 十二、quit退出zookeeper客戶端 [zk: 192.168.29.135(CONNECTED) 12] quit
3、zookeeper命令行客戶端命令詳解
1)、connect命令,鏈接zk服務端,(與close命令配合使用能夠鏈接或者斷開zk服務端),可用於更換鏈接的zookeeper服務器:
2)、close命令,用於關閉與服務端的連接
3)、get命令,用於獲取節點的信息,注意節點的路徑必須是以/開頭的絕對路徑。如get /
數據詳細信息說明: cZxid:節點建立時的zxid ctime:節點建立時間 mZxid:節點最近一次更新時的zxid mtime:節點最近一次更新的時間 cversion:子節點數據更新次數 dataVersion:本節點數據更新次數 aclVersion:節點ACL(受權信息)的更新次數 ephemeralOwner:若是該節點爲臨時節點,ephemeralOwner值表示與該節點綁定的session id. 若是該節點不是臨時節點,ephemeralOwner值爲0 dataLength:節點數據長度,本例中爲根節點/的長度 numChildren:子節點個數
4)、stat命令,用於查看節點的狀態信息,如stat /;該命令的結果參數說明同get命令
5)、set命令,用於設置節點的數據,如:set /userid2 32222
6)、ls命令是用於獲取路徑下的節點信息,注意路徑爲絕對路徑,如:ls2 /userid2
7)、ls2命令是ls命令的加強版,比ls命令多輸出本節點信息,如:ls2 /userid2
8)、listquota命令用於顯示配額,如listquota /userid3
9)、setquota命令用於設置節點個數以及數據長度的配額,如:
setquota –n 4 /userid3 設置/userid3子節點個數最大爲4 setquota –b 100 /userid3 設置/userid3節點長度最大爲100
10)、delquota命令用於刪除配額,-n爲子節點個數,-b爲節點數據長度,如:delquota –n 2
11)、history用於列出最近的命令歷史,能夠和redo配合使用。如history
12)、redo命令用於再次執行某個命令,使用方式爲redo cmdid 如 redo 20,常與history配合使用
13)、create命令用於建立節點,其中-s爲順序充點,-e臨時節點
14)、delete命令用於刪除節點,如delete /userid3
15)、addauth命令用於節點認證,使用方式:如addauth digest username:password
16)、setAcl命令用於設置節點Acl
Acl由三部分構成:1爲scheme,2爲user,3爲permission,通常狀況下表示爲scheme:id:permissions
17)、getAcl命令獲取節點的Acl,如getAcl /node1
18)、sync命令用於強制同步,因爲請求在半數以上的zk server上生效就表示此請求生效,那麼就會有一些zk server上的數據是舊的。sync命令就是強制同步全部的更新操做。
19)、printWatchers命令用於設置和顯示監視狀態,值爲on或則off
20)、quit命令退出客戶端