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

 更新时间:2019年03月11日 14:06:19   作者:猿天地  
这篇文章主要介绍了详解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/spring-cloud/tree/master/fangjia-sjdbc-read-write-springboot

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot实现快递物流查询功能(快递鸟)

    SpringBoot实现快递物流查询功能(快递鸟)

    本文将基于springboot2.4.0实现快递物流查询,物流信息的获取通过快递鸟第三方实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-10-10
  • IDEA如何导入已有Maven项目

    IDEA如何导入已有Maven项目

    导入Maven项目到IDEA时,经常遇到问题,本文记录正确步骤,首先创建空项目,然后选择Import Module from external model并选择Maven,勾选所需profiles和Maven项目,最后设置Project SDK,这样配置后,项目结构将符合预期,仅显示一个Module
    2024-11-11
  • 浅谈Java的WeakHashMap源码

    浅谈Java的WeakHashMap源码

    这篇文章主要介绍了浅谈Java的WeakHashMap源码,WeakHashMap,从名字可以看出它是某种 Map,它的特殊之处在于 WeakHashMap 里的entry可能会被GC自动删除,即使程序员没有调用remove()或者clear()方法,需要的朋友可以参考下
    2023-09-09
  • springboot操作静态资源文件的方法

    springboot操作静态资源文件的方法

    这篇文章主要介绍了springboot操作静态资源文件的方法,本文给大家提到了两种方法,小编在这里比较推荐第一种方法,具体内容详情大家跟随脚本之家小编一起看看吧
    2018-07-07
  • java实现支付宝支付接口的调用

    java实现支付宝支付接口的调用

    本文主要介绍了java实现支付宝支付接口的调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法

    IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法

    这篇文章主要介绍了IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Spring注解@Import原理解析

    Spring注解@Import原理解析

    这篇文章主要为大家介绍了Spring注解@Import原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 详解Java中PriorityQueue的作用和源码实现

    详解Java中PriorityQueue的作用和源码实现

    这篇文章主要为大家详细介绍了Java中阻塞队列PriorityQueue的作用和源码实现的相关知识,文中的示例代码讲解详细,需要的小伙伴可以了解下
    2024-02-02
  • 详解Java去除json数据中的null空值问题

    详解Java去除json数据中的null空值问题

    这篇文章主要介绍了详解Java去除json数据中的null空值问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Java Swing CardLayout卡片布局的实现示例

    Java Swing CardLayout卡片布局的实现示例

    这篇文章主要介绍了Java Swing CardLayout卡片布局的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12

最新评论