zookeeper分布式鎖的設計思路與實現

2021-10-09 15:12:57 字數 578 閱讀 4554

分布式鎖有多種實現方式,比如通過資料庫,redis都可以實現,作為分布式協同工具zookeeper也有著標準的實現方式.

設計思路:

每個客戶端往/locks下建立臨時有序節點/locks/lock_,建立成功之後/locks下面會有每個客戶端對應的節點,如/locks/lock_0000000001

客戶端取得/locks下子節點,並進行排序,判斷最前面的是否為自己,如果自己的鎖節點在第一位,代表獲取鎖成功.

如果自己的鎖節點不在第一位,則監聽自己前一位的鎖節點,例如自己鎖節點lock_000000002,那麼監聽lock_000000001

當前一位鎖節點(lock_000000001)對應的科技迪阿敏執行完畢,釋放了鎖,將會觸發監聽客戶端(lock_000000002)的邏輯

監聽客戶端重新執行第二步邏輯,判斷自己是否獲得了鎖

zookeeper的分布式唯一id以及分布式配置中心的案例github鏈結 歡迎star

**如下

package com.sofency.top;

import org.apache.zookeeper.*;

zookeeper分布式鎖

方案1 演算法思路 利用名稱唯一性,加鎖操作時,只需要所有客戶端一起建立 test lock節點,只有乙個建立成功,成功者獲得鎖。解鎖時,只需刪除 test lock節點,其餘客戶端再次進入競爭建立節點,直到所有客戶端都獲得鎖。特點 這種方案的正確性和可靠性是zookeeper機制保證的,實現簡單。...

zookeeper分布式鎖

zookeeper節點有4個型別 1.持久型 2.瞬時型 3.持久自動排序型 4.瞬時自動排序型 分布式鎖利用的就是zookeeper中瞬時自動排序型節點特性。一 瞬時自動排序節點 瞬時特點為,當客戶端斷開連線的時候,該節點自動消除。自動排序則為,如果節點名字重複,則自動在該節點名字後新增數字,該數...

zookeeper 分布式鎖

分布式鎖肯定是用在分布式環境下。在分布式環境下,使用分布式鎖的目的也是保證同一時刻只有乙個執行緒來修改共享變數,修改共享快取 前景 jdk提供的鎖只能保證執行緒間的安全性,但分布式環境下,各節點之間的執行緒同步執行卻得不到保障,分布式鎖由此誕生。實現方式有以下幾種 基於資料庫實現分布式鎖 基於快取 ...