溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

zookeeper應用實現過程

發(fā)布時間:2021-06-23 10:46:41 來源:億速云 閱讀:125 作者:chen 欄目:大數據

本篇內容介紹了“zookeeper應用實現過程”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

實現一個分布式鎖 

通過在zookeeper的某路徑節(jié)點下創(chuàng)建臨時序列節(jié)點來實現分布式鎖,即每個線程(跨進程的線程)獲取同一把鎖前,都需要在同樣的路徑下創(chuàng)建一個節(jié)點,節(jié)點名字由uuid + 遞增序列組成。而通過對比自身的序列數是否在所有子節(jié)點的第一位,來判斷是否成功獲取到了鎖。當獲取鎖失敗時,它會添加watcher來監(jiān)聽前一個節(jié)點的變動情況,然后進行等待狀態(tài)。直到watcher的事件生效將自己喚醒,或者超時時間異常返回。

讓我們分析如何在ZooKeeper集合中選舉leader節(jié)點??紤]一個集群中有N個節(jié)點。

leader選舉的過程如下:

  • 所有節(jié)點創(chuàng)建具有相同路徑 /app/leader_election/guid_ 的順序、臨時節(jié)點。

  • ZooKeeper集合將附加10位序列號到路徑,創(chuàng)建的znode將是 /app/leader_election/guid_0000000001,/app/leader_election/guid_0000000002等。

  • 對于給定的實例,在znode中創(chuàng)建最小數字的節(jié)點成為leader,而所有其他節(jié)點是follower。

  • 每個follower節(jié)點監(jiān)視下一個具有最小數字的znode。例如,創(chuàng)建znode/app/leader_election/guid_0000000008的節(jié)點將監(jiān)視znode/app/leader_election/guid_0000000007,創(chuàng)建znode/app/leader_election/guid_0000000007的節(jié)點將監(jiān)視znode/app/leader_election/guid_0000000006。

  • 如果leader關閉,則其相應的znode/app/leader_electionN會被刪除。

  • 下一個在線follower節(jié)點將通過監(jiān)視器獲得關于leader移除的通知。

  • 下一個在線follower節(jié)點將檢查是否存在其他具有最小數字的znode。如果沒有,那么它將承擔leader的角色。否則,它找到的創(chuàng)建具有最小數字的znode的節(jié)點將作為leader。

  • 類似地,所有其他follower節(jié)點選舉創(chuàng)建具有最小數字的znode的節(jié)點作為leader。

“zookeeper應用實現過程”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI