背景
在用户访问量增大的时候,网络 & 数据库I/O就会成为瓶颈,我们需要想一些办法来降低接口耗时从而提高QPS
方案
把单次读写存储/收发消息操作改成批量操作
目的:减少网络耗时
使用缓存 & 为高量级的数据读取做缓存预加载机制
目的:利用内存读取替代磁盘IO,减少磁盘IO次数,从而降低读取耗时
读写分离
目的:通过对用户访问的数据分析,一定是读数据库的量要远远大于写数据库的量,这时读就成为瓶颈。读请求一定程度上会阻塞写请求。
而读写的可靠性级别也是不一样的,写的可靠性要求会更高,针对读写的不同的要求,进行数据库的读写分离
注
使用带过期时间的缓存可以解决主从同步延迟的问题
分库分表
水平分表
水平分表可以很好缓解大量数据存储的问题。
在单表数据量很大的情况下,即使使用了索引, 检索也会很慢. 比如mysql上千万条数据时,使用索引性能也开始下降了
这时候水平分表,那么每张表只有500万数据,可以很好解决索引瓶颈问题.