请阐述 Apache Kudu 的分布式架构在保障数据一致性和高可用性方面采用了哪些具体机制和设计?
考察说明
考查对 Kudu 分布式架构核心机制的理解,包括一致性模型和高可用设计。
回答思路
- 【回答框架 1】Kudu 使用 Raft 共识算法实现一致性,每个 tablet 的多个副本通过 Raft 选举 leader,所有写操作由 leader 处理并复制到多数派 follower,确保线性一致性。
- 【回答框架 2】高可用方面,Kudu 通过副本冗余和故障自动恢复实现,当 leader 失效时,follower 通过选举产生新 leader,客户端自动重连,同时 tablet server 故障时,其上的 tablet 副本由其他节点中的副本继续服务。
- 【回答框架 3】数据一致性还依赖于 tablet 的拆分与合并,元数据由 master 管理,master 本身也通过 Raft 实现高可用,避免单点故障。
- 【回答框架 4】写入路径中,Kudu 采用 WAL 和 MemRowSet,写入先记录日志并复制,成功后返回客户端,保证持久性和一致性。
- 【回答框架 5】高可用性还体现在副本的 placement 策略,确保副本分布在不同故障域,降低同时失效风险。
- 【关键点 1】Kudu 通过 Raft 共识算法提供强一致性保证。
- 【关键点 2】高可用性依赖多副本和自动故障转移机制。
- 【关键点 3】master 节点通过 Raft 实现自身高可用。
- 【关键点 4】写操作需多数派确认,确保持久化。
- 【关键点 5】副本分布策略减少数据丢失风险。
- 【易错点 1】不能将 Raft 一致性误解为所有操作都强一致,Kudu 支持读一致性级别设置,某些快照读可能不强一致。
- 【易错点 2】高可用性不意味着零数据丢失,在极端故障下可能丢失少量已提交但未完全复制的数据。
- 【易错点 3】副本数过多会显著影响写入性能,需权衡一致性、可用性与成本。