zookeeper應(yīng)用

分布式鎖

思路:首先創(chuàng)建一個鎖節(jié)點,需要獲得鎖的機器在鎖節(jié)點下創(chuàng)建順序臨時節(jié)點,序號1的節(jié)點獲得鎖,獲得鎖的機器刪除節(jié)點或者自己掛掉則自動釋放節(jié)點了,序號2的節(jié)點創(chuàng)建時需要監(jiān)聽序號1的節(jié)點,節(jié)點1掛掉之后收到通知便獲得鎖,避免羊群效應(yīng)。

分布式讀寫鎖

思路:首先創(chuàng)建鎖節(jié)點,需要獲取讀寫鎖的機器對鎖節(jié)點的子節(jié)點列表進行監(jiān)聽,并且在鎖節(jié)點下創(chuàng)建節(jié)點
對于需要獲得讀權(quán)限的機器收到通知時:
if 比自己序號小的節(jié)點都是讀節(jié)點
獲得讀寫鎖
else
繼續(xù)等待
對于需要獲得寫權(quán)限的機器收到通知時:
if 如果自己是最小序號的節(jié)點
獲得讀寫鎖
else
繼續(xù)等待

分布式柵欄

思路:首先創(chuàng)建鎖節(jié)點,鎖節(jié)點值為n,參與柵欄的節(jié)點注冊對所節(jié)點的監(jiān)聽并在鎖節(jié)點下創(chuàng)建節(jié)點,當(dāng)監(jiān)聽到鎖節(jié)點下的子節(jié)點個數(shù)為n時則沖破柵欄,并且刪除子節(jié)點

分布式信號量

思路:首先創(chuàng)建鎖節(jié)點,鎖節(jié)點值為n,即信號量數(shù)目,需要獲取信號量的節(jié)點對鎖節(jié)點的子節(jié)點列表進行監(jiān)聽并在鎖節(jié)點下創(chuàng)建順序節(jié)點,收到鎖節(jié)點通知時判斷比自己序號小的節(jié)點個數(shù)是否小于n,如果是則獲得信號量,如果不是繼續(xù)等待

分布式閉鎖

思路:與分布式柵欄類似,區(qū)別是需要獲得閉鎖的機器不需要創(chuàng)建節(jié)點只需要監(jiān)聽,當(dāng)子節(jié)點個數(shù)達到n時獲得閉鎖

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容