人生处万类,知识最为贤。这篇文章主要讲述#yyds干货盘点#SpringBoot + MyBatis + MySQL 实现读写分离!相关的知识,希望能为你提供帮助。
引言【#yyds干货盘点#SpringBoot + MyBatis + MySQL 实现读写分离!】读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做。因此,一般来讲,读写分离有两种实现方式。第一种是依靠中间件(比如:MyCat),也就是说应用程序连接到中间件,中间件帮我们做SQL分离;第二种是应用程序自己去做分离。这里我们选择程序自己来做,主要是利用Spring提供的路由数据源,以及AOP
然而,应用程序层面去做读写分离最大的弱点(不足之处)在于无法动态增加数据库节点,因为数据源配置都是写在配置中的,新增数据库意味着新加一个数据源,必然改配置,并重启应用。当然,好处就是相对简单。
AbstractRoutingDataSource基于特定的查找key路由到特定的数据源。它内部维护了一组目标数据源,并且做了路由key与目标数据源之间的映射,提供基于key查找数据源的方法。
实践maven依赖
<
?xml version="1.0" encoding="UTF-8"?>
<
project xmlns="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>
<
description>
<
/description>
<
parent>
<
groupId>
org.springframework.boot<
/groupId>
<
artifactId>
spring-boot-starter-parent<
/artifactId>
<
version>
2.0.5.RELEASE<
/version>
<
relativePath/>
<
!-- lookup parent from repository -->
<
/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>
<
artifactId>
commons-lang3<
/artifactId>
<
version>
3.8<
/version>
<
/dependency>
<
dependency>
<
groupId>
mysql<
/groupId>
<
artifactId>
mysql-connector-java<
/artifactId>
<
scope>
runtime<
/scope>
<
/dependency>
<
dependency>
<
groupId>
org.springframework.boot<
/groupId>
<
artifactId>
spring-boot-starter-test<
/artifactId>
<
scope>
test<
/scope>
<
/dependency>
<
/dependencies>
<
build>
<
plugins>
<
plugin>
<
groupId>
org.springframework.boot<
/groupId>
<
artifactId>
spring-boot-maven-plugin<
/artifactId>
<
/plugin>
<
!--<
plugin>
<
groupId>
org.mybatis.generator<
/groupId>
<
artifactId>
mybatis-generator-maven-plugin<
/artifactId>
<
version>
1.3.5<
/version>
<
dependencies>
<
dependency>
<
groupId>
mysql<
/groupId>
<
artifactId>
mysql-connector-java<
/artifactId>
<
version>
5.1.46<
/version>
<
/dependency>
<
/dependencies>
<
configuration>
<
configurationFile>
$basedir/src/main/resources/myBatisGeneratorConfig.xml<
/configurationFile>
<
overwrite>
true<
/overwrite>
<
/configuration>
<
executions>
<
execution>
<
id>
Generate MyBatis Artifacts<
/id>
<
goals>
<
goal>
generate<
/goal>
<
/goals>
<
/execution>
<
/executions>
<
/plugin>
-->
<
/plugins>
<
/build>
<
/project>
数据源配置
application.ymlspring:
datasource:
推荐阅读
- #yyds干货盘点# springboot整合Actuator监控
- C++学习之旅第二站(类和对象进阶)
- 微服务架构 | 10.2 使用 Papertrail 实现日志聚合
- Python 汽车之家 全系车型参数(包含历史停售车型) 最全
- 盘点下近几年退役的顶级 Apache 大数据项目 - 继 Sentry,Sqoop 之后,Ambari 正式退役
- 3结构型模式(设计模式)
- MQTT 服务器安全性测试
- JavaScript 数组常见操作
- 机器学习(数据清理介绍和详细指南)