Zookeeper集群节点数量为什么要是奇数个?

遵循Zookeeper的《选举机制》:

1).半数机制:集群中半数以上机器存活,集群可用。所以Zookeeper适合安装奇数台服务器。

2).Zookeeper虽然在配置文件中并没有指定Master(Leader)和Slave(Follower)但是,Zookeeper工作时,是有一个节点为Leader,其他则为Follower,Leader是通过内部的选举机制临时产生的。

3).举例子:假如有5台服务器组成一个zookeeper集群,他们的id是1-5,同时都是最新启动的,也没有历史数据。

                在存放数据量这一点上,都是一样的。假设这些服务器依序启动,来看看会发生什么。

5台服务器半数以上票数是3
服务器1开始选举,投自己一票。不够半数以上票数;状态保持为LOOKING;
服务器2

开始选举,服务器1,2 分别 投自己一票。因为服务器2的ID比服务器1的ID大。

所以,服务器1更改投票,把票投给服务器2的票数为2,不满足半数票数以上;状态保持为LOOKING;

服务器3

和上面规则一样,服务器1,2,都把票投给服务器3了。加上服务3 自己的一票,刚好3票。

满足半数机制,服务器1,2更改状态为FOLLOWING,服务器3更改状态为LEADING;

服务器4

开始选举,此时服务器1,2,3已经不是LOOKING状态,不会更改选票信息。

交换选票信息结果:服务器3为3票,服务器4为1票。

此时服务器4服从多数,更改选票信息为服务器3;

服务器4并更改状态为FOLLOWING;

服务器5同4一样,少数服从多数。服务器5并更改状态为FOLLOWING;

总结:最终Leader是服务器3,状态为LEADING;其余服务器是Follower,状态为FOLLOWING。

 

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服务器成本。这是由于半数以上投票通过决定的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值