数据库读写分离技术及实现方式

在数据库的应用中,为了提高数据库的安全性,高可用性,以及业务系统对高并发的需求,除了需要使用主从复制以为,还需要使用数据库读写分离技术。

读写分离原理

所谓读写分离,即把对数据库的读取和写入(增/删/改)操作分开到不同的database server上(如下图),以提高数据库操作效率,和高并发性能。在数据库写入操作不频繁的场景中,也可以让负责写入操作的server分担一部分读取的压力。
数据库读写分离技术及实现方式_第1张图片

实现读写分离的两种方式

  1. 应用程序层面实现,即:在应用程序代码中,指定读取数据的服务器和写入数据的服务器。
    优点:
    1)安装即用;
    2)降低了一定的部署难度;
    3)访问压力在一定级别下,性能很好
    缺点:
    1)系统架构调整,程序代码就需要跟着改变;
    2)难以实现高级应用,如:分库、分表;
    3)不适用于大型应用场景。

  2. 使用专门的中间件实现.
    优点:
    1)系统架构设计更灵活;
    2)可以实现一些高级控制,如:failover,监控,透明化水平拆分等。
    3)可以使用一些技术手段提高mysql的性能。
    4)对业务代码影响小,并且更安全。
    缺点:
    需要一定的开发运维团队支持。

常见的中间件

  1. Mycat,社区爱好者在阿里Cobar的基础上二次开发的版本。
  2. Cobar,阿里开发的中间件,管理间件3000个mysql实例。
  3. Oneproxy,支付宝团队基于mysql官方proxy思想,使用c语言编写的一款商业收费中间件,注重性能和稳定性。
  4. Atlas,360团队基于mysql官方proxy思想,使用c语言编写的一款中间件,高并发下可能不稳定。
  5. Kingshared,前360Atlas团队成员使用GO语言编写,正在完善中。(2019年)

你可能感兴趣的:(集群)