一、读写分离架构
我们一般应用对数据库而言都是读多写少,也就是对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案:
其中一个是主库,负责写入数据,称之为:写库
其他都是从库,负责读取数据,称之为:读库
那么,对我们的要求是:
- a、读库和写库的数据一致
- b、写数据必须写到写库
- c、读数据必须到读库
从该系统架构中,可以看出: - 数据库从之前的单节点变为多节点提供服务
- 主节点数据,同步到从节点数据
- 应用程序需要连接到2个数据库节点,并且在程序内部实现判断读写操作
这种架构存在两个问题:
- a、应用程序需要连接到多个节点,对应用程序而言开发变得复杂
这个问题,可以通过中间件解决
如果在程序内部实现,可使用Spring的AOP功能实现
- b、主从之间的同步,是异步完成,也就意味着这是 弱一致性
可能会导致数据写入主库后,应用程序读取从库获取不到数据,或者可能会丢失数据,对于数据安全性要求比较高的应用是不合适的
该问题可以通过PXC集群