「笔耕不辍」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開頭的子節點進行排序,判斷剛剛建立的子節點順序號是否是最小的節點,假如是最小節點,則獲得該鎖對資源進行訪問。
4 .假如不是該節點,就獲得該節點的上一順序節點,并給該節點是否存在注冊監聽事件。同時在這里阻塞。等待監聽事件的發生,獲得鎖控制權。
5 .當調用完共享資源后,調用unlock()方法,關閉zk,進而可以引發監聽事件,釋放該鎖。
實現的分布式鎖是嚴格的按照順序訪問的并發鎖
總結
以上是生活随笔為你收集整理的「笔耕不辍」zookeeper的节点加密方式及分布式锁实现过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode笔记 每日一题 824.
- 下一篇: matlab插图放大模糊,PPT中怎样简