1)半數機制:集羣中半數以上機器存活,集羣可用。因此Zookeeper適合安裝奇數臺服務器。算法
2)Zookeeper雖然在配置文件中並無指定Master和Slave。可是,Zookeeper工做時,是有一個節點爲Leader,其餘則爲Follower,Leader是經過內部的選舉機制臨時產生的。服務器
3)以一個簡單的例子來講明整個選舉的過程。網絡
假設有五臺服務器組成的Zookeeper集羣,它們的id從1-5,同時它們都是最新啓動的,也就是沒有歷史數據,在存放數據量這一點上,都是同樣的。如圖所示:
分佈式
(1)服務器1啓動,此時只有它一臺服務器啓動了,它發出去的報文沒有任何響應,因此它的選舉狀態一直是LOOKING狀態。工具
(2)服務器2啓動,它與最開始啓動的服務器1進行通訊,互相交換本身的選舉結果,因爲二者都沒有歷史數據,因此id值較大的服務器2勝出,可是因爲沒有達到超過半數以上的服務器都贊成選舉它(這個例子中的半數以上是3),因此服務器一、2仍是繼續保持LOOKING狀態。spa
(3)服務器3啓動,根據前面的理論分析,服務器3成爲服務器一、二、3中的老大,而與上面不一樣的是,此時有三臺服務器選舉了它,因此它成爲了此次選舉的Leader。線程
(4)服務器4啓動,根據前面的分析,理論上服務器4應該是服務器一、二、三、4中最大的,可是因爲前面已經有半數以上的服務器選舉了服務器3,因此它只能接收當小弟的命了。blog
(5)服務器5啓動,同4同樣當小弟。進程
(1)部署方式單機模式、集羣模式
(2)角色:Leader和Follower
(3)集羣最少須要機器數:3事件
這個不多有公司會問到
Paxos算法一種基於消息傳遞且具備高度容錯特性的一致性算法。
分佈式系統中的節點通訊存在兩種模型:共享內存(Shared memory)和消息傳遞(Messages passing)。基於消息傳遞通訊模型的分佈式系統,不可避免的會發生如下錯誤:進程可能會慢、被殺死或者重啓,消息可能會延遲、丟失、重複,在基礎 Paxos 場景中,先不考慮可能出現消息篡改即拜占庭錯誤的狀況。Paxos 算法解決的問題是在一個可能發生上述異常的分佈式系統中如何就某個值達成一致,保證不論發生以上任何異常,都不會破壞決議的一致性。
CAP法則:強一致性、高可用性、分區容錯性;
Zookeeper符合強一致性、高可用性!
本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈