Zookeeper的選舉機制
阿新 • • 發佈:2018-12-21
半數機制:
叢集中半數以上機器存活,叢集可用。所以zookeeper適合裝在奇數臺機器上。
Zookeeper雖然在配置檔案中並沒有指定master和slave。但是,zookeeper工作時,是有一個節點為leader,其他則為follower,Leader是通過內部的選舉機制臨時產生的
舉例
假設有五臺伺服器組成的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一樣當小弟。