如果跟随者在Raft中的两个节点的情况下失去了它的领导者(只有一个领导者和一个候选者),该怎么办



我正在学习Raft算法。我的实现满足以下情况:

  1. 1-领导者-1追随者的局面成立
  2. 关闭领导
  3. 追随者并没有心跳,所以成为了一个候选人
  4. 候选人不断向对等方发送VoteRequest(已经关闭(,但失败
  5. 选举暂停,没有选出任何领导人
  6. 候选人开始另一个候选人会话,实际重复4-6

我不知道如何在Raft论文中解决这种情况(也许我错过了什么(。

在我看来,在开始新的选举之前,我可以在第五步检查已授予的选票。由于候选人在选举会议开始时投票给自己,因此在这次检查中,候选人将成为新的领导人。

但我担心这个解决方案会破坏Raft,尤其是当所有节点都是候选节点时,会破坏初始过程。

另一个想法是将RequestVote请求的网络错误视为"已授予投票"。(仍然担心它是否损坏了什么(

我知道这种情况可能是由"只有2个节点"引起的。然而,即使有3个节点(因此建立了1个领导者2个追随者的情况(,那么如果2个领导者因此被关闭,那么剩余的追随者仍然可能表现为这样。

您所描述的问题实际上是一种合法的情况。

如果大多数节点不存在,Raft将不起作用,除了让大多数节点恢复功能外,没有办法避免这种情况。

相关内容

最新更新