Rubin's Blog

  • 首页
  • 关于作者
  • 隐私政策
享受恬静与美好~~~
分享生活的点点滴滴~~~
  1. 首页
  2. MySQL
  3. 正文

MySQL之Sharding-JDBC简介

2021年10月28日 318点热度 0人点赞 0条评论

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

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

Sharding-JDBC主要功能:

  • 数据分片:包括分库分表、读写分离、分片策略、分布式主键等
  • 分布式事务:有标准化的事务接口,支持XA强一致性事务和柔性事务
  • 数据库治理:支持配置动态化、编排和治理、数据脱敏以及可视化连路追踪

Sharding-JDBC 内部结构:

图中黄色部分表示的是Sharding-JDBC的入口API,采用工厂方法的形式提供。 目前有ShardingDataSourceFactory和MasterSlaveDataSourceFactory两个工厂类。

  • ShardingDataSourceFactory:支持分库分表、读写分离操作
  • MasterSlaveDataSourceFactory:支持读写分离操作

图中蓝色部分表示的是Sharding-JDBC的配置对象,提供灵活多变的配置方式。ShardingRuleConfiguration是分库分表配置的核心和入口,它可以包含多个TableRuleConfiguration和MasterSlaveRuleConfiguration。

  • TableRuleConfiguration封装的是表的分片配置信息,有5种配置形式对应不同的Configuration类型
  • MasterSlaveRuleConfiguration封装的是读写分离配置信息

图中红色部分表示的是内部对象,由Sharding-JDBC内部使用,应用开发者无需关注。Sharding-JDBC通过ShardingRuleConfiguration和MasterSlaveRuleConfiguration生成真正供ShardingDataSource和MasterSlaveDataSource使用的规则对象。ShardingDataSource和MasterSlaveDataSource实现了DataSource接口,是JDBC的完整实现方案。

Sharding-JDBC初始化流程:

  • 根据配置的信息生成Configuration对象
  • 通过Factory会将Configuration对象转化为Rule对象
  • 通过Factory会将Rule对象与DataSource对象封装
  • Sharding-JDBC使用DataSource进行分库分表和读写分离操作

以上就是本博文的全部内容。欢迎小伙伴们积极留言交流~~~

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: MySQL
最后更新:2022年6月9日

RubinChu

一个快乐的小逗比~~~

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

COPYRIGHT © 2021 rubinchu.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

京ICP备19039146号-1