nacos集群 raft协议下选举原理(cp模式)

这篇博客深入探讨了Nacos集群中基于RAFT协议的选举过程,描述了如何从follower转变为candidate并发起投票。在选举中,首个唤醒的节点会成为candidate并尝试获得半数以上的投票。如果出现多个节点同时发起投票,选举将无效并重新开始。与ZAB协议不同,RAFT协议中只有一个节点能发起投票。当选节点成为leader后,它负责处理客户端请求并转发到其他节点。文章还简要提及了ZAB协议的节点间竞争特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nacos集群节点每个节点都有随机休眠时间,此时每个节点都是follower角色,谁先休眠结束唤醒来,谁先发起选举投票,此时该节点会更改乘candidate(候选者,选举者)角色,发起投票(调用/raft/vote接口)的会先给自己发送一票,然后发送投票给其他节点,其他节点还在如果还在休眠中,则会默认认可发起者为leader,则会返回投票个给发起者,根据选举半数原则,达到投票半数以上,此时发起者会变成leader,代码其实使用countDownLatch计数去实现的,自己投票countDown一次,其他节点在进行投票countDown;如果发起投票的时候,其他节点也休眠唤醒了,也会发起投票给其他节点,相当于两个节点同时在发起投票,这种情况的选举无效,需要重新休眠发起选举。

成为leader的节点,处理nacos客户端发送来的数据,如果请求到了其他节点,也要转发给leader处理。

RAFT协议只会一个节点发起投票,与ZAB选举不一样的是,ZAB每个节点都会发起选举投票,节点间会进行pk,zid和myid和数据进行比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值