文章很長,建議收藏起來,慢慢讀! 瘋狂創客圈爲小夥伴奉上如下珍貴的學習資源:html
高併發 必讀 的精彩博文 | |
---|---|
nacos 實戰(史上最全) | sentinel (史上最全+入門教程) |
Zookeeper 分佈式鎖 (圖解+秒懂+史上最全) | Webflux(史上最全) |
SpringCloud gateway (史上最全) | TCP/IP(圖解+秒懂+史上最全) |
10分鐘看懂, Java NIO 底層原理 | Feign原理 (圖解) |
更多精彩博文 ..... | 請參見【 瘋狂創客圈 高併發 總目錄 】 |
本文介紹 ZooKeeper 客戶端,包含兩種:java
斷斷續續嘗試過不一樣的 ZooKeeper GUI 客戶端,用着都不是很順手。node
閒逛 GitHub 的時候,無心中發現了 PrettyZoo 項目,一個基於 Apache Curator + JavaFX 實現的 ZooKeeper GUI 客戶端。git
簡單上手了下,好看又好用。準備推薦給 ? 芳~程序員
界面演示github
PrettyZoo 提供了操做系統 windows 和 macOS 的客戶端,可訪問 https://github.com/vran-dev/PrettyZoo/releases 地址下載。下載完成,點擊安裝便可。面試
友情提示:macOS 客戶端若是提示 「Catalina xxx.app已損壞,沒法打開,你應該將它移到廢紙簍解決方法」,胖友能夠閱讀 https://www.macwk.com/article/mac-catalina-1015-file-damage 文章解決。算法
PrettyZoo 的使用很是簡單,本小節主要提供界面的演示。sql
鏈接 ZooKeeper Server編程
搜索 ZooKeeper 節點
添加 ZooKeeper 節點
刪除 ZooKeeper 節點
目前使用的是 v0.3.1
版本,刪除暫時沒有二次確認功能,因此操做必定要當心。
想要用zkClient連接zookeeper,首先執行以下命令,鏈接到zookeeper server
./zkCli.sh -server localhost:2181
help命令用於查詢客服端所支持的所用的命令,執行help,輸入以下:
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 get path [watch] create [-s] [-e] path data acl addauth scheme auth quit getAcl path close connect host:port
鏈接zk服務端,與close命令配合使用能夠鏈接或者斷開zk服務端
connect 127.0.0.1:2181
close命令用於關閉與服務端的連接
get命令用於獲取節點的信息,注意節點的路徑必須是以/開頭的絕對路徑。如get /
cZxid = 0x0 ctime = Thu Jan 01 08:00:00 CST 1970 mZxid = 0x0 mtime = Thu Jan 01 08:00:00 CST 1970 pZxid = 0x1469 cversion = 3 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 4
其中:
cZxid:節點建立時的zxid
ctime:節點建立時間
mZxid:節點最近一次更新時的zxid
mtime:節點最近一次更新的時間
cversion:子節點數據更新次數
dataVersion:本節點數據更新次數
aclVersion:節點ACL(受權信息)的更新次數
ephemeralOwner:若是該節點爲臨時節點,ephemeralOwner值表示與該節點綁定的session id. 若是該節點不是臨時節點,ephemeralOwner值爲0
dataLength:節點數據長度,本例中爲hello world的長度
numChildren:子節點個數
stat命令用於查看節點的狀態信息,如stat /
cZxid = 0x0 ctime = Thu Jan 01 08:00:00 CST 1970 mZxid = 0x0 mtime = Thu Jan 01 08:00:00 CST 1970 pZxid = 0x1469 cversion = 3 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 4
該命令的結果參數說明同get命令
set命令用於設置節點的數據,如:
set /usergrid hellUsergrid
ls命令用於獲取路徑下的節點信息,注意路徑爲絕對路徑,如:ls /storm
[assignments, storms, errors, supervisors, workerbeats]
ls2命令是ls命令的加強版,比ls命令多輸出本節點信息,如:ls2 /storm
[assignments, storms, errors, supervisors, workerbeats] cZxid = 0x1469 ctime = Tue Nov 14 11:32:09 CST 2017 mZxid = 0x1469 mtime = Tue Nov 14 11:32:09 CST 2017 pZxid = 0x1470 cversion = 5 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 1 numChildren = 5
listquota命令用於顯示配額,如listquota /storm
absolute path is /zookeeper/quota/storm/zookeeper_limits quota for /storm does not exist.
setquota命令用於設置節點個數以及數據長度的配額,如:
`setquota –n ``4` `/zookeeper/node 設置/zookeeper/node子節點個數最大爲``4``setquota –b ``100` `/zookeeper/node 設置/zookeeper/node節點長度最大爲``100`
delquota命令用於刪除配額,-n爲子節點個數,-b爲節點數據長度,如:delquota –n 2
history用於列出最近的命令歷史,能夠和redo配合使用。如history
12 - get /usergrid 13 - help 14 - ls / 15 - ls /storm 16 - ls2 /storm 17 - help 18 - listquota /storm 19 - listquota /zookeeper 20 - help 21 - history 22 - history
redo命令用於再次執行某個命令,使用方式爲redo cmdid 如 redo 20
常與history配合使用
create命令用於建立節點,其中-s爲順序充點,-e臨時節點
create /zookeeper/node1"test_create" world:anyone:fdsfds
delete命令用於刪除節點,如delete /nodeDelete
addauth命令用於節點認證,使用方式:如addauth digest username:password
setAcl命令用於設置節點Acl
Acl由三部分構成:1爲scheme,2爲user,3爲permission,通常狀況下表示爲scheme🆔permissions
獲取節點的Acl,如getAcl /node1
scheme和id
world: 它下面只有一個id, 叫anyone, world:anyone表明任何人,zookeeper中對全部人有權限的結點就是屬於world:anyone的
auth: 它不須要id, 只要是經過authentication的user都有權限(zookeeper支持經過kerberos來進行authencation, 也支持username/password形式的authentication)
digest: 它對應的id爲username:BASE64(SHA1(password)),它須要先經過username:password形式的authentication
ip: 它對應的id爲客戶機的IP地址,設置的時候能夠設置一個ip段,好比ip:192.168.1.0/16, 表示匹配前16個bit的IP段
super: 在這種scheme狀況下,對應的id擁有超級權限,能夠作任何事情(cdrwa)
CREATE(c): 建立權限,能夠在在當前node下建立child node
DELETE(d): 刪除權限,能夠刪除當前的node
READ(r): 讀權限,能夠獲取當前node的數據,能夠list當前node全部的child nodes
WRITE(w): 寫權限,能夠向當前node寫數據
ADMIN(a): 管理權限,能夠設置當前node的permission
sync命令用於強制同步,因爲請求在半數以上的zk server上生效就表示此請求生效,那麼就會有一些zk server上的數據是舊的。sync命令就是強制同步全部的更新操做。
printWatchers命令用於設置和顯示監視狀態,值爲on或則off
退出客戶端