Spring Boot中整合Sharding

在我《Spring Cloud微服务-全栈技术与案例解析》书中,第18章节分库分表解决方案里有对Sharding-JDBC的使用进行详细的讲解。

之前是通过XML方式来配置数据源,读写分离策略,分库分表策略等,之前有朋友也问过我,有没有Spring Boot的方式来配置,既然已经用Spring Boot还用XML来配置感觉有点不协调。

其实吧我个人觉得只要能用,方便看,看的懂就行了,mybatis的SQL不也是写在XML中嘛。

今天就给大家介绍下Spring Boot方式的使用,主要讲解读写分离的配置,其余的后面再介绍。

所谓的Spring Boot方式就是直接可以通过属性文件或者YAML文件来配置上面我们提到的那些信息。

主要还是用shardingjdbc提供的starter,配置如下:

1<dependency> 2 <groupId>io.shardingjdbc</groupId> 3 <artifactId>sharding-jdbc-spring-boot-starter</artifactId> 4 <version>2.0.0.M3</version> 5</dependency>

配置内容如下:

1server.port=8084 2 3mybatis.config-location=classpath:META-INF/mybatis-config.xml 4 5sharding.jdbc.datasource.names=ds_master,ds_slave 6 7# 主数据源 8sharding.jdbc.datasource.ds_master.type=com.alibaba.druid.pool.DruidDataSource 9sharding.jdbc.datasource.ds_master.driver-class-name=com.mysql.jdbc.Driver 10sharding.jdbc.datasource.ds_master.url=jdbc:mysql://localhost:3306/ds_0?characterEncoding=utf-8 11sharding.jdbc.datasource.ds_master.username=root 12sharding.jdbc.datasource.ds_master.password=123456 13 14# 从数据源 15sharding.jdbc.datasource.ds_slave.type=com.alibaba.druid.pool.DruidDataSource 16sharding.jdbc.datasource.ds_slave.driver-class-name=com.mysql.jdbc.Driver 17sharding.jdbc.datasource.ds_slave.url=jdbc:mysql://localhost:3306/ds_1?characterEncoding=utf-8 18sharding.jdbc.datasource.ds_slave.username=root 19sharding.jdbc.datasource.ds_slave.password=123456 20 21# 读写分离配置 22sharding.jdbc.config.masterslave.load-balance-algorithm-type=round_robin 23sharding.jdbc.config.masterslave.name=dataSource 24sharding.jdbc.config.masterslave.master-data-source-name=ds_master 25sharding.jdbc.config.masterslave.slave-data-source-names=ds_slave 26
  • 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/spring-cloud/tree/master/fangjia-sjdbc-read-write-springboot

欢迎加入我的知识星球,一起交流技术,免费学习猿天地的课程(http://cxytiandi.com/course)

微信扫码加入猿天地知识星球

猿天地

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )