MST

星途 面试题库

面试题:分布式系统中数据分片的常见策略有哪些及适用场景

在分布式系统设计的数据分片规划里,阐述几种常见的数据分片策略,比如按范围分片、按哈希分片,并说明它们各自适用的业务场景。
43.0万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

按范围分片

  • 策略描述:按照数据的某个属性(如时间、ID 等)的范围进行划分,将数据分布到不同的分片。例如,按时间范围,将一年的数据按月份划分为 12 个分片,每个月的数据存储在一个分片中;或者按 ID 范围,ID 从 1 - 1000 的数据存于一个分片,1001 - 2000 的存于另一个分片。
  • 适用场景
    • 时间序列数据:如日志数据、监控数据等,这类数据按时间顺序产生,按时间范围分片方便按时间维度进行查询和分析,例如查询某一天、某一周的日志。
    • ID 有序增长数据:例如订单 ID 自增,如果按 ID 范围分片,新产生的订单总是追加到最后一个分片,便于顺序写入。同时,对于查询某个 ID 区间内的订单也比较高效。

按哈希分片

  • 策略描述:通过对数据的某个属性(通常是主键)进行哈希运算,根据哈希值将数据分配到不同的分片。比如对用户 ID 进行哈希计算,然后根据哈希结果模上分片数量,决定该用户数据存储在哪个分片。
  • 适用场景
    • 读写均衡场景:当系统对读写性能要求较高,且数据分布需要均匀时适用。因为哈希计算后的数据分布相对随机,能有效避免数据倾斜,每个分片的负载相对均衡,适用于电商系统中大量商品的存储和查询,不同用户对商品的访问请求能均匀分配到各个分片。
    • 无明显范围特征数据:对于一些没有明显范围划分依据的数据,如用户的兴趣爱好标签数据,按哈希分片能较好地实现数据分布。

按地理位置分片

  • 策略描述:根据数据所关联的地理位置信息进行分片,例如按照国家、省份、城市等地理区域来划分数据存储位置。比如将中国北方地区的用户数据存储在一个分片,南方地区的存储在另一个分片。
  • 适用场景
    • 具有地域特性业务:如本地生活服务类应用,不同地区的商家和用户数据,按地理位置分片便于根据用户所在地区快速获取相关数据,提高服务响应速度,像外卖平台按城市分片存储商家和订单数据。
    • 数据合规要求:某些地区对数据存储有法规要求,必须将本地数据存储在特定区域,按地理位置分片可满足这种合规性需求。

按业务维度分片

  • 策略描述:依据业务逻辑将数据划分到不同的分片。例如在一个综合电商系统中,将商品数据、订单数据、用户数据分别存储在不同的分片,因为这些数据在业务操作和使用频率上有不同特点。
  • 适用场景
    • 业务模块清晰且独立性强:大型综合系统中不同业务模块之间耦合度低,按业务维度分片有利于模块的独立维护、扩展和优化。比如电商系统中商品管理团队、订单处理团队、用户运营团队可分别针对自己负责的分片进行开发和维护。
    • 业务操作特性不同:不同业务数据的读写模式、数据量增长速度不同。如商品数据读多写少,订单数据读写频繁且数据量增长快,将它们分开分片便于采用不同的存储和优化策略。