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

请描述 Cassandra 在写入路径中如何实现高可用性和容错,包括其副本策略、协调者角色、Hinted Handoff 机制以及数据持久化到 commit log 和 memtable 的过程。

数据风险判断技术原理Apache Cassandra

考察说明

考查对 Cassandra 分布式写入高可用与容错核心机制的理解。

回答思路

  1. 【回答框架 1】Cassandra 采用分区与副本策略,副本数由 Replication Factor 决定,数据按分区键哈希分布到多个节点,每个分区在多个节点上存副本。写入请求由协调者节点处理,协调者根据一致性级别(如 QUORUM)决定等待多少副本确认。
  2. 【回答框架 2】写入首先追加到 commit log(预写日志)确保持久性,然后写入 memtable(内存表)。commit log 防止节点崩溃时数据丢失,memtable 定期刷写为 SSTable。
  3. 【回答框架 3】高可用通过 Hinted Handoff 实现:若某个副本节点不可用,协调者会本地保存写提示(hint),待该节点恢复后重放。默认超时 3 小时,若超时未恢复,数据可能需通过修复机制(如 read repair 或 nodetool repair)补偿。
  4. 【回答框架 4】容错还依赖故障检测和 gossip 协议,节点状态变化被传播。同时,一致性级别可调整,如 ONE、QUORUM、ALL,影响可用性与一致性权衡。写入请求在副本确认前不会返回成功,协调者负责处理超时和重试。
  5. 【关键点 1】副本策略决定数据分布,协调者负责路由和等待确认。
  6. 【关键点 2】commit log 保证持久性,memtable 缓冲写入。
  7. 【关键点 3】Hinted Handoff 提供临时高可用,恢复后重放写提示。
  8. 【关键点 4】一致性级别(如 QUORUM)权衡可用性与一致性。
  9. 【关键点 5】gossip 协议维护节点状态,支持容错。
  10. 【易错点 1】不要将 Hinted Handoff 视为持久化保证,超时或节点长时间故障可能丢失提示,需依赖修复机制。
  11. 【易错点 2】不要认为 ALL 级别总能提高可靠性,它牺牲可用性,当任何副本不可用时写入失败。
  12. 【易错点 3】commit log 虽持久,但仅追加,不提供随机读,可能误解其作用。