使用过zookeeper的同窗都知道,集群中的zookeeper须要超过半数,整个集群对外才可用。资源
这里所谓的整个集群对外才可用,是指整个集群还能选出一个Leader来,zookeeper默认采用it
quorums来支持Leader的选举。集群
其实quorums机制有两个做用:zookeeper
1.能够保证集群中选举出leader,且是惟一的一个,不会出现脑裂(split-brain)。数据
2.当客户端更新数据时,当大多数节点更新成功,客户端就会被通知更新成功了,客户端
3. 其余节点能够稍后再更新,以至达到数据的最终一致性
就是说若是有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,因此为了更加高效,和节省资源,2n和2n-1做用同样只需2n-1便可,没必要增长那一个没必要要的zookeeper。