数据分片与一致性哈希:从"大仓库"到"分布式仓库"
你家门口的小卖部:
- 一个大仓库
- 什么都有
- 找东西简单
但如果是亚马逊的仓库呢?
- 无数个仓库
- 分布在各地
- 同一类商品可能分散在不同仓库
数据分片就是解决"海量数据放哪"的问题。
为什么要分片?
1. 单库瓶颈
数据量太大:
单表 > 1000万行 → 查询变慢 单库 > 1TB → 备份变慢 单库 > 10000 QPS → 扛不住解决方案:
- 优化索引 → 效果有限
- 读写分离 → 解决读性能,写还是瓶颈
- 分库分表 → 根本解决方案
2. 分片的核心问题
三个问题:
- 数据怎么分?→ 分片策略
- 请求怎么路由?→ 路由算法
- 节点怎么扩缩容?→ 数据迁移