3个节点的选主就介绍到这里了,也许有网友会说,虽然各个节点的计时器是随机的,但也有可能同一时间,或一个节点在未收到另一个节点发起的投票请求之前变成 Candidate,即在一轮投票过程中,有大于1个的节点状态都是 Candidate,那该如何选主呢?
下面以4个节点的集群为例,来阐述上述这种情况情况下,如何进行选主。
1.2 一轮投票中,超过一个节点发起投票的情况
首先同时有两个节点进入Candidate状态,并开始新的一轮投票,当前投票编号为4,首先先为自己投上一票,然后向集群中的其他节点发起投票,如下图所示:

然后各个节点收到投票请求,如下所示,进行投票:

首先节点C、D在收到D、C节点的投票请求时,都会返回不同意,因为在本轮投票中,已经各自为自己投了一票,按照上图,节点A同意C节点、节点B同意D节点,那此时C、D都只获的两票,当然如果A,B都认为C或D成为主节点,则选择就可以结束了,上图显示,C、D都只获的2票,未超过半数,无法成为主节点,那接下来会发生什么呢?

文章详细解释了Raft协议中的选主过程,涉及节点状态(Follower、Candidate、Leader)、计时器触发、投票轮次、成为Leader的条件以及日志复制。作者还讨论了如何在实际实现中考虑的问题,引导读者进一步学习Dledger模块的源码实现。
最低0.47元/天 解锁文章
210

被折叠的 条评论
为什么被折叠?



