面试题答案
一键面试按范围分片
- 策略阐述:按照数据的某个属性值范围进行划分,例如按时间范围(如按年份将订单数据分片),或按数值范围(如用户ID小于10000的为一片,大于10000的为另一片)。
- 与高可用性结合:每个分片可以配置主从复制,通过增加从库数量提高读性能和容灾能力。当主分片出现故障时,可通过主从切换使从分片晋升为主分片,保障服务继续可用。
- 优点:
- 数据分布直观,便于管理和维护,查询时可以快速定位到特定分片。
- 适合数据按范围增长的场景,如时间序列数据。
- 缺点:
- 可能导致数据分布不均匀,部分分片负载过高,如某些时间段数据量远大于其他时间段。
- 范围扩展时,数据迁移复杂,可能影响服务。
按哈希分片
- 策略阐述:对数据的某个属性(如用户ID)进行哈希计算,根据哈希值将数据分配到不同分片。常见的是取模运算,如对分片数量取模,决定数据归属的分片。
- 与高可用性结合:同样采用主从复制机制,每个分片设置主从结构。由于哈希计算的随机性,每个分片负载相对均衡,在某一分片故障时,其他分片可继续提供服务,降低系统整体不可用风险。
- 优点:
- 数据分布均匀,负载均衡效果好,能充分利用各个分片的资源。
- 扩展性强,新增或减少分片时,数据迁移相对简单,只需重新计算哈希值并迁移部分数据。
- 缺点:
- 数据定位依赖哈希计算,不便于按范围查询,如需范围查询可能需要扫描多个分片。
- 哈希算法选择不当可能导致数据倾斜,某些分片数据量过大。