爲了避免 Zookeeper 的單點問題,zk 也是以集羣的形式出現的。zk 集羣中的角色主要有
以下三類:
- Leader:事務請求的唯一處理者,也可以處理讀請求。
- Follower:可以直接處理客戶端的讀請求,並向客戶端響應;但其不會處理事務請求,其只會將客戶端事務請求轉發給Leader來處理;對Leader發起的事務提案具有表決權;同步 Leader 中的事務處理結果;Leader 選舉過程的參與者,具有選舉權與被選舉權。(就好像正式工)
- Observer:可以理解爲不參與 Leader 選舉的 Follower,在 Leader 選舉過程中沒有選舉權
與被選舉權;同時,對於 Leader 的提案沒有表決權。用於協助 Follower 處理更多的客
戶端讀請求。Observer 的增加,會提高集羣讀請求處理的吞吐量,但不會增加事務請求
的通過壓力,不會增加 Leader 選舉的壓力。(就好像臨時工)
三種角色在不同的情況下又有一些不同的名稱
- Learner:學習者,即要從 Leader 中同步數據的 Server,即 Follower 與 Observer。Learner = Follower + Observer
- QuorumServer:QuorumPeer,Participant,法定服務器,法定主機,參與者。在集羣正
常服務狀態下,具有表決權的服務器稱爲 QuorumServer,或 QuorumPeer;在 Leader
選舉過程中,具有選舉權與被選舉權的服務器,稱爲 Participant。
QuorumServer = Leader + Follower = Participant