突破Java面试(48)-设计可动态扩容缩的分库分表
0 Github
1 面试题
设计可动态扩容的分库分表
2 考点分析
- 选一个数据库中间件,然后深入之
- 设计分库分表的方案,要分成多少个库,每个库分成多少个表
- 基于已选的数据库中间件,以及在测试环境建立好的分库分表,能否正常执行分库分表的读写
- 完成单库单表到分库分表的迁移(使用上一文提到的双写方案)
- 线上系统,开始基于分库分表对外服务
突然! 扩容了,扩容成6个库,每个库需要12个表,你怎么来增加更多库和表呢?
这个你必须面对的事,就是当你已经弄好分库分表方案,测试也通过了,数据能均匀分布到各个库和表里去,而且接着你还通过双写方案上了系统,已经直接基于分库分表方案在搞了。
需求来了~现在这些库和表又支撑不住了,要继续扩容,咋办?
这个可能就是每个库的容量又快满了,或者表数据量又太大了,也可能每个库的写并发太高了,得继续扩容!
3 停机扩容(不推荐)
这就跟停