欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

为什么说zookeeper建议配置为奇数台? zookeeper 

程序员文章站 2022-06-13 15:00:28
...

     因项目中大量使用zookeeper,最近在面试几位候选人时,经常会问他们一个问题,

为什么说zookeeper建议配置为奇数台?他们只知道需要这么配置,但回答却不尽人意。

 

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

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

quorums来支持Leader的选举。

 

     其实quorums机制有两个作用:

         1.可以保证集群中选举出leader,且是唯一的一个,不会出现脑裂(split-brain)。

         2.当客户端更新数据时,当大多数节点更新成功,客户端就会被通知更新成功了,

          其他节点可以稍后再更新,以致达到数据的最终一致性

 

      可能这还不够清晰,举个列子:设集群的最少节点数为n,

               

集群总节点数 最少可用的节点数  可容忍失效的节点数
1 1 0
2 2 0
3 2 1
4 3 1
5 3 2
6 4 2
。。。 。。。 。。。
2n-1 n n-1
2n n+1 n-1

 

       由此可见,当集群总数为1或2,都不行,因为可容忍失效的节点数都为0,所以要想保证zookeeper的高可用,至少需要3台+。同时,我们可以发现一个规律,3个节点与4个节点的效果是一样的,可容忍失效的节点数都是1,即2n-1与2n,可容忍失效的节点数都是n-1。2n-1个节点能达到的效果,为啥要用2n个节点呢?

省一台节省了成本。配置成偶数台也不会有问题,只不过浪费了而已。

相关标签: zookeeper