zookeeper初識

一、節點類型

persistent 持久節點

persistent_sequential 持久序號節點

ephemeral 臨時節點

ephemeral_sequential 臨時序號節點

 

1.persistent 持久節點

默認創建的節點

創建方式

 

create /newNode

 

2.persistent_sequential 持久序號節點

給創建的持久節點後面加上序號後綴。 非常適用於分佈式鎖、分佈式選舉等場景

創建的時候添加-s參數即可

 

create -s /test

#返回創建的實際路徑

created /test0000000001

 

create -s /test

#返回創建的實際路徑2

created /test0000000002

 

3.ephemeral 臨時節點

臨時節點會在客戶端會話斷開後自動刪除。適用於心跳,服務發現等場景

創建的時候加上參數 -e 即可

 

create -e /temp

 

4.ephemeral_sequential 臨時序號節點

與持久序號節點類似,不同之處是臨時序號節點會在會話斷開後刪除。

創建的時候加上參數 -e -s 即可

 

create -e -s /tempNum

 

 

二、節點屬性

 

節點屬性的查看方式 stat /nodePath

 

節點屬性說明

===============================================================

cZxid 創建節點的事務ID

ctime 創建時間

mZxid 修改節點的事務ID

mtime 最後修改時間

pZxid 子節點變更事務ID

cversion 對此znode的子節點進行的更改次數(不包括子節點)

dataVersion 數據版本,變更次數

aclVersion 權限版本,變更次數

ephemeralOwner 臨時節點所屬會話ID

dataLength 數據長度

numChildren 子節點數

===============================================================

 

 

三、節點的監聽

客戶添加 -w 參數可以實時監聽節點和子節點的變化,並且實時收到通知。非常適用於保障分佈式情況下的數據一致性。

===============================================================

ls -w path 監聽子節點的變化(增、刪)

===============================================================

get -w path 接聽節點數據的變化

===============================================================

stat -w path 監聽節點屬性的變化

===============================================================

printwatches on|off 觸發監聽後,是否打印監聽事件(默認on)

===============================================================

 

四、acl權限設置

ACL全稱 access control list(訪問控制列表) 用於控制資源的訪問權限

zk使用ACL來控制對其znode的訪問

基於scheme:id:permission的方式進行權限控制

scheme: 表示授權模式

id: 模式對應值

permission: 具體的正刪改權限位

 

scheme

================================================================

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 添加認證用戶

================================================================

 

world權限示例

setAcl path world:anyone:權限位

 

[zk: localhost:2181(CONNECTED) 17] create -e /testAcl

Created /testAcl

[zk: localhost:2181(CONNECTED) 18] getAcl /testAcl

'world,'anyone

: cdrwa

[zk: localhost:2181(CONNECTED) 19] setAcl /testAcl world:anyone:rw

[zk: localhost:2181(CONNECTED) 20]

[zk: localhost:2181(CONNECTED) 20] get /testAcl

null

[zk: localhost:2181(CONNECTED) 21] getAcl /testAcl

'world,'anyone

: rw

[zk: localhost:2181(CONNECTED) 22] create /testAcl/sa

Authentication is not valid : /testAcl/sa

[zk: localhost:2181(CONNECTED) 23]

[zk: localhost:2181(CONNECTED) 23]

 

IP權限示例

setAcl <path> ip:<ip地址|地址段>:<權限位>

 

auth模式示例:

語法:

1.setAcl path auth:用戶名:密碼:權限位

2.addauth digest 用戶名:密碼

 

digest權限示例:

語法:

1.setAcl path digest:用戶名:密鑰:權限位

2.addauth digest 用戶名:密碼

 

ACL特殊說明:

權限僅對當前節點有效,不會讓子節點繼承。如果限制了IP訪問A節點,但是不妨礙該IP訪問A節點的子節點/A/B

 

2020 6月  ——於南京

                                                                                                                                       ——天氣很熱, 繼續努力

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章