1. 程式人生 > 其它 >ZooKeeper 叢集執行機制

ZooKeeper 叢集執行機制

執行機制

  • 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 叢集就可以正常對外提供服務