
mysql实现读写分离
发布日期:2021-05-08 12:12:53
浏览次数:19
分类:精选文章
本文共 1278 字,大约阅读时间需要 4 分钟。
在项目中,我们采用了Spring AOP进行读写分离,通过动态切换数据源来提升系统性能。以下是具体实现方案:
1. AOP切面定义
我们在Service方法执行前,通过AOP切面判断方法名开头是否为"query"、"find"或"get",从而决定使用从库还是写库:
public class DataSourceAspect { @Pointcut("execution (* com.example.Service.* (..))") public void before(JoinPoint point) { String methodName = point.getSignature().getName(); if (isSlave(methodName)) { markSlave(); } else { markMaster(); } } private Boolean isSlave(String methodName) { return StringUtils.startsWithAny(methodName, "query", "find", "get"); }}
2. DynamicDataSource实现
我们定义了一个DynamicDataSource,继承自Spring的AbstractRoutingDataSource,通过实现determineCurrentLookupKey方法来获取当前数据源:
public class DynamicDataSource extends AbstractRoutingDataSource { @Override protected Object determineCurrentLookupKey() { return DynamicDataSourceHolder.getDataSourceKey(); }}
3. Target Data Sources Configuration
在Spring配置中,我们定义了多个数据源,并将它们注入目标数据源集合:
4. 数据库连接池配置
分别配置了读库和写库的连接池:
5. 数据库连接信息
配置了读库和写库的详细信息:
jdbc.master.url=jdbc:mysql://127.0.0.1:3381/taotaojdbc.slave01.url=jdbc:mysql://127.0.0.1:3380/taotao
通过以上方案,我们实现了读写分离,有效提升了数据库性能。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月06日 09时04分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
nodeJS实现识别验证码(tesseract-ocr+GraphicsMagick)
2019-03-06
玩玩小爬虫——试搭小架构
2019-03-06
AS与.net的交互——加载web上的xml
2019-03-06
Javascript之旅——第八站:说说instanceof踩了一个坑
2019-03-06
Javascript之旅——第九站:吐槽function
2019-03-06
Javascript之旅——第十一站:原型也不好理解?
2019-03-06
Sql Server之旅——第十站 看看DML操作对索引的影响
2019-03-06
十五天精通WCF——第二天 告别烦恼的config配置
2019-03-06
双十一来了,别让你的mongodb宕机了
2019-03-06
asp.net mvc 之旅 —— 第六站 ActionFilter的应用及源码分析
2019-03-06
Tomcat 热部署
2019-03-06
深入解析 HTTP 缓存控制
2019-03-06
深入浅出访问者模式
2019-03-06
深入探索Android热修复技术原理读书笔记 —— 热修复技术介绍
2019-03-06
百度前端技术学院task16源代码
2019-03-06
解析js中( ( ) { } ( ) )的含义
2019-03-06
js设计模式总结5
2019-03-06
Python大神编程常用4大工具,你用过几个?
2019-03-06
一文带你了解图神经网络
2019-03-06
9个常用ES6特性归纳(一般用这些就够了)
2019-03-06