Raft在选举后发送带有日志的AppendEntries吗?



我有一个关于日志复制的详细行为的问题。

的人物。2 .扩展筏纸说:

  • nextIndex初始化为leader last log + 1
  • 如果跟踪者的最后一个日志索引>= nextIndex:发送AppendEntries RPC,日志条目从nextIndex开始。

所以,在我的理解中,以下情况可能会发生。

  • S1 (Leader, Term:10)收到客户端X命令。
  • S2 (Follower, Term:10)开始选举成为Leader
  • S1 (Leader, Term:13)当选Leader (reinitialized nextIndex to Leader last log + 1)
  • 然后,S1不发送包含命令X的日志的追加条目RPC到追随者,直到收到来自客户端的下一个命令。

但是,图8的(d)看起来发送带有"3"的Append Entries RPC。就在S5当选之后Fig.8

谁能告诉我为什么会这样?还是我弄错了?

选举结束后,领袖直接向追随者发送心跳信号,以确立自己作为新领袖的地位。如果没有客户端请求,Leader不发送任何条目,但它仍然发送心跳的prevLogIndexprevLogTerm。如果与跟随器不匹配,则跟随器的nextIndex减小。我认为下一个Heartbeat会包括缺失的条目,当prevLogIndexprevLogTerm最终与follower匹配时,缺失的条目可以应用于follower。有些东西也依赖于实现。

最新更新