Raft 共识协议

共 17 题
#

1. Raft 的 leader election 中 term、election timeout、majority vote 如何起作用

A 获得超过半数节点投票的候选者才能成为 leader ✓ 正确答案
B 选举超时固定不变,以保证所有节点同时超时
C 每个节点在一个 term 内可以投给多个候选者
D 只有获得全部节点投票才能成为 leader
#

2. Raft 的"safety"保证,即 State Machine Safety

A 允许不同节点以不同顺序应用命令
B 只保证 leader 自身状态机安全
C 保证同一索引上所有节点应用相同的条目 ✓ 正确答案
D 与日志复制无关,仅由选举决定
#

3. Raft 中 Follower、Candidate、Leader 三种角色的状态机

A 一个 term 内存在多个 leader 是允许的
B Candidate 获得多数派投票后转为 Follower
C Follower 收到更高 term 的请求会转为 Leader
D 任何 term 内最多一个 leader,其余为 follower/candidate ✓ 正确答案
#

4. Raft 的 ReadIndex 与 Lease Read 在实现线性一致读上有何差异,各自依赖什么前提?

A ReadIndex 依赖时钟同步保证安全
B ReadIndex 需要本地读不经过任何 RPC
C Lease Read 必须向多数派发送心跳才能读取
D Lease Read 依赖时钟,时钟漂移可能读到过期数据 ✓ 正确答案
#

5. Raft 的网络分区与脑裂的"少数派不服务"

A 少数派孤 leader 仍能提交写入
B 分区期间两边都能产生新 leader
C 分区恢复后少数派丢弃未提交日志以回退 ✓ 正确答案
D 脑裂必然导致已提交数据丢失
#

6. Raft 日志复制的 batch 与 pipeline 优化如何提升吞吐,对延迟有何影响?

A batch 增加 RPC 次数
B pipeline 让多个 AppendEntries 并行在途,提升吞吐 ✓ 正确答案
C pipeline 使每条日志提交延迟严格为一个 RTT
D batch 与 pipeline 都无法提升吞吐
#

7. Raft 的"线性一致性"(linearizability)保证

A leader 直接本地读即可保证线性一致
B Raft 的线性一致与日志复制无关
C 线性一致允许多个节点看到不同顺序
D 写操作经日志全序提交应用,保证线性一致 ✓ 正确答案
#

8. etcd-raft 的工程实现与 Raft 论文的差异

A etcd-raft 引入 PreVote 与 CheckQuorum 增强分区鲁棒性 ✓ 正确答案
B etcd-raft 完全照搬论文,无任何增强
C etcd-raft 不支持线性一致读
D etcd-raft 使用全局分歧的 joint consensus 而非单节点变更
#

9. Raft 协议的设计哲学,可理解性优先 vs Paxos 的晦涩

A Raft 把共识拆解为选主、复制、安全三个子问题,并采用强 leader 模型,降低实现与验证难度 ✓ 正确答案
B 可理解性优先意味着以牺牲正确性为代价
C Paxos 比 Raft 更易直接实现
D Raft 完全摒弃了 Paxos 的全部思想
#

10. Raft 的 PreVote 优化(避免 term 无效增加)

A 预投票会直接打断现有 leader
B 预投票获得多数派后才递增 term 发起正式选举 ✓ 正确答案
C 预投票用于提高写入吞吐
D 预投票使 term 无限增长
#

11. Raft 的 log replication,包括 AppendEntries、commitIndex、lastLogTerm

A lastLogTerm 与日志安全无关
B commitIndex 由单个 follower 直接决定
C AppendEntries 用 prevLogIndex/prevLogTerm 做一致性检查 ✓ 正确答案
D 日志复制不需要多数派确认
#

12. Raft 的"membership change"(joint consensus)单节点变更

A 成员变更期间可以没有共识保证
B joint consensus 用新旧配置交集作为共识基础
C 单节点变更每次只增删一个节点,保证相邻配置多数派相交 ✓ 正确答案
D 单节点变更一次可同时删除多个节点
#

13. Raft 的"snapshot"机制如何压缩旧日志

A 快照会无限增长无法清理
B 快照会丢弃未被提交的日志
C 快照机制与 InstallSnapshot RPC 无关
D 快照将已提交并应用的日志压缩为状态机快照 ✓ 正确答案
#

14. Raft 的"日志匹配"(log matching property)的不变量

A 日志匹配由客户端请求保证
B 日志匹配只要求 term 单调递增
C 日志匹配不保证前缀一致
D 相同索引处 term 相同则随后条目与前缀都相同 ✓ 正确答案
#

15. Raft 的 leader election、log replication、safety 三个子问题

A 日志复制与选主无关
B 三个子问题彼此独立、互不依赖
C safety 只负责日志复制
D 选主、日志复制、安全三者协同构成完整共识 ✓ 正确答案
#

16. PreVote 与 CheckQuorum 分别解决网络分区下的哪类具体故障场景?

A CheckQuorum 防止旧 leader 在分区后继续提交 ✓ 正确答案
B PreVote 解决 leader 持续提交问题
C 两者都用于提升写吞吐
D CheckQuorum 只影响日志复制速度
#

17. Raft 与 Viewstamped Replication(VR)的对应关系

A Raft 是 VR 的拜占庭版本
B Raft 与 VR 完全无关
C VR 的 view change 对应 Raft 的日志复制
D VR 的 view 对应 Raft 的 term,primary 对应 leader ✓ 正确答案