读写分离


发布时间:2020-05-15 18:55:53 | 来源: | 编辑整理:超管

读写分离是用来解决数据库的读性能瓶颈的

读写分离是通过多个读库,分摊了数据库读的压力,而存储则是通过缓存的使用,减少了数据库读的压力。他们没有谁替代谁的说法,
但是,如果在缓存的读写分离进行二选一时,还是应该首先考虑缓存。

如果我们已经运用了缓存,但是读依旧还是瓶颈时,就可以选择“读写分离”架构了。简单来说,我们可以将读写分离看做是缓存都解决不了时的一种解决方案。

对于缓存,我们必须要考虑的就是高可用,不然,如果缓存一旦挂了,所有的流量都同时聚集到了数据库上,那么数据库是肯定会挂掉的。


其实是数据容量的瓶颈。例如订单表,数据量只增不减,历史数据又必须要留存,非常容易成为性能的瓶颈,而要解决这样的数据库瓶颈问题,“读写分离”和缓存往往都不合适,最适合的是数据库水平切分.


数据库水平切分,也是一种常见的数据库架构,是一种通过算法,将数据库进行分割的架构。一个水平切分集群中的每个数据库,通常称为一个“分片”。每一个分片中的数据没有重合,所有分片中的数据并集组成全部数据。

大部分的互联网业务,数据量都非常大,单库容量最容易成为瓶颈,当单库的容量成为了瓶颈,我们希望提高数据库的写性能,降低单库容量的话,就可以采用水平切分了。

而有少部分程序员,会没有分析数据库的性能瓶颈是什么,就贸贸然的使用“读写分离”,殊不知“水平切分”才是正道。

从库可配置myisam引擎


1.资源。能静态实现的就静态实现,静态资源也要尽量使用分布式存储,例如云存储。
2.效率。PHP代码里,尽量注意内存的使用,单个脚本的运行效率要Ok.
3.缓存。使用memcache来实现非持久存储,使用no-sql来实现持久存储。
4.server。使用nginx+fpm或者nginx+apache,来实现动静态分离访问。
5.mysql。作为最终的存储库以及一些不可避免的实时调用库,做主从处理,Master+多Slave,多个只读副本来实现实时的调用库。
6.负载。建议架设一层负载均衡,来实现web server的轮询。例如云平台中的LBS。





当别人问你:“做过高并发吗?”回答者完全可以描述自己系统的各项指标,然后开始叙述自己对系统中对预防、解决并发问题作出的思考和行动。