关于zookeeper的节点配置的个数

使用过zookeeper的同学都知道,集群中的zookeeper需要超过半数,整个集群对外才可用。

这里所谓的整个集群对外才可用,是指整个集群还能选出一个Leader来,zookeeper默认采用

quorums来支持Leader的选举。

其实quorums机制有两个作用:

  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。

猜你喜欢

转载自www.cnblogs.com/smy-yaphet/p/10369310.html