SHARDING-JDBC
概述
配置是整个Sharding-JDBC的核心,是Sharding-JDBC中唯一与应用开发者打交道的模块。
配置模块也是Sharding-JDBC的门户,通过它可以快速清晰的理解Sharding-JDBC所提供的功能。
本部分是Sharding-JDBC的配置参考手册,需要时可当做字典查阅。
Sharding-JDBC提供了4种配置方式,用于不同的使用场景。通过配置,
应用开发者可以灵活的使用分库分表、读写分离以及分库分表 + 读写分离共用。
- 引入maven依赖
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-core</artifactId>
<version>${latest.release.version}</version>
</dependency>
注意: 请将${latest.release.version}更改为实际的版本号。 2. 规则配置
Sharding-JDBC可以通过Java,YAML,Spring命名空间和Spring Boot Starter四种方式配置,
开发者可根据场景选择适合的配置方式。详情请参见配置手册。
- 创建DataSource
通过ShardingDataSourceFactory工厂和规则配置对象获取ShardingDataSource,ShardingDataSource实现自JDBC的标准接口DataSource。
然后即可通过DataSource选择使用原生JDBC开发,或者使用JPA, MyBatis等ORM工具。
DataSource dataSource = ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig);
- 配置文件 yml文件实现
dataSources:
ds-master: !!com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://192.168.1.2:3306/test?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
username: username
password: password
# 初始化配置
initialSize: 3
# 最小连接数
minIdle: 3
# 最大连接数
maxActive: 15
# 获取连接超时时间
maxWait: 5000
# 连接有效性检测时间
timeBetweenEvictionRunsMillis: 90000
# 最大空闲时间
minEvictableIdleTimeMillis: 1800000
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
validationQuery: select 1
removeAbandoned: true
removeAbandonedTimeout: 180
logAbandoned: true
# 配置监控统计拦截的filters
filters: stat
ds-slave: !!com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://192.168.1.3:3306/test?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
username: username
password: password
# 初始化配置
initialSize: 3
# 最小连接数
minIdle: 3
# 最大连接数
maxActive: 15
# 获取连接超时时间
maxWait: 5000
# 连接有效性检测时间
timeBetweenEvictionRunsMillis: 90000
# 最大空闲时间
minEvictableIdleTimeMillis: 1800000
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
validationQuery: select 1
removeAbandoned: true
removeAbandonedTimeout: 180
logAbandoned: true
# 配置监控统计拦截的filters
filters: stat
masterSlaveRule:
name: ds-ms
masterDataSourceName: ds-master
slaveDataSourceNames: [ds-slave]
- SpringBooot实现,启动类中注入
@Bean
public DataSource dataSource() throws FileNotFoundException, SQLException, IOException {
String resourceLocation = "config/sharding-jdbc-" + env + ".yml";
ClassPathResource resource = new ClassPathResource(resourceLocation);
InputStream inputStream = resource.getInputStream();
return MasterSlaveDataSourceFactory.createDataSource(IOUtils.toByteArray(inputStream));
}