文章很長,建議收藏起來,慢慢讀! 瘋狂創客圈為小伙伴奉上以下珍貴的學習資源:
- 瘋狂創客圈 經典圖書 : 《Netty Zookeeper Redis 高並發實戰》 面試必備 + 大廠必備 + 漲薪必備
- 瘋狂創客圈 經典圖書 : 《SpringCloud、Nginx高並發核心編程》 面試必備 + 大廠必備 + 漲薪必備
- 資源寶庫: Java程序員必備 網盤資源大集合 價值>1000元 隨便取 GO->【博客園總入口 】
- 獨孤九劍:Netty靈魂實驗 : 本地 100W連接 高並發實驗,瞬間提升Java內力
- 技術、面試交流:和大廠 小伙伴、技術高手、架構師 進行 純粹的的技術問題交流、探討求助、問題圍觀學習
推薦: 瘋狂創客圈 高質量 博文
高並發 必讀 的精彩博文 | |
---|---|
nacos 實戰(史上最全) | sentinel (史上最全+入門教程) |
Zookeeper 分布式鎖 (圖解+秒懂+史上最全) | Webflux(史上最全) |
SpringCloud gateway (史上最全) | TCP/IP(圖解+秒懂+史上最全) |
10分鍾看懂, Java NIO 底層原理 | Feign原理 (圖解) |
更多精彩博文 ..... | 請參見【 瘋狂創客圈 高並發 總目錄 】 |
史上最全 Java 面試題 28 專題 總目錄
前言:
本文介紹 ZooKeeper 客戶端,包含兩種:
- ZooKeeper GUI 客戶端
- zkClient 客戶端命令詳解
ZooKeeper GUI 客戶端
1. 概述
斷斷續續嘗試過不同的 ZooKeeper GUI 客戶端,用着都不是很順手。
閑逛 GitHub 的時候,無意中發現了 PrettyZoo 項目,一個基於 Apache Curator + JavaFX 實現的 ZooKeeper GUI 客戶端。
- 可同時管理多個 ZooKeeper 連接
- ZooKeeper 節點數據實時同步
- 支持 ZooKeeper 節點搜索,高亮
- 支持簡單的 ACL,以及 ACL 語法檢查
- 支持 SSH Tunnel
- 支持配置導入和導出
簡單上手了下,好看又好用。准備推薦給 ? 芳~
界面演示
2. 安裝 PrettyZoo
PrettyZoo 提供了操作系統 windows 和 macOS 的客戶端,可訪問 https://github.com/vran-dev/PrettyZoo/releases 地址下載。下載完成,點擊安裝即可。
友情提示:macOS 客戶端如果提示 “Catalina xxx.app已損壞,無法打開,你應該將它移到廢紙簍解決方法”,胖友可以閱讀 https://www.macwk.com/article/mac-catalina-1015-file-damage 文章解決。
3. 快速體驗PrettyZoo
PrettyZoo 的使用非常簡單,本小節主要提供界面的演示。
3.1 連接 ZooKeeper Server
連接 ZooKeeper Server
3.2 搜索 ZooKeeper 節點
搜索 ZooKeeper 節點
3.3 添加 ZooKeeper 節點
添加 ZooKeeper 節點
3.4 刪除 ZooKeeper 節點
刪除 ZooKeeper 節點
目前使用的是 v0.3.1
版本,刪除暫時沒有二次確認功能,所以操作一定要小心。
zkClient 客戶端命令詳解
想要用zkClient鏈接zookeeper,首先執行如下命令,連接到zookeeper server
./zkCli.sh -server localhost:2181
help命令
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
connect命令
連接zk服務端,與close命令配合使用可以連接或者斷開zk服務端
connect 127.0.0.1:2181
close命令
close命令用於關閉與服務端的鏈接
get命令
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命令用於查看節點的狀態信息,如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命令用於設置節點的數據,如:
set /usergrid hellUsergrid
ls命令
ls命令用於獲取路徑下的節點信息,注意路徑為絕對路徑,如:ls /storm
[assignments, storms, errors, supervisors, workerbeats]
ls2命令
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命令用於顯示配額,如listquota /storm
absolute path is /zookeeper/quota/storm/zookeeper_limits
quota for /storm does not exist.
setquota命令
setquota命令用於設置節點個數以及數據長度的配額,如:
`setquota –n ``4` `/zookeeper/node 設置/zookeeper/node子節點個數最大為``4``setquota –b ``100` `/zookeeper/node 設置/zookeeper/node節點長度最大為``100`
delquota命令
delquota命令用於刪除配額,-n為子節點個數,-b為節點數據長度,如:delquota –n 2
history命令
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命令用於再次執行某個命令,使用方式為redo cmdid 如 redo 20
常與history配合使用
create命令
create命令用於創建節點,其中-s為順序充點,-e臨時節點
create /zookeeper/node1"test_create" world:anyone:fdsfds
delete命令
delete命令用於刪除節點,如delete /nodeDelete
addauth命令
addauth命令用於節點認證,使用方式:如addauth digest username:password
setAcl命令
setAcl命令用於設置節點Acl
Acl由三部分構成:1為scheme,2為user,3為permission,一般情況下表示為scheme🆔permissions
getAcl命令
獲取節點的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)
permissions
CREATE(c): 創建權限,可以在在當前node下創建child node
DELETE(d): 刪除權限,可以刪除當前的node
READ(r): 讀權限,可以獲取當前node的數據,可以list當前node所有的child nodes
WRITE(w): 寫權限,可以向當前node寫數據
ADMIN(a): 管理權限,可以設置當前node的permission
sync命令
sync命令用於強制同步,由於請求在半數以上的zk server上生效就表示此請求生效,那么就會有一些zk server上的數據是舊的。sync命令就是強制同步所有的更新操作。
printwatchers命令
printWatchers命令用於設置和顯示監視狀態,值為on或則off
quit命令
退出客戶端