分佈式鎖的特徵:
- 在分佈式系統環境下,一個方法在同一時間只能被一個機器的一個線程執行
- 高可用的獲取鎖與釋放鎖
- 高性能的獲取鎖與釋放鎖
- 具備可重入特性(可理解爲重新進入,由多個任務併發使用,而不必擔心數據錯誤)
- 具備鎖失效機制,防止死鎖
- 具備非阻塞鎖特性,即沒有獲取到鎖將直接返回獲取鎖失敗
分佈式鎖的3個核心要素:
加鎖
解鎖
鎖超時:
鎖超時是什麼意思呢?
如果一個得到鎖的線程在執行任務的過程中掛掉,來不及顯式地釋放鎖,這塊資源將會永遠被鎖住(死鎖),別的線程再也別想進來。
Zookeeper實現分佈式鎖:
Zookeeper:利用 Zookeeper 的順序臨時節點,來實現分佈式鎖和等待隊列。
Zookeeper 設計的初衷,就是爲了實現分佈式鎖服務的。