一、数据库读写分离
读写分离的基本原理是将数据库读写操作分散到不同的节点上,下面是基本架构图:
读写分离的基本实现是:
数据库服务器搭建主从集群,一主一从或者一主多从;
数据库主机负责读写操作,从机只负责读操作;
数据库主机通过复制将数据同步到从机,每台数据库服务器都存储了所有的业务数据;
业务服务器将写操作发给数据库主机,将读操作发给数据库从机。
二、读写分离的分配怎么实现
1、程序代码封装
程序代码封装指在代码中抽象一个数据访问层(也叫中间层封装),实现读写操作分离和数据库服务器连接的管理。
例如基于Hibernate进行简单的封装,就可以实现读写分离:
目前开源的实现方案中,淘宝的TDDL(Taobao Distributed Data Layer,外号:头都大了)是比较有名的。
2、中间件封装
中间件封装指的是独立一套系统出来,实现读写操作分离和数据库服务器连接的管理。中间件对业务服务器提供SQL兼容的协议,业务服务器无须自己进行读写分离。
对于业务服务器来说,访问中间件和访问数据库没有区别,事实上在业务服务器看来,中间件就是一个数据库服务器。
其基本架构是: