Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

Raft 的 CommitIndex 和 AppliedIndex 差在哪?

查看完整题解

参考回答

直接回答

CommitIndex 表示协议认定已提交到的位置。AppliedIndex 表示本机状态机实际执行到的位置。后者追上前者之前,本机还没把所有已提交操作应用到本机能读取的 KV 状态。

讲清原理

日志先复制到其他成员,提交后再由每个成员执行。I/O、慢操作或队列都可能拉开差距。读取选择了某个安全位置之后,读所在节点需等条件满足再读。

Raft 提交、节点应用和读屏障
Raft 提交、节点应用和读屏障

例子与易错点

日志 120 已提交,本机只执行到 117。如果直接读本机状态,就有可能漏掉 118–120 的变化。

延伸阅读 etcd 默认读取为什么能线性一致? · etcd 怎么用 Raft 保证写入的强一致性? · ReadIndex 在 etcd 读请求里起什么作用?

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。