You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MIT 6.824课程中Raft协议某日志场景的可行性疑问

为什么Raft中这个日志场景是可行的?

日志场景:

10   11   12   13   14   15
S1: 3
S2: 3    3    4
S3: 3    3    5

场景步骤:

  1. 时间10:所有服务器处于任期3;
  2. 时间11:S1崩溃,S2和S3构成多数派,完成任期3日志的复制;
  3. 时间12:S3崩溃,S2成为任期4的领导者,写入日志但未完成复制就崩溃;
  4. 随后S3成为任期5的领导者并写入日志。

你的疑问核心是S3的任期从3直接到5的合理性,其实这个场景的关键是Raft的任期递增规则和投票交互的中间步骤,并非直接跳级:

  1. S2的任期4会传递给其他节点
    当S2成为任期4的领导者后,哪怕日志没完成复制,它大概率会向存活的S1发送心跳包(AppendEntries请求)。S1收到后,会将自身任期更新为4并转为follower,只是日志仍停留在任期3的状态。

  2. S3恢复后的任期更新
    S3恢复时任期是3,发起选举时会向S1发送投票请求:

  • S1的任期是4,会拒绝投票并告知S3当前更高的任期;
  • S3随即更新自身任期到4,转为follower。
  1. 任期5的选举过程
    接下来S1任期为4,超时后发起选举,将任期加1到5并向S3请求投票:
  • S3的任期是4,先更新到5,但对比日志发现自己的日志(2条任期3条目)比S1的(1条任期3条目)更完整,会拒绝投票;
  • S3超时后发起选举,将任期加1到5,向S1发送投票请求;
  • S1对比日志后,认可S3的日志更完整,投出同意票,S3拿到多数票(2票),成功当选任期5的领导者,随后写入任期5的日志。

整个过程中S3的任期是从3→4→5逐步递增的,完全符合Raft的任期规则,不存在直接跳级的情况。

内容的提问来源于stack exchange,提问作者George Costanza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 11:35:22