zookeeper選舉演算法
閱讀更多
順序訪問
對於來自客戶端的每個更新請求,ZooKeeper 都會分配一個全域性唯一的遞增編號。
這個編號反應了所有事務操作的先後順序,應用程式可以使用 ZooKeeper 這個特性來實現更高層次的同步原語。這個編號也叫做時間戳—zxid(ZooKeeper Transaction Id)。
高效能
ZooKeeper 是高效能的。在“讀”多於“寫”的應用程式中尤其地高效能,因為“寫”會導致所有的伺服器間同步狀態。(“讀”多於“寫”是協調服務的典型場景。)
ZooKeeper 叢集角色介紹
最典型叢集模式:Master/Slave 模式(主備模式) 。在這種模式中,通常 Master 伺服器作為主伺服器提供寫服務,其他的 Slave 伺服器從伺服器通過非同步複製的方式獲取 Master 伺服器最新的資料提供讀服務。
但是, 在 ZooKeeper 中沒有選擇傳統的 Master/Slave 概念,而是引入了Leader、Follower 和 Observer 三種角色。
如下圖所示:
ZooKeeper 叢集中的所有機器通過一個 Leader 選舉過程來選定一臺稱為 “Leader” 的機器。
Leader 既可以為客戶端 提供寫服務又能提供讀服務 。除了 Leader 外,Follower 和 Observer 都 只能提供讀服務。
Follower 和 Observer 唯一的區別在於 Observer 機器不參與 Leader 的選舉過程 ,也不參與寫操作的“過半寫成功”策略 ,因此 Observer 機器可以在不影響寫效能的情況下提升叢集的讀效能。