本文為博主原創,未經允許不得轉載:
目錄:
1. znode 節點特性
2. zookeeper 的四種節點類型及適用場景分析
3. zookeeper 客戶端常用操作命令
4. znode 數據增刪改查
5. 節點屬性查看
6. 節點的監聽
7. acl權限設置
1. znode 節點特性
zookeeper 中節點叫znode存儲結構上跟文件系統類似,以樹級結構進行存儲。不同之外在於znode沒有目錄的概念,不能執行類似cd之類的命令。
znode結點屬性如下:
1 path:唯一路徑
2 childNode:子節點
3 stat:狀態屬性
4 type:節點類型
2. zookeeper 的四種節點類型及適用場景分析:
類型 |
描述 |
命令 |
適用場景 |
PERSISTENT |
持久節點 |
create /test |
|
PERSISTENT_SEQUENTIAL |
持久順序節點 |
create -s /test |
適合用於分布式鎖、分布式選舉等場景 |
EPHEMERAL |
臨時節點(不可在擁有子節點) |
create -e /temp
|
適用於心跳,服務發現等場景 |
EPHEMERAL_SEQUENTIAL |
臨時順序節點(不可在擁有子節點) |
create -e -s /temp/seq
|
3. zookeeper 客戶端常用操作命令:
#創建節點 create [-s] [-e] [-c] [-t ttl] path [data] [acl] #刪除節點,(不能存在子節點) deleteall path #查看節點數據 -s 包含節點狀態 -w 添加監聽 get [-s] [-w] path #查看執行的歷史記錄 history #設置值 set [-s] [-v version] path data #為節點設置ACL權限 setAcl [-s] [-v version] [-R] path acl #查看節點狀態 -w 添加監聽 stat [-w] path
創建一個臨時順序節點,並查看:
臨時節點在會話關閉的時候即會刪除。
4. znode 數據增刪改查:
# 列出子節點 ls / #創建節點 create /test "test is good man" # 查看節點 get /test # 創建子節點 create /test/sex "man"
# 設置節點值
set /test/sex "man"
# 刪除節點 delete /test/sex # 刪除所有節點 包括子節點 deleteall /test
5. 節點屬性查看
# 查看節點屬性
stat /test
其屬性說明如下:
#創建節點的事物ID cZxid = 0x385 #創建時間 ctime = Wed Jul 21 22:37:01 CST 2021 #修改節點的事物ID mZxid = 0x385 #最后修改時間 mtime = Wed Jul 21 22:37:01 CST 2021 # 子節點變更的事物ID pZxid = 0x385 #這表示對此znode的子節點進行的更改次數(不包括子節點) cversion = 0 # 數據版本,變更次數 dataVersion = 0 #權限版本,變更次數 aclVersion = 0 #臨時節點所屬會話ID ephemeralOwner = 0x0 #數據長度 dataLength = 17 #子節點數(不包括子子節點) numChildren = 0
6. 節點的監聽:
客戶添加 -w 參數可實時監聽節點與子節點的變化,並且實時收到通知。非常適用保障分布式情況下的數據一至性。其使用方式如下:
命令 |
描述 |
ls -w path |
監聽子節點的變化(增,刪) |
get -w path |
監聽節點數據的變化 |
stat -w path |
監聽節點屬性的變化 |
printwatches on|off |
觸發監聽后,是否打印監聽事件(默認on) |
7. acl權限設置
ACL全稱為Access Control List(訪問控制列表),用於控制資源的訪問權限。ZooKeeper使用ACL來控制對其znode的防問。基於scheme:id:permission的方式
進行權限控制。scheme表示授權模式、id模式對應值、permission即具體的增刪改權限位。
scheme:認證模型
方案 |
描述 |
world |
開放模式,world表示全世界都可以訪問(這是默認設置) |
ip |
ip模式,限定客戶端IP防問 |
auth |
用戶密碼認證模式,只有在會話中添加了認證才可以防問 |
digest |
與auth類似,區別在於auth用明文密碼,而digest 用sha-1+base64加密后的密碼。在實際使用中digest 更常見。 |
permission權限位
權限位 |
權限 |
描述 |
c |
CREATE |
可以創建子節點 |
d |
DELETE |
可以刪除子節點(僅下一級節點) |
r |
READ |
可以讀取節點數據及顯示子節點列表 |
w |
WRITE |
可以設置節點數據 |
a |
ADMIN |
可以設置節點訪問控制列表權限 |
acl 相關命令:
命令 |
使用方式 |
描述 |
getAcl |
getAcl <path> |
讀取ACL權限 |
setAcl |
setAcl <path> <acl> |
設置ACL權限 |
addauth |
addauth <scheme> <auth> |
添加認證用戶 |
查看所有跟節點,並查看controller 節點的acl 權限
設置 節點 acl 權限