Zookeeper(2)---節點屬性、監聽和權限

以前經過客戶端鏈接以後咱們已經知道了zk相關的不少命令(Zookeeper(1)---初識)。html

節點屬性app

如今咱們就經過stat指令來看看節點都有哪些屬性,或者使用get 指令和-s參數來查看節點數據以及屬性分佈式

 

abc  節點數據post

cZxid = 0x5 建立節點的事務ID加密

ctime = Sat Oct 17 15:25:43 CST 2020   建立時間url

mZxid = 0xc 修改節點的事務ID(修改當前節點數據)spa

mtime = Wed Oct 21 22:51:14 CST 2020  最後修改時間翻譯

pZxid = 0x6 子節點變動(增長和刪除,數據修改不會影響該ID)的事務ID3d

cversion = 1 子節點進行的更改(增長和刪除,數據修改不會影響該ID次數(不包括子節點)htm

dataVersion = 1  數據版本

aclVersion = 0 權限變化版本 access control list

ephemeralOwner = 0x0  字面翻譯臨時節點擁有者,持久節點值爲0,非持久節點不爲0(會話ID

dataLength = 3  數據長度

numChildren = 1 子節點數量(不包括子子節點)

監聽:

咱們能夠經過-w參數對一些節點設置監聽,適用於分佈式保障數據一致性的場景。多個服務同時監聽一個節點,當這個節點發生對應的變化時,就會通知到監聽了該節點的全部服務。

好比以前說的配置信息發生變化,每一個服務獲取到變動信息以後進行變動,而不須要一個一個服務的去操做。

 

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

get -w 監聽節點數據的變化

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

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

 

如今咱們開啓兩個客戶端來看看上面的這些監聽操做

1.數據變化監聽 get -w

客戶端添加監聽

 

客戶端2修改數據

 

客戶端1監聽到數據變化

 

能夠看到監聽的了數據變化

若是咱們再次修改數據,會發現沒法再次監聽到變化了。由於這個監聽是一次性的,只會出發一次,若是還須要監聽須要從新設置監聽

2.節點變化(增、刪)ls -w

這個監聽能夠用於服務心跳維護或者服務註冊。監聽一個持久節點,每一個服務上線的時候在該持久節點下面,新增一個臨時(序號)節點,date能夠存放ip信息和端口。當某個服務宕機的時候,該節點的子節點變化就會被監聽到了。

客戶端1監聽

客戶端2新增節點

客戶端1監聽到節點變化

 

 

3.監聽屬性變化 stat -w

這個監聽至關於就是前面兩個監聽的彙總,數據修改,子節點變動都會涉及到屬性變化

權限設置:

Access Control List(訪問控制列表),用於控制節點的訪問操做權限

基於scheme:id:permission的方式進行權限控制。scheme表示受權模式、id模式對應值、permission即具體的增刪改權限位。

scheme:認證模型

world   開放模式, world表示全世界均可以訪問(這是默認設置)

ip        ip模式,  限定客戶端IP防問

auth     用戶密碼認證模式,只有在會話中添加了認證才能夠防問

digest    auth相似,區別在於auth用明文密碼,而digest 用sha-1+base64加密後的密碼

 

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> 添加認證用戶(addauth digest <用戶名>:<密碼>)

開放模式:只有一個值anyone, 未設置寫權限,沒法寫入數據:

Ip模式:

setAcl /apps ip:127.0.0.1:ra

setAcl /apps ip:127.0.0.1/101:ra 網段設置

digest 權限示例:

  1. setAcl <path> digest :<用戶名>:<密鑰>:<權限位>
  2. addauth digest <用戶名>:<密碼>

1:密鑰 經過sha1與base64組合加密碼生成,可經過如下命令生成

echo -n <用戶名>:<密碼> | openssl dgst -binary -sha1 | openssl base64

2:爲節點設置digest 權限後,訪問前必須執行addauth,當前會話才能夠防問。

 

ACL的特殊說明:

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

相關文章
相關標籤/搜索