乐趣区

Spring Boot中整合Sharding-JDBC读写分离示例

在我《Spring Cloud 微服务 - 全栈技术与案例解析》书中,第 18 章节分库分表解决方案里有对 Sharding-JDBC 的使用进行详细的讲解。
之前是通过 XML 方式来配置数据源,读写分离策略,分库分表策略等,之前有朋友也问过我,有没有 Spring Boot 的方式来配置,既然已经用 Spring Boot 还用 XML 来配置感觉有点不协调。
其实吧我个人觉得只要能用,方便看,看的懂就行了,mybatis 的 SQL 不也是写在 XML 中嘛。
今天就给大家介绍下 Spring Boot 方式的使用,主要讲解读写分离的配置,其余的后面再介绍。
所谓的 Spring Boot 方式就是直接可以通过属性文件或者 YAML 文件来配置上面我们提到的那些信息。
主要还是用 shardingjdbc 提供的 starter,配置如下:
<dependency>
<groupId>io.shardingjdbc</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>2.0.0.M3</version>
</dependency>
配置内容如下:
server.port=8084

mybatis.config-location=classpath:META-INF/mybatis-config.xml

sharding.jdbc.datasource.names=ds_master,ds_slave

# 主数据源
sharding.jdbc.datasource.ds_master.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.ds_master.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.ds_master.url=jdbc:mysql://localhost:3306/ds_0?characterEncoding=utf-8
sharding.jdbc.datasource.ds_master.username=root
sharding.jdbc.datasource.ds_master.password=123456

# 从数据源
sharding.jdbc.datasource.ds_slave.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.ds_slave.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.ds_slave.url=jdbc:mysql://localhost:3306/ds_1?characterEncoding=utf-8
sharding.jdbc.datasource.ds_slave.username=root
sharding.jdbc.datasource.ds_slave.password=123456

# 读写分离配置
sharding.jdbc.config.masterslave.load-balance-algorithm-type=round_robin
sharding.jdbc.config.masterslave.name=dataSource
sharding.jdbc.config.masterslave.master-data-source-name=ds_master
sharding.jdbc.config.masterslave.slave-data-source-names=ds_slave

sharding.jdbc.config.masterslave.load-balance-algorithm-type
查询时的负载均衡算法,目前有 2 种算法,round_robin(轮询)和 random(随机),算法接口是 io.shardingjdbc.core.api.algorithm.masterslave.MasterSlaveLoadBalanceAlgorithm。实现类有 RandomMasterSlaveLoadBalanceAlgorithm 和 RoundRobinMasterSlaveLoadBalanceAlgorithm。
sharding.jdbc.config.masterslave.master-data-source-name
主数据源名称
sharding.jdbc.config.masterslave.slave-data-source-names
从数据源名称,多个用逗号隔开
就是这么简单,整个流程结束,下面就是写代码测试读写分离的效果了,我这边用的 mybatis,代码在我的 Github 上,文章中就不贴出来了,大家都会。
参考代码:https://github.com/yinjihuan/…
欢迎加入我的知识星球,一起交流技术,免费学习猿天地的课程(http://cxytiandi.com/course)

退出移动版