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

请详细说明 Cassandra 在写入与读取数据时,其内部路径分别经过哪些关键步骤和组件?

数据技术原理Apache Cassandra

考察说明

考查对 Cassandra 读写路径核心机制的理解,包括写入流程、读取流程及其设计目的。

回答思路

  1. 【回答框架 1】Cassandra 写路径的核心是先在内存中写入 Memtable,同时追加到 CommitLog 以保障持久性。当 Memtable 达到阈值时,会异步刷写为 SSTable,期间不阻塞写操作。写入操作会先经过分区和副本策略确定目标节点,并采用一致性级别控制成功条件(如 QUORUM)。
  2. 【回答框架 2】Cassandra 读路径首先查询 Memtable 与多个 SSTable,并通过 Bloom Filter、Partition Index 和 Compression Offset 等机制快速定位数据。随后使用 Row Cache 或 Key Cache 加速读取,并通过 Read Repair 在后台修复副本间不一致的数据。
  3. 【回答框架 3】为提高读性能,Cassandra 会合并 SSTable 中的多个版本,采用 LSM 树结构优化写入与读取的权衡。读取时需检查多个 SSTable,可能触发压缩合并以减少数据版本。
  4. 【回答框架 4】写入与读取路径均依赖一致性级别(如 ONE、QUORUM、ALL)来平衡可用性与一致性,同时引入 Hinted Handoff 处理节点临时故障,确保最终一致性。
  5. 【关键点 1】写路径涉及 Memtable、CommitLog、SSTable 异步刷写,以及基于一致性级别的确认机制。
  6. 【关键点 2】读路径通过 Bloom Filter、索引与缓存提升效率,并利用 Read Repair 保持副本一致。
  7. 【关键点 3】LSM 树结构使写入高效,但读取需跨 SSTable 合并,压缩有助于减少版本。
  8. 【关键点 4】一致性级别决定读写操作的延迟与强一致程度,需根据业务需求权衡。
  9. 【关键点 5】Hinted Handoff 在副本不可用时暂存写操作,确保最终一致。
  10. 【易错点 1】不区分 Memtable 与 CommitLog 的职责,误以为两者都直接服务查询。
  11. 【易错点 2】忽略一致性级别对读写性能与正确性的影响,将其视为固定参数。
  12. 【易错点 3】将 Read Repair 理解为同步修复,实际它可能异步触发,不影响当前读响应。