zookeeper 有四種節點型別:
利用 zookeeper 支援臨時順序節點的特性,可以實現分布式鎖。
當客戶端對某個方法加鎖時,在 zookeeper 中該方法對應的指定節點目錄下,生成乙個唯一的臨時有序節點。
判斷是否獲取鎖,只需要判斷持有的節點是否是有序節點中序號最小的乙個,當釋放鎖的時候,將這個臨時節點刪除即可,這種方式可以避免服務宕機導致的鎖無法釋放而產生的死鎖問題。
zookeeper 分布式鎖流程:
客戶端連線 zookeeper,並在根節點 /lock 下建立臨時有序子節點,第乙個客戶端對應的子節點為 /lock/lock01/00000001,第二個為 /lock/lock01/00000002;
其他客戶端獲取 /lock01 下的子節點列表,判斷自己建立的子節點是否為當前列表中序號最小的子節點;
如果是則認為獲得鎖,執行業務**,否則通過 watch 事件監聽 /lock01 的子節點變更訊息,獲得變更通知後重複此步驟直至獲得鎖;
完成業務流程後,刪除對應的子節點,釋放分布式鎖。
在實際開發中,可以應用 apache curator 來快速實現分布式鎖,curator 對 zookeeper 原生 api 做了抽象和封裝。
分布式鎖redis和zookeeper實現區別
一.分布式鎖解決方案 1.採用資料庫 不建議 效能不好 jdbc 2.基於redis實現分布式鎖 setnx setnx也可以存入key,如果存入key成功返回1,如果存入的key已經存在了,返回0.3.基於zookeeper實現分布式鎖 zookeeper是乙個分布式協調工具,在分布式解決方案中。...
zookeeper分布式鎖
方案1 演算法思路 利用名稱唯一性,加鎖操作時,只需要所有客戶端一起建立 test lock節點,只有乙個建立成功,成功者獲得鎖。解鎖時,只需刪除 test lock節點,其餘客戶端再次進入競爭建立節點,直到所有客戶端都獲得鎖。特點 這種方案的正確性和可靠性是zookeeper機制保證的,實現簡單。...
zookeeper分布式鎖
zookeeper節點有4個型別 1.持久型 2.瞬時型 3.持久自動排序型 4.瞬時自動排序型 分布式鎖利用的就是zookeeper中瞬時自動排序型節點特性。一 瞬時自動排序節點 瞬時特點為,當客戶端斷開連線的時候,該節點自動消除。自動排序則為,如果節點名字重複,則自動在該節點名字後新增數字,該數...