当前位置: 首页 > news >正文

sharding jdbc的使用,如何在Spring中实现数据库的主从分离、分库分表等功能

使用Sharding-JDBC就可以了,它是一个 轻量级的 Java JDBC 层中间件,用于实现分库分表、读写分离、分布式事务等功能,而且对于我们经常使用的mybatis之类的是兼容的。
以下用一个两主两从数据库作样例,因为这样既能分库分表,又能读写分离
不过当数据量和读写流量较小的时候,请谨慎评估是否需要分库分表和读写分离,然后再决定具体要采用下面这个application.yml里的哪些策略
只要在application.yml里配置好如下内容即可:

application.yml 配置说明:spring:shardingsphere:datasource:names: ds0, ds1, ds0_slave, ds1_slave # 声明所有数据源的逻辑名称(主库和从库)ds0:url: jdbc:mysql://localhost:3306/db0username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverds0_slave:url: jdbc:mysql://localhost:3307/db0username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverds1:url: jdbc:mysql://localhost:3306/db1username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverds1_slave:url: jdbc:mysql://localhost:3307/db1username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverrules:sharding:tables: # 分库分表的配置order: # 逻辑表order,因为你分库分表后可能order表实际上有多个,比如ds0.order_0、ds0.order_1、ds1.order_0、ds1.order_1actual-data-nodes: ds$->{0..1}.order_$->{0..1} # 指定它的真实物理表集合table-strategy: # 定义分表策略是按照order_idstandard:sharding-column: order_id # 逻辑表 order_itemsharding-algorithm-name: order-inline # 定义一个名为 order-inline 的分片算法,用于分库order_item: # 逻辑表order_itemactual-data-nodes: ds$->{0..1}.order_item_$->{0..1} # 分布在两个库的两张表上table-strategy: standard:sharding-column: order_idsharding-algorithm-name: order-inline  default-database-strategy: # 定义分库策略是按照user_idstandard:sharding-column: user_idsharding-algorithm-name: db-inline # 这里定义了一个算法,算法的实现在下面sharding-algorithms: # 实现db-inline: # 定义一个名为 db-inline 的分片算法,用于分库type: INLINE # 算法类型为内联表达式(INLINE),适用于简单取模类规则props:algorithm-expression: ds$->{user_id % 2} # 表达式:user_id 对 2 取模,结果为 0 或 1,映射到 ds0 或 ds1 两个数据库order-inline: # 定义一个名为 order-inline 的分片算法,用于分表type: INLINEprops:algorithm-expression: order_$->{order_id % 2} # 表达式:order_id 对 2 取模,映射到 order_0 或 order_1 两张物理表readwrite-splitting: # 读写分离配置data-sources:rw_ds0:static-strategy:write-data-source-name: ds0read-data-source-names:- ds0_slaveload-balancer-name: round-robinrw_ds1:static-strategy:write-data-source-name: ds1read-data-source-names:- ds1_slaveload-balancer-name: round-robinload-balancers:round-robin:type: ROUND_ROBINprops: # 开启 SQL 打印,调试时非常有用,能看到 SQL 是如何被改写和路由的sql:show: truemain: # 假设项目用了druid等,需要开启下面这个重写,否则报错allow-bean-definition-overriding: true

相关文章:

  • day022-定时任务-故障案例与发送邮件
  • Redis核心数据结构操作指南:字符串、哈希、列表详解
  • php 实现基数排序
  • PromQL 从基础入门教程
  • html5视频播放器和微信小程序如何实现视频的自动播放功能
  • Linux编辑器——vim的使用
  • 优雅草最新实战项目技术Discuz X3.5电子签约插件开发项目实施方案优雅草·卓伊凡
  • QT 框架学习笔记
  • 什么是 WPF 技术?什么是 WPF 样式?下载、安装、配置、基本语法简介教程
  • 用户配置文件(Profile)
  • 网络安全方向在校生有哪些证书适合考取?
  • 安卓开发用到的设计模式(3)行为型模式
  • EasyRTC嵌入式SDK音视频实时通话助力WebRTC技术与智能硬件协同发展
  • kubernetes网络详解(内部网络、Pod IP分配、CNI)
  • FlagOS 新里程:开源面向多种硬件架构的统一AI 编译器 FlagTree
  • 机器学习笔记【Week6】
  • Redis 集合、有序集合与通用命令详解
  • [Vue] ref及其底层原理
  • 单片机(MCU)的 IO 口静电、浪涌、电压异常等保护
  • 【机器学习基础】机器学习入门核心算法:支持向量机(SVM)
  • 做网站和域名/百度seo快速提升排名
  • 传奇发布网站排行/网站关键词排名优化价格
  • linux网站架设怎么做/怎么制作网站平台
  • asp.net网站的验证码怎么使用/东莞关键词自动排名
  • 做网站找投资人/网站关键词优化教程
  • 个人建站提供软件下载/软文自助发稿平台