面试题答案
一键面试优化数据分片策略提升分布式缓存性能与扩展性
- 应用场景:以电商系统为例,在促销活动等高并发时段,大量商品信息及用户购物车数据需频繁读写缓存。比如双 11 期间,海量商品浏览、下单操作使得对商品详情、库存等数据的缓存访问量剧增。
- 技术细节及优化方案
- 哈希分片:
- 原理:通过哈希函数将数据映射到不同的缓存节点。例如使用一致性哈希算法,将数据 key 进行哈希计算,对应到一个哈希环上,每个缓存节点也在环上,数据根据哈希值顺时针找到最近的节点存储。
- 优点:简单易实现,能较均匀地分布数据,适合读多写少场景。
- 新问题:节点增减时,会有大量数据迁移。例如增加一个节点,哈希环需重新计算,部分数据要迁移到新节点。
- 应对措施:采用虚拟节点技术,每个物理节点对应多个虚拟节点,增加哈希环上节点数量,减少数据迁移量。
- 按范围分片:
- 原理:根据数据的某个属性范围划分到不同节点。如电商中按商品 ID 范围分片,ID 为 1 - 10000 的商品数据存到节点 A,10001 - 20000 的存到节点 B 等。
- 优点:对于范围查询友好,能减少跨节点查询开销。比如查询某类商品(ID 连续)时,可直接定位到相应节点。
- 新问题:数据分布不均匀,可能导致部分节点负载高。比如热门商品 ID 集中在某一范围,对应节点压力大。
- 应对措施:动态调整范围,根据节点负载情况,重新划分数据范围,将高负载节点的数据迁移到低负载节点。
- 按业务维度分片:
- 原理:根据业务逻辑划分数据,如电商中商品数据按类别分片,服装类存到一组节点,电子产品类存到另一组节点。
- 优点:方便管理和维护,不同业务模块可独立扩展。如服装业务增长快,可单独增加服装类数据的缓存节点。
- 新问题:可能存在跨业务维度查询复杂的问题。例如查询包含服装和电子产品的订单时,需跨多个节点获取数据。
- 应对措施:建立全局索引,记录数据在不同节点的位置,通过索引快速定位数据所在节点,减少跨节点查询开销。
- 哈希分片: