sharding-jdbc配置分析Configuration
时间: 2023-08-26 11:15:30 浏览: 191
Sharding-JDBC 的 `Configuration` 类是整个 Sharding-JDBC 配置的核心,它包含了 Sharding-JDBC 的所有配置信息。下面是对 `Configuration` 类的一些配置分析:
1. `dataSource`: 数据源配置,包括读写分离数据源、主从数据源,以及 ShardingSphere 内置的 HikariCP 数据源等。
2. `shardingRule`: 分片规则配置,包括分片键配置、分片算法配置等。
3. `defaultDatabaseShardingStrategy`: 默认数据源分片策略,用于没有配置分片规则的表进行分片。
4. `defaultTableShardingStrategy`: 默认表分片策略,用于没有配置分片规则的表进行分片。
5. `masterSlaveRule`: 主从规则配置,包括主从数据源名称、负载均衡算法等。
6. `props`: 全局属性配置,包括 SQL 打印、日志级别等。
7. `encryptRule`: 加密规则配置,包括加密列、加密算法等。
8. `keyGenerateAlgorithm`: 主键生成算法配置。
9. `executorSize`: 执行器线程池大小配置。
总之,`Configuration` 类是 Sharding-JDBC 的核心配置类,通过对它的配置来实现对 Sharding-JDBC 的各种功能的配置和管理。
相关问题
sharding-jdbc怎么使用
Sharding-JDBC是一个基于JDBC的数据库分片框架,它可以帮助你在单台机器上模拟出分布式数据库的效果,提高系统的并发能力和横向扩展性。以下是使用Sharding-JDBC的基本步骤:
1. **添加依赖**:首先需要将Sharding-JDBC的依赖加入到你的Maven或Gradle构建文件中。
2. **配置数据源**:设置至少两个数据源,分别对应你需要分片的表所在的数据库实例。
3. **定义分片策略**:通过@Configuration或注解的方式定义分片规则,包括分片键(通常根据业务ID进行)、分片算法以及数据源映射关系。
4. **启用分片**:在DAO层或者Repository接口上加上@ShardingTable注解,告诉框架如何分发查询请求。
5. **编写业务代码**:使用普通的JDBC或MyBatis查询即可,Sharding-JDBC会在底层自动将SQL发送到正确的数据源。
6. **事务管理**:注意,Sharding-JDBC默认开启读写分离和分散事务,所以在事务管理上下文中,可能需要额外处理跨库操作的事务一致性。
7. **监控和日志**:为了更好地理解和调试,建议开启Sharding-JDBC的日志记录,并配置相应的监控工具。
sharding-jdbc 使用实例
好的,下面是 Sharding-JDBC 的使用实例:
1. 引入依赖
在项目的 pom.xml 文件中,添加以下依赖:
```
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-core</artifactId>
<version>${sharding-jdbc.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>${sharding-jdbc.version}</version>
</dependency>
```
其中,`${sharding-jdbc.version}` 表示 Sharding-JDBC 的版本号,可以根据自己的实际情况进行修改。
2. 配置数据源
在项目的配置文件中,添加以下配置:
```
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/sharding_db?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
shardingsphere:
# 配置数据分片规则
sharding:
tables:
user_info:
actualDataNodes: ds${0..1}.user_info_${0..1}
tableStrategy:
standard:
shardingColumn: user_id
shardingAlgorithmName: user_id_modulo
keyGenerateStrategy:
column: user_id
keyGeneratorName: snowflake
# 配置算法
defaultDataSourceName: ds0
shardingAlgorithms:
user_id_modulo:
type: INLINE
props:
algorithm-expression: user_info_${user_id % 2}
# 配置数据源
dataSources:
ds0:
url: jdbc:mysql://localhost:3306/ds0?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
connectionTimeoutMilliseconds: 30000
idleTimeoutMilliseconds: 60000
maxLifetimeMilliseconds: 1800000
maxPoolSize: 50
ds1:
url: jdbc:mysql://localhost:3306/ds1?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
connectionTimeoutMilliseconds: 30000
idleTimeoutMilliseconds: 60000
maxLifetimeMilliseconds: 1800000
maxPoolSize: 50
```
其中,`sharding_db` 表示逻辑数据库名,`ds0` 和 `ds1` 表示实际数据源名,`user_info` 表示要进行分片的表名,`user_id` 表示分片键。
3. 配置 ShardingDataSource
在 Spring 配置文件中,添加以下配置:
```
@Configuration
@Import(ShardingJdbcConfiguration.class)
public class DataSourceConfig {
@Bean
public DataSource dataSource() throws SQLException {
return ShardingDataSourceFactory.createDataSource(SpringUtil.getBean(ShardingJdbcConfiguration.class).getShardingRule(),
SpringUtil.getBean(ShardingJdbcConfiguration.class).getDataSources(),
SpringUtil.getBean(ShardingJdbcConfiguration.class).getProps());
}
}
```
其中,`ShardingJdbcConfiguration` 是一个配置类,用于读取配置文件中的数据源配置和分片规则配置。
4. 测试
在测试代码中,使用`@Autowired` 注解注入 `DataSource` 对象,即可使用 Sharding-JDBC 进行数据源的读写操作。
以上就是 Sharding-JDBC 的使用实例,希望能对你有所帮助!
阅读全文