zookeeper 分布式鎖 問題描述:線程A獲取鎖成功,執(zhí)行邏輯方法action(),線程B獲取鎖失敗,跳過邏輯方法action()不執(zhí)行,鎖監(jiān)聽watcher監(jiān)聽到A釋放了鎖,B嘗試獲取并獲取成功,此時怎么再次觸發(fā)線程B調(diào)用Action()?前提:邏輯方法是在集群服務(wù)器【多臺】,zookeeper 分布式鎖服務(wù)在另一臺服務(wù)器問題如上,目前我能想到的方法:新建一個回調(diào)函數(shù)callback(),將線程B調(diào)用Action的方法參數(shù)及該回調(diào)函數(shù)地址傳給zookeeper加鎖服務(wù),作為對象參數(shù),等Watcher通知獲取鎖后,調(diào)用該回調(diào)函數(shù)再次進(jìn)行Action()方法的調(diào)用疑惑:覺得我的這個方法非常low,一點都不靈活,想咨詢各位segmentfault大神,有沒有用過分布式鎖服務(wù)遇到過類似場景的問題,辛苦給個最佳實踐,不勝感激
1 回答

手掌心
TA貢獻(xiàn)1942條經(jīng)驗 獲得超3個贊
畫了一下獲取鎖的基本流程實現(xiàn)。大致現(xiàn)在的zookeeper分布式鎖都是這樣來實現(xiàn)的。
上面是一個完整的獲取鎖過程就類似 Lock.lock()
該方法實現(xiàn)的操作一樣,并不會說創(chuàng)建節(jié)點失敗就直接返回錯誤,然后由使用方
決定流程走向。
現(xiàn)有的 ZooKeeper 實現(xiàn)樓主可以參數(shù)一下。
Apache urator
GitHub Libraries
添加回答
舉報
0/150
提交
取消