3-zookeeper选举机制

第一次启动的情况

在这里插入图片描述
假设zookeeper集群中有5台服务器,那么想要成为leader需要半数以上的选票(3票),每一个服务器都有一个选票,服务器会先把选票投给自己
过程1–服务器1投自己一票,此时服务器1只有一票,不够3票,选举没有完成,服务器1状态为looking
过程2–服务器2投自己一票并与服务器1交换选票信息,服务器1发现服务器2的myid比自己目前推举的(服务器1)号数更大,服务器1即更改推举服务器2.此时服务器没有票数,服务器2有2票,不够三票,服务器1与服务器2状态为looking
过程3–服务器3投自己一票并与前两台服务器交换选票信息,服务器2与服务器1发现服务器3的myid比自己目前推举的(服务器2)号数更大,服务器2即更改推举服务器3.此时服务器3达到3票,服务器1,2状态变为following,服务器3状态变为leading
一旦集群中产生了leder,选举就结束了,服务器4与服务器5启动后直接进入following状态

非第一次启动的情况

当服务器运行期间无法和leader保持连接时,开始进行leader选举
当一台服务器进行leader选举时会出现两种情况:

1.集群中本来就有一个leader

服务器尝试选举leader时,会被其他服务器告知当前服务器的leader信息,对于该机器,只需要尝试与leader连接直到连接上,并进行状态同步

2.集群确实不存在leader

SID:服务器id,用来唯一标识一台zookeeper集群中的机器,和myid一致
ZXID:事务id,用来标识依次服务器状态的变更。摩一世可,集群中的服务器的ZXID的值并不一定一致
Epoch:每个leader任期的代号。meiyouleader时同一轮投票过程中的逻辑时钟值是相同的。每投完一次票数据就会增加
假设zookeeper由5台服务器组成,SID为1,2,3,4,5,zxid分别为3,3,4,4,3,Epoch默认为1,SID为3的服务器为leader,此时,SID为3和4的服务器崩了,开始进行选举

EPOCHZXIDSID
1131
2132
5135

如果比较内容相同,就对比下一项内容
1)Epoch大的选出
2)ZXID大的胜出
3)SID大的胜出
最终,该例子由5号服务器当选

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值