请说明 Cassandra 中数据分片的机制,以及该机制如何支撑集群的分布式存储能力。
考察说明
考查对 Cassandra 分布式存储核心机制——一致性哈希与虚拟节点的理解。
回答思路
- 【回答框架 1】Cassandra 采用一致性哈希进行数据分片。每个数据行由主键(Partition Key)通过哈希函数映射到 0 到 2^127-1 的环上,每个节点负责一段连续范围,数据按哈希值落入对应节点范围,从而分布式存储。
- 【回答框架 2】每个节点可配置多个虚拟节点(vnode),将环划分为更多更小的片段。vnode 使数据分布更均匀,节点加入或退出时,负载均衡和迁移成本更低,也便于异构节点分配不同权重。
- 【回答框架 3】副本策略(如 NetworkTopologyStrategy)决定每个分片的副本放置:同一份数据会复制到多个节点,且不同机架/数据中心放置,提升容错与可用性。写入时根据一致性级别(如 QUORUM)确认副本数,读取时协调节点从多个副本合并结果。
- 【回答框架 4】当节点变更时,环上范围会动态调整,数据通过流式传输迁移到新节点,期间采用 Hinted Handoff 等机制补偿短暂不可用的节点,保证最终一致性。整个环的元数据由 Gossip 协议传播,客户端通过协调节点路由请求。
- 【关键点 1】一致性哈希将主键哈希到环上,节点负责环的连续区间。
- 【关键点 2】虚拟节点(vnode)提高数据均匀性与扩展性,降低迁移成本。
- 【关键点 3】副本策略决定数据冗余与跨数据中心放置。
- 【关键点 4】节点增减时自动重新分配范围并迁移数据。
- 【关键点 5】Gossip 协议维护集群元数据,客户端请求由协调节点路由。
- 【易错点 1】分片后存储位置由哈希决定,不支持按主键范围高效扫描,设计时需避免依赖范围查询。
- 【易错点 2】虚拟节点数过少可能导致数据倾斜,过多会增加元数据开销,需权衡。
- 【易错点 3】仅靠分片无法保证数据一致性,必须结合副本策略与一致性级别配置。