我是纯自己学习,属于菜鸟中的菜鸟,还请原谅问题的幼稚性。
请问一下如果数据库为了提高性能做了读写分离,假如集群是一主多从,如果主服务器的写性能达到了瓶颈时候,这个咋整?
1
javapythongo 2021-05-30 22:30:57 +08:00
分库分表
|
2
Jooooooooo 2021-05-30 22:45:21 +08:00
所以主从模式只能部分解决问题, 因为写还是单点, 写高了之后主从的模式也没辙
一般会采用两种拆分, 一种是业务隔离, 比较简单拆分不同业务到不同库里, 写自然就分散了 但业务隔离也只能解决部分问题, 单个业务没法继续拆依然会到瓶颈. 这就需要第二种方法, 分库分表 比如用户发帖记录, 按照用户 id 的尾号路由拆成 100 个库, 尾号是 00 的用户都写到第一个库里, 01 写到第二个库里, 如此类推. 这样每个库承担的写就只有原来的 1/100, 能抗更大的写入. |
3
lonelygod365 OP @Jooooooooo 非常感谢指点,大概听懂了,那么如果这个数据库是提供给多个国家的网友来使用的话,应该如何优化是比较合理的? 我可以认为每个国家都有一模一样的主从集群然后互相做备份?
|
4
wd 2021-05-31 08:52:12 +08:00 via iPhone
其实事情没有绝对
一般数据库没那么重的写,即使有,这部分写入的数据也一般不会直接给用户使用,例如会给用户看汇总之后的结果,那么可以写到其他库离线汇总之后写入到这个库,量立马就少了。 分库会带来其他问题,如果需要的数据是在多个库里面,那就必须要有一个所谓数据库中间件来合并数据,这就是另外的性能问题。 这些东西没有实战经验恐怕也不能提前预测到。 |
5
shenjinpeng 2021-05-31 09:16:07 +08:00
并发太大可以做缓存,先存 redis 等再插库 .
|