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
和MasterSlaveDataSourceFactor
y两个工厂类。
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
进行分库分表和读写分离操作
以上就是本博文的全部内容。欢迎小伙伴们积极留言交流~~~
文章评论