Redisson 的看門狗機制(Watchdog Mechanism)是其實現可重入分布式鎖時的一個核心特性,主要用于解決業務邏輯執行時間超過鎖的過期時間(leaseTime
)而導致鎖提前釋放,進而引發數據不一致的問題。它是一個自動的鎖續期機制。
?? 核心問題:為什么需要看門狗?
- 分布式鎖的基本要求: 獲取鎖時需要設置一個過期時間(
leaseTime
)。這是為了防止持有鎖的客戶端崩潰或網絡分區后,鎖永遠無法釋放(死鎖)。 - 現實困境: 業務邏輯的執行時間往往是不可預測的。很難在獲取鎖時精確設置一個剛好覆蓋所有可能執行時間的
leaseTime
。- 如果設置得太短:業務沒執行完,鎖就過期了,其他客戶端可以獲取到鎖,導致多個客戶端同時操作臨界資源(數據不一致)。
- 如果設置得太長:萬一持有鎖的客戶端真的崩潰了,其他客戶端需要等待很長時間才能獲取鎖(系統可用性降低)。
?? 看門狗機制如何工作?
看門狗機制巧妙地解決了這個兩難問題:
-
加鎖時(默認行為):
- 當你使用