ZooKeeper 叢集執行機制
阿新 • • 發佈:2021-12-02
執行機制
- ZooKeeper 叢集安裝時所有 zk 節點不分主/從節點
- ZooKeeper 叢集執行時會選舉一個節點作為主節點( Leader ),其他節點作為從節點( Follower )
- ZooKeeper 叢集中只有主節點(Leader) 對外提供服務,從節點(Follower)僅作為備份節點
選舉投票機制
投票規則:所有 ZK 節點中獲得投票數超過 ZK 叢集節點半數以上則為 Leader,其他節點為 Follower
- ZK1 啟動後 QuorumPeerMain 程序會向 ZK 叢集進行組播投票,發現只有自己,只能投自己
- ZK2 啟動後 QuorumPeerMain 程序會向 ZK 叢集進行組播投票,發現自己的 myid 更大,投自己
- 目前 ZK1 和 ZK2 各自獲得 1 票無法勝出,需要進行新一輪投票
- 新一輪投票中,ZK1 的 myid 更小這次會投票給 ZK2,ZK2 自然也投票給自己,這樣 ZK2 獲得 2
- ZK 叢集一共 3 個 ZK 節點, ZK2 獲得 2 票,超過半數以上投票,所以 ZK2 獲勝成為 Leader,這時 ZK3 啟動發現叢集 ZK 節點已經有 Leader,則自動變成 Follower
ZooKeeper 高可靠、高可用
- ZooKeeper 叢集節點初始配置應該為奇數
- 只要 ZooKeeper 叢集中宕機的節點數小於半數,ZooKeeper 叢集就可以正常對外提供服務