spring boot+sharding jdbc实现读写分离

shigen日更文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。

shigen之前的文章中,写到了Springboot +mybatis plus实现读写分离,没有sharding-jdbc的夹持,真的是举步维艰啊。在接触这个神器之后,发现之前的代码很难改了,于是就在前一篇文章spring boot+sharding jdbc实现分库分表的基础上再次的修改。基础的配置这里不再展开了,需要的话可以参考之前的文章。

我们先启动之前的mysql主从服务:

当然,要去检查同步的状态(一般的服务是不会随意重启的,我这是在我的mac上):

ini 复制代码
 show slave status \G;
 start slave;

发现数据是可以同步的,那目前为止,我们的主从服务搭建好了。现在我们开始写代码。

在此之前,我们已经写过了分库分表的配置,那我们要怎么区分呢?shigen是这样的设计:

yaml 复制代码
 spring:
   profiles:
     active: masterslave

这里主要是用profile来区分的,类似于spring boot的多环境配置。这也算是一个技巧,现在正式开始代码的设计。

修改配置文件

yaml 复制代码
 spring:
   shardingsphere:
     datasource:
       names: ds0, ds1
       ds0:
         type: com.alibaba.druid.pool.DruidDataSource
         driver-class-name: com.mysql.cj.jdbc.Driver
         url: jdbc:mysql://localhost:3310/test
         username: root
         password: root
       ds1:
         type: com.alibaba.druid.pool.DruidDataSource
         driver-class-name: com.mysql.cj.jdbc.Driver
         url: jdbc:mysql://localhost:3311/test
         username: root
         password: root
 ​
     sharding:
       master-slave-rules:
         masterslave:
           #主数据库,用于数据写入
           master-data-source-name: ds0
           slave-data-source-names: ds1
           #load-balance-algorithm-class-name= #从库负载均衡算法类名称。该类需实现MasterSlaveLoadBalanceAlgorithm接口且提供无参数构造器
           #从库负载均衡算法类型,可选值:ROUND_ROBIN,RANDOM。若`load-balance-algorithm-class-name`存在则忽略该配置
           load-balance-algorithm-type: RANDOM
 ​
     props:
       sql:
         show: true

额,好像也没啥吧,其实就是简单的配置,除了我们需要自定义些负载均衡算法之类的。

需要声明的是我现在主从数据库的表结构和现有的实体类字段不对应,所以会出现报错的。但是我们的预期效果是这样的:

  • 查询:走从库(ds1)
  • 添加:走主库(ds0)

测试查询

测试新增

可以看到基于我的测试,各种结果都是符合预期的。后期有实际的应用的话,我们在继续分享哈。


以上就是今天分享的全部内容了,觉得不错的话,记得点赞 在看 关注支持一下哈,您的鼓励和支持将是shigen坚持日更的动力。同时,shigen在多个平台都有文章的同步,也可以同步的浏览和订阅:

平台 账号 链接
CSDN shigen01 shigen的CSDN主页
知乎 gen-2019 shigen的知乎主页
掘金 shigen01 shigen的掘金主页
腾讯云开发者社区 shigen shigen的腾讯云开发者社区主页
微信公众平台 shigen 公众号名:shigen

shigen一起,每天不一样!

相关推荐
集成显卡7 小时前
Rust实战七 |基于带 colored 颜色文字控制台的批量文件删除工具
开发语言·后端·rust
jeffer_liu7 小时前
Spring AI 生产级实战:工具调用
java·人工智能·后端·spring·ai编程
Cosolar8 小时前
AutoGen 精通教程:从零到企业级多 Agent 系统架构师
人工智能·后端·面试
狂炫冰美式10 小时前
你还在古法PPT吗,试试HTML呢?免费编辑导出工具给 xdm 放这了
前端·后端·github
万少10 小时前
未来组织的分水岭不是员工数量,而是人才密度
前端·后端·面试
Honmaple11 小时前
终端 AI 编程的两条路:Pi 极简哲学 vs Oh-My-Pi 全能主义深度对决
后端
我是一颗柠檬11 小时前
【Redis】发布订阅与消息队列Day8(2026年)
数据库·redis·后端·缓存
道友可好11 小时前
OpenSpec:轻到起飞的 AI 编程规范层
前端·人工智能·后端
IT_陈寒11 小时前
React状态管理这个坑,我爬了整整三天才出来
前端·人工智能·后端