本文通過zookeeper實作分布式鎖,一共有兩個版本,分别是curator架構實作,javaapi實作
實作原理

原理圖
實作原理其實很簡單,就是利用了zookeeper的臨時有序節點實作,其實ID最小的節點獲得鎖權限,執行完之後,删除節點,其餘各點依次擷取鎖權限,類似于隊列FIFO的操作
demo實作:
1、curator實作
CuratorClientUtils工具類
CuratorClientUtils工具類,負責建立用戶端
鎖事件監聽器1
鎖事件監聽器2
LockWatcher負責監聽事件,包括節點的新增,删除,更改
DistributeLock1屬性和構造
DistributeLock2屬性和構造
DistributeLock3屬性和構造
DistributeLock類,分布式鎖主要類,實作分布式鎖的主要邏輯
測試代碼
測試結果資料
2、javaAPI實作:
用戶端代碼
分布式鎖監聽事件
DistributeLock1
DistributeLock2
DistributeLock3
測試方法都相同,在這就不貼了,代碼隻是邏輯的一個展現,不同架構其實實作底層都差不多,隻不過封裝模式不太一樣而已。
當然實作分布式鎖還有别的方法,例如資料庫實作,redis實作,總的來說原理都差不多,各有利弊吧,多看看可以舉一反三吧