Zookeeper集群為什麼要是單數

2021-09-26 03:18:16 字數 922 閱讀 8321

在zookeeper集群中,會有三種角色,leader、 follower、 observer分別對應著**、議員、觀察者。

半數以上投票通過:可以這樣理解。客戶端的增刪改操作無論訪問到了哪台zookeeper伺服器,最終都會被**給leader伺服器,再由leader伺服器分給zookeeper集群中所有follower伺服器去投票(投票指的是在記憶體中做增刪改操作),半數投票通過就被認為操作可執行(commit),否則不可執行。

observer觀察者伺服器是針對於查詢操作做負載的,observer與follower伺服器最大的不同在於observer沒有投票權,在客戶端發起的增刪改操中,leader伺服器是不會把訊息傳遞給observer伺服器讓其投票的。但是查詢操作跟follower一樣,客戶端的查詢到了observer伺服器節點,observer伺服器去訪問leader伺服器取最新的資料然後返回給客戶端。

為什麼zookeeper集群是單數?

1、容錯

由於在增刪改操作中需要半數以上伺服器通過,來分析以下情況。

2臺伺服器,至少2臺正常執行才行(2的半數為1,半數以上最少為2),正常執行1臺伺服器都不允許掛掉

3臺伺服器,至少2臺正常執行才行(3的半數為1.5,半數以上最少為2),正常執行可以允許1臺伺服器掛掉

4臺伺服器,至少3臺正常執行才行(4的半數為2,半數以上最少為3),正常執行可以允許1臺伺服器掛掉

5臺伺服器,至少3臺正常執行才行(5的半數為2.5,半數以上最少為3),正常執行可以允許2臺伺服器掛掉

6臺伺服器,至少3臺正常執行才行(6的半數為3,半數以上最少為4),正常執行可以允許2臺伺服器掛掉

通過以上可以發現,3臺伺服器和4臺伺服器都最多允許1臺伺服器掛掉,5臺伺服器和6臺伺服器都最多允許2臺伺服器掛掉

但是明顯4臺伺服器成本高於3臺伺服器成本,6臺伺服器成本高於5伺服器成本。這是由於半數以上投票通過決定的。

三 ZooKeeper集群為什麼要單數?

在zookeeper集群中,會有三種角色,leader follower observer分別對應著 議員 觀察者。半數以上投票通過 可以這樣理解。客戶端的增刪改操作無論訪問到了哪台zookeeper伺服器,最終都會被 給leader伺服器,再由leader伺服器分給zookeeper集群中所有fo...

Zookeeper集群節點數量為什麼要奇數個

防腦裂 zookeeper的選舉策略也是需要半數以上的節點同意才能當選leader,如果是偶數節點可能導致票數相同的情況 在節點數量是奇數個的情況下,zookeeper集群總能對外提供服務 即使損失了一部分節點 如果節點數量是偶數個,會存在zookeeper集群不能用的可能性 腦裂成兩個均等的子集群...

zookeeper集群節點個數為什麼最好是2n 1

zookeeper集群一大特性是只要集群中半數以上的節點存活,集群就可以正常提供服務 第一點 防止單點故障 比如 集群中只有2臺伺服器,若其中1臺掛掉,集群則停止對外提供服務 集群中只有3臺伺服器,若其中1臺掛掉,集群則重新選主,繼續對外提供服務 第二點 2n 1臺和2n 2臺機器的容災能力相同,都...