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開頭的子節點進行排序,判斷剛剛建立的子節點順序号是否是最小的節點,假如是最小節點,則獲得該鎖對資源進行通路。