【spring】spring AOP实现mysql读写分离
2017-09-30 17:52
176 查看
1. 背景
我们一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案,
其中一个是主库,负责写入数据,我们称之为:写库;
其它都是从库,负责读取数据,我们称之为:读库;
那么,对我们的要求是:
1、 读库和写库的数据一致;
2、 写数据必须写到写库;
3、 读数据必须到读库;
2. 方案
解决读写分离的方案有两种:应用层解决和中间件解决。
2.1应用层解决
优点:
1、 多数据源切换方便,由程序自动完成;
2、 不需要引入中间件;
3、 理论上支持任何数据库;
缺点:
1、 由程序员完成,运维参与不到;
2、 不能做到动态增加数据源;
2.2中间件解决
优缺点:
优点:
1、 源程序不需要做任何改动就可以实现读写分离;
2、 动态添加数据源不需要重启程序;
缺点:
1、 程序依赖于中间件,会导致切换数据库变得困难;
2、 由中间件做了中转代理,性能有所下降;
3. 使用Spring基于应用层实现
3.1. 原理
实现过程
在进入Service之前,使用AOP来做出判断,是使用写库还是读库,判断依据可以根据方法名判断,比如说以query、find、get等开头的就走读库,其他的走写库。
4.代码实现
主要代码结构
我们一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案,
其中一个是主库,负责写入数据,我们称之为:写库;
其它都是从库,负责读取数据,我们称之为:读库;
那么,对我们的要求是:
1、 读库和写库的数据一致;
2、 写数据必须写到写库;
3、 读数据必须到读库;
2. 方案
解决读写分离的方案有两种:应用层解决和中间件解决。
2.1应用层解决
优点:
1、 多数据源切换方便,由程序自动完成;
2、 不需要引入中间件;
3、 理论上支持任何数据库;
缺点:
1、 由程序员完成,运维参与不到;
2、 不能做到动态增加数据源;
2.2中间件解决
优缺点:
优点:
1、 源程序不需要做任何改动就可以实现读写分离;
2、 动态添加数据源不需要重启程序;
缺点:
1、 程序依赖于中间件,会导致切换数据库变得困难;
2、 由中间件做了中转代理,性能有所下降;
3. 使用Spring基于应用层实现
3.1. 原理
实现过程
在进入Service之前,使用AOP来做出判断,是使用写库还是读库,判断依据可以根据方法名判断,比如说以query、find、get等开头的就走读库,其他的走写库。
4.代码实现
主要代码结构
相关文章推荐
- Spring AOP 实现读写分离(MySQL实现主从复制)
- spring aop实现mysql读写分离(可用于SAE的mysql数据库)
- 转spring aop实现业务层mysql 读写分离
- Spring 动态数据源和AOP实现数据库读写分离
- 使用Spring+MySql实现读写分离(一)关于windows下安装mysql5.6
- 使用spring实现读写分离(mysql实现主从复制)
- 使用Spring实现读写分离( MySQL实现主从复制)
- Spring+mybatis 实现aop数据库读写分离,多数据库源配置
- 使用Spring实现读写分离( MySQL实现主从复制)
- 使用Spring实现读写分离( MySQL实现主从复制)
- Spring AOP 实现读写分离
- 使用Spring实现读写分离( MySQL实现主从复制)
- 使用Spring实现读写分离( MySQL实现主从复制)
- 基于spring的aop实现读写分离与事务配置
- 使用Spring实现读写分离(MySQL实现主从复制)
- spring集成mybatis实现mysql读写分离
- 使用Spring实现读写分离( MySQL实现主从复制)
- Spring实现读写分离MySQL实现主从复制
- 使用Spring+MySql实现读写分离(三)主从复制
- spring实现Mysql的读写分离