三種分佈式鎖的實現方式對比

基於數據庫實現

加鎖,或類似redis記錄數據。性能不好不用!

基於Redis實現

這是比較常用的一種實現方式。
通過setnx可以存入key,如果存入key成功返回1,如果存入的key已經存在了,返回0.如此可以判斷key存在說明已經有節點調用,不存在說明沒有節點調用。

基於ZooKeeper的實現

多個客戶端(jvm),同時在zk上創建相同的一個臨時節點,因爲臨時節點路徑是保證唯一,只要誰能夠創建節點成功,誰就能夠獲取到鎖,沒有創建成功節點,就會進行等待,當釋放鎖的時候,採用事件通知給客戶端重新獲取鎖的資源。

對比

Zookeeper實現簡單,但效率較低;Redis實現複雜,但效率較高。
綜合對比我還是更喜歡使用redis實現分佈式鎖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章