1.基於數據庫實現分布式鎖:主要是利用數據庫的唯壹索引來實現,具有天然的排他性,正好滿足了我們對鎖的要求:同壹時間只能有壹個競爭對手獲得鎖。
2.基於緩存實現分布式鎖:理論上,利用緩存實現分布式鎖效率最高,鎖速度最快。壹般使用Redis的命令SETNXkeyvalue來實現分布式鎖。
3.基於Zookeeper:Zookeeper壹般作為配置中心,其實現分布式鎖的原理類似於Redis。我們在Zookeeper中創建瞬時節點,利用節點不能重復創建的特性來保證排他性。
分布式鎖應具備的條件
1.在分布式系統環境中,壹個方法在同壹時間只能由壹個機器線程執行。
2.高可用性鎖獲取和釋放。
3.高性能鎖獲取和釋放。
4.它具有可重入的特性。
5.有壹個鎖失效機制來防止死鎖。
6.它具有非阻塞鎖的特性,即獲取鎖失敗將直接返回。