1. 程式人生 > >Zookeeper要安裝在奇數個節點,但是為什麽?

Zookeeper要安裝在奇數個節點,但是為什麽?

n-1 clas lar 領導 add ive 發送 AR content

Zookeeper要安裝在奇數個節點,但是為什麽?

我們都知道,Zookeeper要安裝在奇數個節點,但是為什麽?
Zookeeper的大部分操作都是通過選舉產生的。比如,標記一個寫是否成功是要在超過一半節點發送寫請求成功時才認為有效。同樣,Zookeeper選擇領導者節點也是在超過一半節點同意時才有效。最後,Zookeeper是否正常是要根據是否超過一半的節點正常才算正常。這是基於CAP的一致性原理。

zookeeper有這樣一個特性:集群中只要有過半的機器是正常工作的,那麽整個集群對外就是可用的。也就是說如果有2個zookeeper,那麽只要有1個死了zookeeper就不能用了,因為1沒有過半,所以2個zookeeper的死亡容忍度為0;同理,要是有3個zookeeper,一個死了,還剩下2個正常的,過半了,所以3個zookeeper的容忍度為1;同理你多列舉幾個:2->0;3->1;4->1;5->2;6->2會發現一個規律,2n和2n-1的容忍度是一樣的,都是n-1,所以為了更加高效,何必增加那一個不必要的zookeeper呢。

redis/zookeeper

Zookeeper要安裝在奇數個節點,但是為什麽?