1. 程式人生 > >分散式鎖的三種解決方案

分散式鎖的三種解決方案

lock必須手動釋放。

多個JVM在單JVM上是沒法解決的。

分散式鎖:

1.基於資料庫的解決方法。Innodb支援行鎖

實現:

 

測試:

 每隔10s看資料庫,效率不高。無法優雅的實現的阻塞鎖。

因為要經常訪問資料庫,效能差

2.基於Redis的鎖

3.基於Zookeeper的分散式的鎖

在市面上,大部分是使用ZooKeeper實現分散式鎖。效能好,無死鎖

 zookeeper的資料結構。節點特性以及watcher機制。

每個節點都有值。

實現:

 建立一個持久節點

 

建立一個臨時節點

 

建立臨時節點

 

建立的是永續性鎖。

 右邊的嘗試用zk建立鎖,建立成功,就獲得鎖。

 

出現的問題,大家都去搶鎖

第二種實現方式: