数据岗位面试题更新 2026-08-05

在 Apache Kudu 的架构中,Raft 分布式一致性协议是如何具体作用于数据写入和读取流程,从而确保副本间一致性的?请说明其核心机制。

数据系统设计技术原理Apache Kudu

考察说明

考查对 Kudu 基于 Raft 协议实现一致性的机制理解。

回答思路

  1. 【回答框架 1】Kudu 使用 Raft 协议在 tablet 副本间同步日志。写入请求先提交到 leader,通过日志复制到多数派 follower,提交后返回成功,从而保证已提交数据不会丢失,读取可基于已提交日志。
  2. 【回答框架 2】读取一致性通过 leader 提供线性一致性读实现。每个 tablet 有 leader 和 follower,读取路由到 leader,leader 确保读到最新已提交数据;follower 只用于容错,不直接提供强一致读。
  3. 【回答框架 3】Raft 的选主机制保证任何时刻只有一个 leader,新 leader 拥有完整已提交日志,避免脑裂。日志条目带任期和索引,多数派投票后才算提交,保证日志一致性。
  4. 【回答框架 4】写入路径为客户端到 leader,leader 追加日志并并行复制到多数派,收到多数派确认后应用状态机并响应。读取路径为客户端到 leader,直接读取状态机,确保线性一致性。
  5. 【回答框架 5】Kudu 还支持快照读和可调一致性级别,弱一致性读可路由到 follower,但牺牲实时性;默认强一致读由 leader 处理,确保数据一致。
  6. 【关键点 1】写入需 leader 将日志复制到多数派并提交后返回成功。
  7. 【关键点 2】读取默认由 leader 处理,保证线性一致性。
  8. 【关键点 3】Raft 选主和多数派提交机制避免脑裂,确保唯一 leader。
  9. 【关键点 4】follower 读取仅用于弱一致性场景,不保证最新数据。
  10. 【易错点 1】不能将读取一致性泛化为所有场景强一致,存在弱读选项。
  11. 【易错点 2】Raft 只保证多数派共识,极端网络分区下可能短暂不可用。
  12. 【易错点 3】不要将日志复制与业务幂等直接挂钩,重试写入仍可能重复。