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/7/29 18:45:58 阅读更多 →
安卓基础-相对布局

安卓基础-相对布局

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

2026/7/29 18:45:58 阅读更多 →
AI 基础设施选型的底层逻辑:不要追新,要追合适

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

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

2026/7/29 18:45:58 阅读更多 →

最新新闻

技术路线的制定逻辑与实践应用指南

技术路线的制定逻辑与实践应用指南

搞科研的大家!找英文文献依然是科研路上最头疼的一道坎儿吧? 尤其是现在AI工具层出不穷,老工具也在不断升级,选对平台能省下大把时间。今天我给大家盘点8个好用的英文文献检索网站,涵盖传统权威平台 新一代AI智能工具…

2026/7/29 18:59:04 阅读更多 →
市场知名的仿生木皮公司口碑

市场知名的仿生木皮公司口碑

在家装的漫漫征途中,我们总是在寻找一种能将自然与艺术完美融合的材料,让家成为心灵的栖息之所。而仿生木皮,无疑是近年来家装界的一颗璀璨明星。今天,就让我们一同走进博诺狮仿生木皮(863大漠孤烟)的成品家…

2026/7/29 18:59:04 阅读更多 →
花仙子科技干货分享|小游戏开发常用引擎科普(新手必看)

花仙子科技干货分享|小游戏开发常用引擎科普(新手必看)

刚上手做小游戏,最让人抓狂的绝对是挑引擎。这玩意儿就跟盖房子打地基一样,要是没选对,后面写代码、调性能绝对能把你折腾得怀疑人生。今天我就把以前踩过的坑、攒下的经验都掏出来给大家盘一盘,希望能帮新手朋友们少绕点远路。 …

2026/7/29 18:59:04 阅读更多 →
ComfyUI-WanVideoWrapper:突破AI长视频生成的内存瓶颈,10分钟生成41秒高质量视频

ComfyUI-WanVideoWrapper:突破AI长视频生成的内存瓶颈,10分钟生成41秒高质量视频

ComfyUI-WanVideoWrapper:突破AI长视频生成的内存瓶颈,10分钟生成41秒高质量视频 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 在AI视频生成领域,最令人头疼…

2026/7/29 18:59:04 阅读更多 →
AG Kit版本迁移:从旧版升级到Antigravity-native的完整指南

AG Kit版本迁移:从旧版升级到Antigravity-native的完整指南

AG Kit版本迁移:从旧版升级到Antigravity-native的完整指南 【免费下载链接】ag-kit 项目地址: https://gitcode.com/GitHub_Trending/an/ag-kit AG Kit是一款模块化AI代理工具包(Modular AI Agent Toolkit),本指南将帮助…

2026/7/29 18:59:03 阅读更多 →
“益生菌酸奶如何影响大脑?8周随机试验揭示海马区变化”

“益生菌酸奶如何影响大脑?8周随机试验揭示海马区变化”

Gut随机试验:益生菌酸奶与海马信号出现哪些读数 点击蓝字关注我们 导读 **📚 文献信息:**Marx W 等|Gut|2025|8周三盲随机安慰剂对照试验 https://doi.org/10.1136/gutjnl-2025-335398。这篇文献聚焦&am…

2026/7/29 18:58:03 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻