zookeeper選舉過程
阿新 • • 發佈:2018-12-04
以一個簡單的例子來說明整個選舉的過程。
假設有五臺伺服器組成的zookeeper叢集,它們的id從1-5,同時它們都是最新啟動的,也就是沒有歷史資料,在存放資料量這一點上,都是一樣的。假設這些伺服器依序啟動。
(1)伺服器1啟動,此時只有它一臺伺服器啟動了,它發出去的報沒有任何響應,所以它的選舉狀態一直是LOOKING狀態。
(2)伺服器2啟動,它與最開始啟動的伺服器1進行通訊,互相交換自己的選舉結果,由於兩者都沒有歷史資料,所以id值較大的伺服器2勝出,但是由於沒有達到超過半數以上的伺服器都同意選舉它(這個例子中的半數以上是3),所以伺服器1、2還是繼續保持LOOKING狀態。
(3)伺服器3啟動,根據前面的理論分析,伺服器3成為伺服器1、2、3中的老大,而與上面不同的是,此時有三臺伺服器選舉了它,所以它成為了這次選舉的leader。
(4)伺服器4啟動,根據前面的分析,理論上伺服器4應該是伺服器1、2、3、4中最大的,但是由於前面已經有半數以上的伺服器選舉了伺服器3,所以它只能接收當小弟的命了。
(5)伺服器5啟動,同4一樣當小弟。
Zookeeper叢集節點數量為什麼要是奇數個?(以及半數原理)
Zookeeper叢集的搭建和工作原理:https://blog.csdn.net/szl13722587073/article/details/79180780
過半性
Zookeeper叢集必須有半數以上的機器存活才能正常工作,因為只有滿足過半數,才能滿足選舉機制選出Leader,因為只有過半,在做事務決議時,事務才能更新,所以一般來說,zookeeper叢集的數量最好是奇數個。