大纲
-
前言:为什么动态分片是分布式系统的“终极技能”?
- 绝大多数系统一开始都不会考虑分片
- 当数据量上涨后,才发现:
库表扩容、热点分布不均、租户倾斜、读写压力不均衡 - 而动态分片能让系统无需停机即可扩容、迁移、重平衡。
-
为什么静态分片不够?
- 热点数据集中
- 新租户挤在同一个分片
- 大小租户不均
- 机器扩容无法利用
- 数据迁移需要停机
-
动态分片的三大核心挑战
- 在线迁移
- 分片路由更新
- 一致性保障
-
动态分片架构核心组件
- Shard Router(分片路由)
- Metadata Store(分片元数据中心)
- Data Migrator(在线迁移器)
- Shard Balancer(均衡器)
- Versioned Routing(路由版本化)
-
关键问题与解决方案
- 如何在线迁移不影响读写?
- 如何防止分片路由切换过程中冲突?
- 如何保证迁移过程幂等?
- 如何确保源分片和目标分片数据完全一致?
-
动态分片常见策略
- 范围分片(Range-based)
- 哈希分片(Hash-based)
- 租户分片(Tenant-based)
- 混合分片(Hybrid Sharding)
-
迁移过程技术细节
- 双写模式(old+new)
- 增量同步(binlog/MQ)
- 切换观察窗口
- 自动回滚机制
-
企业案例:百万级租户库的动态分片落地
- 解决大租户热点问题
- 迁移过程无停机
- 负载均衡效果显著
-
总结
- 动态分片是大型系统的可持续生命力
- 是数据库扩容与多租户治理的最终武器