2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

zookeeper怎樣實現分布鎖?Zookeeper分布式鎖機制

更新時間:2023-09-25 來源:黑馬程序員 瀏覽量:

IT培訓班

zookeeper是CP架構的集群,采用 zab 一致性協議確保數據的強一致。對zookeeper中的數據進行修改,其內部會自動將所有節點數據進行修改后才提供查詢服務,不會出現redis那種異步同步導致數據丟失的問題。

zookeeper 數據是目錄樹的形式,每個目錄稱為znode,znode中可存儲數據(一般不超過 1M),還可以在其中增加子節點。

zookeeper中的節點有兩種,分別為臨時節點和永久節點。

(1)永久節點: 客戶端與zookeeper斷開連接后,該節點依舊存在。

(2)臨時節點: 客戶端與zookeeper斷開連接后,該節點會被刪除。臨時節點下不能創建子節點。

SEQUENTIAL屬性: ZooKeeper允許用戶為每個節點添加一個特殊的屬性:SEQUENTIAL,一旦節點被標記上這個屬性,那么在這個節點被創建的時候,ZooKeeper 會自動在其節點名后面追加上一個整型數字,這個整型數字是一個由父節點維護的自增數字。

Zookeeper分布式鎖機制

依賴于zk節點路徑唯一的機制來實現的(利用zk同一目錄下不能創建多個相同名稱的節點這個特性,來實現分布式鎖的功能。對于同一個路徑,只能有一個客戶端能創建成功,其它的都創建失敗)。

分布式鎖機制

簡易版zookeeper鎖

節點唯一性:對于同一個路徑,只能有一個客戶端能創建成功,其它的都創建失敗。

創建臨時節點:客戶端與zookeeper斷開連接后,該節點會被刪除,不必設置鎖超時時間。

基于臨時節點的zk鎖(請求排隊)

基于臨時節點實現,會產生驚群效應,性能稍差。

簡易版zookeeper鎖

基于臨時順序節點的zk鎖(請求排隊)

臨時順序節點的zk鎖
釋放鎖

用curator實現zk鎖

Curator是Netflix公司開源的?套zookeeper客戶端框架,封裝了大部分Zookeeper的功能,例如Leader選舉、分布式鎖等,減少了技術人員在使用Zookeeper時的底層細節開發工作。

Curator中封裝了以下幾種鎖:

InterProcessMutex:分布式可重入排它鎖
InterProcessSemaphoreMutex:分布式不可重入排它鎖
InterProcessReadWriteLock:分布式讀寫鎖
InterProcessMultiLock:多重共享鎖,將多個鎖作為單個實體管理的容器
InterProcessSemaphoreV2:共享信號量

實際開發中,可以直接使用 Curator客戶端中的各種官方實現的分布式鎖,沒必要重復造輪子。


分享到:
在線咨詢 我要報名
和我們在線交談!