<bean id="datasource" mysql_SpringBoot+MyBatis+MySQL读写分离(实例)

原标题:SpringBoot+MyBatis+MySQL读写分离(实例)

49ed4f7c7959965f20e3b291e4311f13.png

作者:狂乱的贵公子

1. 引言

读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做。因此,一般来讲,读写分离有两种实现方式。第一种是依靠中间件(比如:MyCat),也就是说应用程序连接到中间件,中间件帮我们做SQL分离;第二种是应用程序自己去做分离。这里我们选择程序自己来做,主要是利用Spring提供的路由数据源,以及AOP。

然而,应用程序层面去做读写分离最大的弱点(不足之处)在于无法动态增加数据库节点,因为数据源配置都是写在配置中的,新增数据库意味着新加一个数据源,必然改配置,并重启应用。当然,好处就是相对简单。

deb8a963d0a8f1deaa9e33c5f6d0f340.png

2. AbstractRoutingDataSource

基于特定的查找key路由到特定的数据源。它内部维护了一组目标数据源,并且做了路由key与目标数据源之间的映射,提供基于key查找数据源的方法。

8802aaea067182afbe101d359829295b.png

3. 实践

关于配置请参考:

3.1. maven依赖

< projectxmlns= "http://maven.apache.org/POM/4.0.0"xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

< modelVersion>4.0.0 modelVersion>

< groupId>com.cjs.example groupId>

< artifactId>cjs-datasource-demo artifactId>

< version>0.0.1-SNAPSHOT version>

< packaging>jar packaging>

< name>cjs-datasource-demo name>

< deion> deion>

< parent>

< groupId>org.springframework.boot groupId>

< artifactId>spring-boot-starter-parent artifactId>

< version>2.0.5.RELEASE version>

< relativePath/>

parent>

< properties>

< project.build.sourceEncoding>UTF-8 project.build.sourceEncoding>

< project.reporting.outputEncoding>UTF-8 project.reporting.outputEncoding>

< java.version>1.8 java.version>

properties>

< dependencies>

< dependency>

< groupId>org.springframework.boot groupId>

< artifactId>spring-boot-starter-aop artifactId>

dependency>

< dependency>

< groupId>org.springframework.boot groupId>

< artifactId>spring-boot-starter-jdbc artifactId>

dependency>

< dependency>

< groupId>org.springframework.boot groupId>

< artifactId>spring-boot-starter-web artifactId>

dependency>

< dependency>

< groupId>org.mybatis.spring.boot groupId>

< artifactId>mybatis-spring-boot-starter artifactId>

< version>1.3.2 version>

dependency>

< dependency>

< groupId>org.apache.commons groupId>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值