Zookeeper与Nacos选举比对

Zookeeper选举

选举过程

zk选举会经过两轮投票(机器1 myid=1;机器2 myid=2;选票格式vote(myid,ZXID))
1、机器1,发送自己的选票(1,0),收到的选票是(2,0),将收到的票跟自己投出去的票对比,优先选择zxid大的为leader,zxid大的机器包括的数据是最新的,如果zxid一样,默认选myid大的为leader,推荐(2,0)为leader
2、机器2,发送自己的选票(2,0),收到的选票是(1,0),将收到的票跟自己投出去的票对比,推荐(2,0)为leader
3、机器1,发送自己的选票(2,0),收到的选票是(2,0),将收到的票跟自己投出去的票对比,投一台机器的票数已经超过集群的半数,此时选举就结束了,确定(2,0)成为leader
4、机器2,发送自己的选票(2,0),收到的选票是(2,0),将收到的票跟自己投出去的票对比,确定(2,0)成为leader

在这里插入图片描述

Nacos选举

选举过程

1、三台机器启动时,各自循环执行任务MasterElection,生成选举时间leaderDueMs(0~15s随机数),循环一次,选举时间减去500ms,直到选举时间小于等于0,则开始发起选举;
2、若机器S1,选举时间先到0,则S1先发起选举,S1先重置自己选举时间leaderDueMs(15~20s随机数),心跳时间heartbeatDueMs(5s)
3、S1先投票给自己,并将自己选举周期Term(S1)加1,状态变为候选者CANDIDATE
4、S1将自己的选票信息发送给其他节点,S2、S3收到选票信息后进行判断,以S2为例
4.1、若收到候选节点S1的周期大于本节点的周期,则投候选节点S1为LEADER,更新自己选举周期为Term(S1),状态为FOLLOWER,并发送自己的选票
4.2、若收到候选节点S1的周期小于本节点的周期,则投自己S2为LEADER,并发送自己的选票
5、S1收到其他节点的选票结果,若超过半数以上机器投S1,则将自己更新为LEADER

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值