ShardingJDBC 02_内部结构

123 阅读1分钟

1 使用过程

1.1 maven依赖

在项目的pom.xml文件中加入以下内容

<dependency>
  <groupId>org.apache.shardingsphere</groupId>
  <artifactId>sharding-jdbc-core</artifactId>
  <version>4.1.1</version>
</dependency>

1.2 规则配置

Sharding-JDBC 可以通过以下方式配置使用:

  • Java代码
  • YAML文件
  • Spring命名空间
  • Spring Boot Starter

我们在实际的工作当中,可以根据自己的需要选择适合的配置方式。

1.3 创建DataSource

通过 ShardingDataSourceFactory 工厂和规则配置对象获取 ShardingDataSource,然后即可通过DataSource 选择使用原生 JDBC 开发,或者使用 JPA, MyBatis 等 ORM 工具。

DataSource dataSource = ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, props);

2 内部结构

image.png

2.1 入口API

ShardingJDBC 的入口API,采用工厂方法提供:

  • ShardingDataSourceFactory 支持分库分表,以及读写分离操作
  • MasterSlaveDataSourceFactory 支持读写分离操作

2.2 配置对象

ShardingJDBC 的配置对象,提供灵活多样的配置方式:

  • ShardingRuleConfiguration 主入口,包含多个 TableRuleConfiguration,也可以包含多个MasterSlaveRuleConfiguration

  • TableRuleConfiguration 用于分片配置规则

  • MasterSlaveRuleConfiguration 用于读写分离的配置规则

  • ShardingStrategyConfiguration 分片策略,下边又可以区分为不同的策略类型

2.3 内部对象

由Sharding-JDBC 内部使用,作为使用者,我们仅需要了解即可。

ShardingJdbc 通过 ShardingRuleConfuguration 和 MasterSlaveRuleConfiguration 生成真正的规则对象,最终生成我们要使用的 Datasource。

3 Sharding-JDBC初始化流程

  • 根据配置信息生成 Configuration 对象 
  • 通过 Factory 将 Configuration 对象转化成 Rule 对象 
  • 通过 Factory 将 Rule 对象与 DataSource 对象进行封装 
  • 使用 ShardingJdbc 进行分库分表操作