MYSQL系列-分库分表(三):Sharding-JDBC实现分库分表落地实践-上

系列文档参考 MYSQL系列-整体架构介绍

前文已经实践基于Spring动态数据源的分库分表,本文主要落地基于Sharding-JDBC MYSQL系列-分库分表(二):Spring动态数据源实现分库分表落地实践-上

原始需求

原始需求同前文 需要实现功能如下:

  1. 业务表point_balance1基于UID进行分库分表
  2. 配置表param_config默认走point_shard1库,不进行分库分表
  3. 支持读写分离,并且某些不能有主从延迟的SQL强制走写库查询
  4. 支持影子库
  5. 针对海外某些国家,数据量较少,业务表也不进行分库分表处理(高阶功能)

Sharding-JDBC介绍

Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。

Apache ShardingSphere 设计哲学为 Database Plus,旨在构建异构数据库上层的标准和生态。 它关注如何充分合理地利用数据库的计算和存储能力,而并非实现一个全新的数据库。 它站在数据库的上层视角,关注它们之间的协作多于数据库自身。

本文基于最新版本5.4.0进行实践,其他详细信息参考官网文档介绍

ShardingSphere-JDBC 介绍

ShardingSphere-JDBC 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。

  • 适用于任何基于 JDBC 的 ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或直接使用 JDBC;
  • 支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, HikariCP 等;
  • 支持任意实现 JDBC 规范的数据库,目前支持 MySQL,PostgreSQL,Oracle,SQLServer 以及任何可使用 JDBC 访问的数据库。

与ShardingSphere-Proxy对比如下:

ShardingSphere-JDBC ShardingSphere-Proxy
数据库 任意 MySQL/PostgreSQL
连接消耗数
异构语言 仅 Java 任意
性能 损耗低 损耗略高
无中心化
静态入口

ShardingSphere-Proxy类似与MYCAT,需要独立部署,详细参考官网

生态以及线路规划如下

设计思路

基于Spring boot + mybatics + druid + sharding-jdbc,支持读写分离,支持全链路压测 本次sharding-jdbc配置采用yaml配置

详细设计

未完待下文

相关推荐
Kiyra7 分钟前
八股篇(1):LocalThread、CAS和AQS
java·开发语言·spring boot·后端·中间件·性能优化·rocketmq
开心比对错重要9 分钟前
进程、线程、虚拟线程详解及线程个数设置
java·jvm·算法·面试
木风小助理15 分钟前
在 Spring Boot 中实现 JSON 字段的蛇形命
spring boot·后端·json
微爱帮监所写信寄信25 分钟前
微爱帮监狱写信寄信小程序:MySQL核心日志与备份恢复安全架构
数据库·mysql·小程序·邮局·监狱寄信·挂号信·邮政
William_cl31 分钟前
【保姆级】ASP.NET Razor 视图引擎:@if/@foreach 核心语法拆解(附避坑指南 + 生活类比)
后端·asp.net·生活
pangtao202540 分钟前
【瑞萨RA × Zephyr评测】看门狗
java·后端·spring
码界奇点1 小时前
基于Spring Cloud与Vue.js的微服务前后端分离系统设计与实现
vue.js·后端·spring cloud·微服务·毕业设计·源代码管理
huatian51 小时前
Rust 语法整理
开发语言·后端·rust
毕设源码-赖学姐1 小时前
【开题答辩全过程】以 基于Springboot的球场管理平台的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
BIBI20492 小时前
Windows 上配置 Nacos Server 3.x.x 使用 MySQL 5.7
java·windows·spring boot·后端·mysql·nacos·配置