SpringBoot多数据源配置:tech-pdai-spring-demos中的主从分离与读写分离实现
SpringBoot多数据源配置tech-pdai-spring-demos中的主从分离与读写分离实现【免费下载链接】tech-pdai-spring-demosSpring Framework5/SpringBoot 2.5.x Demos项目地址: https://gitcode.com/gh_mirrors/te/tech-pdai-spring-demos在现代应用开发中数据库性能是系统稳定性的关键因素之一。随着业务增长单一数据库往往难以承受高并发访问压力。SpringBoot多数据源配置通过主从分离与读写分离策略能有效提升系统吞吐量和数据安全性。本文将以tech-pdai-spring-demos项目为基础详解如何在SpringBoot中实现这一架构。 核心概念什么是主从分离与读写分离主从分离是指将数据库分为主库Master和从库Slave主库负责处理写操作INSERT/UPDATE/DELETE从库负责处理读操作SELECT读写分离则是在应用层实现SQL操作的路由逻辑自动将写请求分发到主库读请求分发到从库。这种架构的优势在于减轻主库压力避免读写冲突从库可水平扩展提升读操作并发能力数据备份更安全支持故障自动切换 项目中的实现方案Sharding-JDBC集成tech-pdai-spring-demos项目通过Sharding-JDBC实现多数据源管理这是一款轻量级分布式数据库中间件无需额外部署服务即可实现读写分离。核心实现位于246-springboot-demo-shardingjdbc-jpa-masterslave模块。1️⃣ 数据源配置application.yml在配置文件中定义主从数据源信息及路由规则spring: shardingsphere: datasource: names: master,slave0 # 数据源名称列表 master: # 主库配置 type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/test_db_sharding_master?allowPublicKeyRetrievaltrueuseSSLfalse username: test password: bfXa4Pt2lUUScy8jakXf slave0: # 从库配置 type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/test_db_sharding_slave0?allowPublicKeyRetrievaltrueuseSSLfalse username: test password: bfXa4Pt2lUUScy8jakXf master-slave: # 主从规则配置 name: ms # 主从数据源名称 load-balance-algorithm-type: round_robin # 负载均衡算法轮询 master-data-source-name: master # 主库数据源名称 slave-data-source-names: slave0 # 从库数据源名称列表 props: sql: show: true # 显示SQL执行日志2️⃣ 关键配置解析✅ 数据源命名与类型通过names属性定义所有数据源标识master/slave0使用HikariCP连接池SpringBoot默认提供高效连接管理✅ 负载均衡策略load-balance-algorithm-type: round_robin支持的算法包括ROUND_ROBIN轮询从库RANDOM随机选择从库自定义算法实现MasterSlaveLoadBalanceAlgorithm接口✅ SQL日志开关props: sql: show: true开启后可在控制台查看SQL执行详情包括路由到的数据源信息便于调试。 快速上手项目实战步骤1️⃣ 环境准备# 克隆项目 git clone https://gitcode.com/gh_mirrors/te/tech-pdai-spring-demos cd tech-pdai-spring-demos/246-springboot-demo-shardingjdbc-jpa-masterslave2️⃣ 数据库配置创建主库test_db_sharding_master和从库test_db_sharding_slave0配置主从复制参考MySQL官方文档修改application.yml中的数据库连接信息3️⃣ 核心依赖项目通过Maven管理依赖关键依赖如下pom.xml!-- Sharding-JDBC核心依赖 -- dependency groupIdorg.apache.shardingsphere/groupId artifactIdsharding-jdbc-spring-boot-starter/artifactId version4.1.1/version /dependency !-- JPA支持 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-jpa/artifactId /dependency4️⃣ 业务代码示例实体类定义Entity Table(name tb_user) public class User extends BaseEntity { private String username; private String password; // getter/setter省略 }DAO层接口public interface IUserDao extends JpaRepositoryUser, Long, JpaSpecificationExecutorUser { // 继承JpaRepository后自动获得CRUD能力 OptionalUser findByUsername(String username); }Service层实现Service Transactional public class UserDoServiceImpl extends BaseDoServiceImplUser, Long implements IUserService { Autowired private IUserDao userDao; Override public User saveUser(User user) { // 写操作自动路由到主库 return userDao.save(user); } Override public OptionalUser findByUsername(String username) { // 读操作自动路由到从库 return userDao.findByUsername(username); } }⚙️ 高级特性与扩展1️⃣ 多从库扩展如需增加从库只需在配置中添加新数据源并更新从库列表spring: shardingsphere: datasource: names: master,slave0,slave1 # 新增slave1 # slave1数据源配置省略 master-slave: slave-data-source-names: slave0,slave1 # 添加新从库2️⃣ 自定义路由策略通过实现MasterSlaveLoadBalanceAlgorithm接口自定义负载均衡逻辑public class CustomLoadBalanceAlgorithm implements MasterSlaveLoadBalanceAlgorithm { Override public String getDataSource(String name, String masterDataSourceName, ListString slaveDataSourceNames) { // 自定义路由规则 return slaveDataSourceNames.get(ThreadLocalRandom.current().nextInt(slaveDataSourceNames.size())); } }在配置中引用自定义算法master-slave: load-balance-algorithm-class-name: tech.pdai.springboot.shardingjdbc.jpa.masterslave.config.CustomLoadBalanceAlgorithm 总结与最佳实践tech-pdai-spring-demos项目中的246-springboot-demo-shardingjdbc-jpa-masterslave模块提供了完整的主从分离实现通过Sharding-JDBC实现零侵入式的读写分离。实际应用中建议监控主从延迟定期检查从库同步状态避免读取到过期数据合理设置连接池根据业务压力调整HikariCP参数如maximum-pool-size读写分离注解对特殊场景使用Master注解强制走主库读性能测试通过JMeter等工具验证读写分离效果通过这种架构应用可轻松应对高并发场景同时为后续分库分表扩展奠定基础。更多实现细节可参考项目源码中的src/main/java/tech/pdai/springboot/shardingjdbc/jpa/masterslave目录。【免费下载链接】tech-pdai-spring-demosSpring Framework5/SpringBoot 2.5.x Demos项目地址: https://gitcode.com/gh_mirrors/te/tech-pdai-spring-demos创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Kubernetes Ingress Controller 对比:Nginx、Traefik 和 Envoy 的选型逻辑

Kubernetes Ingress Controller 对比:Nginx、Traefik 和 Envoy 的选型逻辑

Kubernetes Ingress Controller 对比:Nginx、Traefik 和 Envoy 的选型逻辑 一、入口层的十字路口:Ingress Controller 选错的代价 集群流量入口是整个系统的咽喉。Ingress Controller 不仅是反向代理,它决定了 TLS 终端策略、路由更新延迟、可…

2026/10/11 19:56:37 阅读更多 →
安卓基础-相对布局

安卓基础-相对布局

一、相对布局核心定位原理与属性分类相对布局的核心逻辑十分简单:所有控件的位置都不固定,通过选取指定参照物来确定自身坐标位置。这种定位方式摆脱了线性布局的流式排布限制,可自由实现控件错落、对齐、居中各类布局效果。为了方便开发使用…

2026/10/9 8:11:08 阅读更多 →
AI 基础设施选型的底层逻辑:不要追新,要追合适

AI 基础设施选型的底层逻辑:不要追新,要追合适

AI 基础设施选型的底层逻辑:不要追新,要追合适 一、选型焦虑的本质:在不确定中寻找确定性 AI 基础设施的选型有一种特有的焦虑感——每个月都有新框架、新范式、新论文出来,三个月前选的技术栈在下一次发布时可能就不算"最佳…

2026/10/10 12:27:48 阅读更多 →

最新新闻

Fontsource 字体解析:Amarante —— 基于 Art Nouveau 的中等对比度展示字体

Fontsource 字体解析:Amarante —— 基于 Art Nouveau 的中等对比度展示字体

前端CLI开发工具 【免费下载链接】fontsource Self-host Open Source fonts in neatly bundled NPM packages. 项目地址: https://gitcode.com/gh_mirrors/fo/fontsource 点击查看 免费下载 Amarante 是 Fontsource 注册表中收录的 Google 系字体之一,由…

2026/10/15 5:39:22 阅读更多 →
372.高通 EDL Sahara/Firehose 协议详解,安卓黑砖救砖 + 分区镜像校验实战源码

372.高通 EDL Sahara/Firehose 协议详解,安卓黑砖救砖 + 分区镜像校验实战源码

摘要 本文面向具备基础计算机操作能力的开发者与维修人员,系统性地阐述安卓设备刷机与维修的底层逻辑。文章从BootROM到Android系统的启动链路出发,深入解析Fastboot与EDL两种核心刷机协议的通信机制,结合真实变砖救援案例,提供完整的操作流程与可运行的Python自动化脚本。…

2026/10/15 5:39:22 阅读更多 →
直流偏磁下变压器励磁电流谐波分析:Simulink仿真与FFT指南

直流偏磁下变压器励磁电流谐波分析:Simulink仿真与FFT指南

简介:这份文档是重庆邮电大学自动化学院/工业互联网学院学生在“复杂电气工程系统设计”课程中完成的A等实验报告,主题聚焦直流偏磁下变压器励磁电流谐波分析。报告从地磁风暴与高压直流输电两大现实场景切入,系统阐述直流偏磁的产生机理、对…

2026/10/15 5:39:22 阅读更多 →
基于SSM的门面商铺租赁管理系统设计与实现

基于SSM的门面商铺租赁管理系统设计与实现

每年到这个时间点,总有准备毕设的同学来问:JavaWeb方向到底选什么题目,既能体现技术功底,又不至于把自己逼到绝路。如果你正在“基于SSM的门面商铺租赁管理系统”这个题目上犹豫,我直接说结论:这是一个非常…

2026/10/15 5:39:22 阅读更多 →
MutationObserver:高效监控DOM变化的现代API

MutationObserver:高效监控DOM变化的现代API

1. MutationObserver 基础解析MutationObserver 是现代浏览器提供的原生API,用于监测DOM树中的节点变化。与传统的Mutation Events相比,它具有显著的性能优势:异步触发机制避免频繁回调导致的性能问题批量处理DOM变更,减少不必要的…

2026/10/15 5:39:22 阅读更多 →
Multi-Agent系统Tracing实战:从线上事故到执行链记录体系

Multi-Agent系统Tracing实战:从线上事故到执行链记录体系

1. 从一次线上事故说起:为什么Multi-Agent系统必须做Tracing去年冬天,我们团队上线了一套基于多智能体协作的自动化内容处理系统,四个Agent分别负责信息抽取、逻辑校验、格式转换和最终输出。上线第三天,运营同学反馈说有一批文档…

2026/10/15 5:38:22 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →