分布式鎖
思路:首先創(chuàng)建一個鎖節(jié)點,需要獲得鎖的機器在鎖節(jié)點下創(chuàng)建順序臨時節(jié)點,序號1的節(jié)點獲得鎖,獲得鎖的機器刪除節(jié)點或者自己掛掉則自動釋放節(jié)點了,序號2的節(jié)點創(chuàng)建時需要監(jiān)聽序號1的節(jié)點,節(jié)點1掛掉之后收到通知便獲得鎖,避免羊群效應。
分布式讀寫鎖
思路:首先創(chuàng)建鎖節(jié)點,需要獲取讀寫鎖的機器對鎖節(jié)點的子節(jié)點列表進行監(jiān)聽,并且在鎖節(jié)點下創(chuàng)建節(jié)點
對于需要獲得讀權限的機器收到通知時:
if 比自己序號小的節(jié)點都是讀節(jié)點
獲得讀寫鎖
else
繼續(xù)等待
對于需要獲得寫權限的機器收到通知時:
if 如果自己是最小序號的節(jié)點
獲得讀寫鎖
else
繼續(xù)等待
分布式柵欄
思路:首先創(chuàng)建鎖節(jié)點,鎖節(jié)點值為n,參與柵欄的節(jié)點注冊對所節(jié)點的監(jiān)聽并在鎖節(jié)點下創(chuàng)建節(jié)點,當監(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)聽,當子節(jié)點個數(shù)達到n時獲得閉鎖