在 Raft 中,追随者什么时候知道条目已提交?过时的节点能赢得选举吗?

wan*_*ang 5 leader consensus raft

在 raft 中,如果日志复制到多数,则认为它已在领导者中提交。然后leader发送消息给follower告诉follower一个条目被提交。如果没有,follower如何以及何时知道一个条目被提交???

还有一个问题,在以下情况下,过时的人是否可以赢得选举?5个节点集群,节点A是当前的leader。

答: 0 1 2 3 4

乙: 0 1 2 3 4

C: 0 1 2 3 4

d: 0 1 2 3

乙: 0 1

当节点 A(当前领导者)收到请求(条目 4)时,记录该请求并将其复制到节点 B 和节点 C。然后节点 A 在状态机中应用条目 4 并回复客户端(此时条目被视为由节点提交) B 和节点 C 是否?)。然后节点A和节点B崩溃,节点D自己开始新的选举投票并获得节点E的投票,从而赢得选举。这种情况会发生吗?

sup*_*ell 4

领导者发送给追随者的 AppendEntries RPC 包含提交索引,追随者可以在从领导者收到此信息时将这些日志条目应用到其状态机。追随者只从领导者那里获得提交索引,它从不自己计算它。如果领导者失败,新的领导者将计算相关的提交索引并将其与 AppendEntries RPC 调用一起发送。

对于选举问题,D 无法赢得选举,它需要 3 票才能获胜,并且不会得到 C 的投票。最终 C 将开始选举并获胜并继续担任领导者。