天天看點

zookeeper的節點加密方式及分布式鎖實作過程

zookeeper的節點加密用的方式

ZK的節點有5種操作權限:

CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理權限,這5種權限簡寫為crwda(即:每個單詞的首字元縮寫)

注:這5種權限中,delete是指對子節點的删除權限,其它4種權限指對自身節點的操作權限

身份的認證有4種方式:

world:預設方式,相當于全世界都能通路

auth:代表已經認證通過的使用者(cli中可以通過addauth digest user:pwd 來添加目前上下文中的授權使用者)

digest:即使用者名:密碼這種方式認證,這也是業務系統中最常用的

ip:使用Ip位址認證

設定通路控制:

方式一:(推薦)

1)增加一個認證使用者

addauth digest 使用者名:密碼明文

eg. addauth digest user1:password1

2)設定權限

setAcl /path auth:使用者名:密碼明文:權限

eg. setAcl /test auth:user1:password1:cdrwa

3)檢視Acl設定

getAcl /path

方式二:

setAcl /path digest:使用者名:密碼密文:權限

注:這裡的加密規則是SHA1加密,然後base64編碼。

分布式鎖的實作過程

當很多程序需要通路共享資源時,我們可以通過zk來實作分布式鎖。主要步驟是:

1 .建立一個節點,假如名為:lock 。節點類型為持久節點(PERSISTENT)

2 .每當程序需要通路共享資源時,會調用分布式鎖的lock()或tryLock()方法獲得鎖,這個時候會在第一步建立的lock節點下建立相應的順序子節點,節點類型為臨時順序節點(EPHEMERAL_SEQUENTIAL),通過組成特定的名字name+lock+順序号。

3 .在建立子節點後,對lock下面的所有以name開頭的子節點進行排序,判斷剛剛建立的子節點順序号是否是最小的節點,假如是最小節點,則獲得該鎖對資源進行通路。

繼續閱讀