本文為原創文章,轉載請註明出處,謝謝 分散式鎖 1、原理 建立表示鎖的父節點(圖中locker節點) 每個爭搶鎖的伺服器在locker節點下創建有序的臨時節點 判斷自己是否搶到鎖:獲取locker下所有子節點,併進行從小到大排序,判斷自己創建的臨時節點是否是最小節點。 是最小節點,說明搶到鎖,執行相 ...
本文為原創文章,轉載請註明出處,謝謝
分散式鎖
1、原理
- 建立表示鎖的父節點(圖中locker節點)
- 每個爭搶鎖的伺服器在locker節點下創建有序的臨時節點
-
判斷自己是否搶到鎖:獲取locker下所有子節點,併進行從小到大排序,判斷自己創建的臨時節點是否是最小節點。
- 是最小節點,說明搶到鎖,執行相應的操作,最後刪除自己創建的臨時節點
- 不是最小節點,則監聽比自己節點小1的(順序節點的數字-1)節點的刪除事件,出發此事件則進行新一輪的爭搶
- 是最小節點,說明搶到鎖,執行相應的操作,最後刪除自己創建的臨時節點
2、擴展
- 設置超時時間,超過此事件放棄此次爭搶時間。
- 加入對網路抖動的支持,設置支持抖動次數,次數以下在爭搶鎖時如果出現自己創建節點獲取不到,則創建節點進行爭搶
3、架構圖
- locker:爭搶時要創建的節點
- client_n:每個參與爭搶的客戶端伺服器,由這些客戶端創建locker與node節點
- node_n:客戶端伺服器創建的排隊節點
4、流程圖
5、總結
分散式鎖主要用在分散式項目中需要唯一執行的功能點,例如利用定時任務進行數據處理,多個伺服器部署項目進行集群,定時任務分佈在各個伺服器進行處理,可利用分散式鎖進行伺服器層面的分散式鎖或者更細粒度的定時任務級別的分散式鎖;分散式鎖開發的關鍵點在於創建自增序號的節點、判斷自身是否為最小的節點以及對比自己次小節點刪除事件的監控,針對網路抖動以及超時進行處理。