zookeeper分布式鎖

2021-09-29 13:09:42 字數 531 閱讀 7075

zookeeper節點有4個型別

1.持久型

2.瞬時型

3.持久自動排序型

4.瞬時自動排序型

分布式鎖利用的就是zookeeper中瞬時自動排序型節點特性。

一、瞬時自動排序節點

瞬時特點為,當客戶端斷開連線的時候,該節點自動消除。

自動排序則為,如果節點名字重複,則自動在該節點名字後新增數字,該數字從0開始。

二、建立乙個持久型節點

建立乙個持久型節點作為父節點,作為該鎖的佇列容器。

三、建立佇列

如,現在有三颱機器,分別是n1、n2、n3,則 在建立之前直接建立瞬時自動排序節點。

存入乙個字元,代表當前操作是查詢還是其他操作。

四、獲取全部節點

獲取全部節點,進行檢視,當前建立的節點是不是第乙個,如果是則直接獲得資源。

如果不是,檢視前面節點裡是否有不是查詢操作的節點,如果沒有,直接獲得資源。

否則監聽不是查詢操作的節點,並當前進入等待,等待節點斷開連線,節點自動刪除的時候,再次從新獲得鎖。

zookeeper分布式鎖

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

zookeeper 分布式鎖

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

Zookeeper 分布式鎖

為什麼使用鎖 鎖的出現是為了解決資源爭用問題,在單程序環境下的資源爭奪可以使用jdk裡的鎖實現.為什麼使用分布式鎖?顧名思義,分布式鎖是為了分布式環境下的資源爭用問題.zookeeper是如何實現分布式鎖的?基於zookeeper的分布式鎖都是依賴於zk節點路徑唯一的機制來實現的.什麼意思呢?就是在...