【我與面試有個約定】Zookeeper 基礎面試題

Zookeeper 選舉機制

1)半數機制:集羣中半數以上機器存活,集羣可用。因此Zookeeper適合安裝奇數臺服務器。算法

2)Zookeeper雖然在配置文件中並無指定Master和Slave。可是,Zookeeper工做時,是有一個節點爲Leader,其餘則爲Follower,Leader是經過內部的選舉機制臨時產生的。服務器

3)以一個簡單的例子來講明整個選舉的過程。網絡

假設有五臺服務器組成的Zookeeper集羣,它們的id從1-5,同時它們都是最新啓動的,也就是沒有歷史數據,在存放數據量這一點上,都是同樣的。如圖所示:
Zookeeper內部原理分佈式

(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同樣當小弟。進程

Zookeeper 的監聽原理是什麼

  1. 首先要有一個 main() 線程;
  2. 在 main() 線程中建立 Zookeeper 客戶端,這時就會建立兩個線程,一個負責 網絡鏈接通訊(connet) , 一個負責監聽(listener) .
  3. 經過 connet 線程將註冊的監聽事件發送給 Zookeeper.
  4. 在 Zookeeper 的註冊監聽器列表中將註冊的監聽事件添加到列表中 .
  5. Zookeeper 監聽到有數據或路徑變化,就會將這個消息發送到 listener 線程 .
  6. listener 線程內部調用了 process() 方法 .

ZooKeeper的部署方式有哪幾種?集羣中的角色有哪些?集羣最少須要幾臺機器?

(1)部署方式單機模式、集羣模式
(2)角色:Leader和Follower
(3)集羣最少須要機器數:3事件

Paxos算法(擴展)

這個不多有公司會問到

Paxos算法一種基於消息傳遞且具備高度容錯特性的一致性算法。

分佈式系統中的節點通訊存在兩種模型:共享內存(Shared memory)和消息傳遞(Messages passing)。基於消息傳遞通訊模型的分佈式系統,不可避免的會發生如下錯誤:進程可能會慢、被殺死或者重啓,消息可能會延遲、丟失、重複,在基礎 Paxos 場景中,先不考慮可能出現消息篡改即拜占庭錯誤的狀況。Paxos 算法解決的問題是在一個可能發生上述異常的分佈式系統中如何就某個值達成一致,保證不論發生以上任何異常,都不會破壞決議的一致性。

講一講什麼是CAP法則?Zookeeper符合了這個法則的哪兩個?(擴展)

CAP法則:強一致性、高可用性、分區容錯性;

Zookeeper符合強一致性、高可用性!

本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈
相關文章
相關標籤/搜索