使用ShardingSphereDataSource场景
SDK还支持使用ShardingSphereDataSource,此时,需要修改yml配置,单独将sharding配置放在yml同级目录,并在yml中设置sharding配置文件名,示例如下:
引入依赖:
<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core</artifactId> <version>5.0.0</version> </dependency>
配置示例:
# 数据源配置 - 必选 sources: ds1: type: org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource // 数据源类型 ymlFile: sharding.yml ds2: driverClassName: com.mysql.jdbc.Driver jdbcUrl: jdbc:mysql://127.0.0.1:8080/ds1 username: datasourceuser password: datasourcepwd type: com.zaxxer.hikari.HikariDataSource # 路由配置 - 必选 router: active: dc1 // 当前激活节点 routeAlgorithm: single-read-write // 路由策略 nodes: dc1: master: ds1 dc2: master: ds2
![](https://support.huaweicloud.com/devg-mas/public_sys-resources/note_3.0-zh-cn.png)
上面配置,仅ds1使用了ShardingSphereDataSource,ds2仍使用HikariDataSource,如果ds2也需要使用ShardingSphereDataSource,将ds2的type和ymlFile同样配置即可。
sharding配置参考shardingsphere官网,下面给出读写分离和分库分表的例子:
分库分表:
schemaName: ms dataSources: ds0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://100.100.139.118:3307/devspore-ds0 username: password: ds1: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://100.100.139.118:3307/devspore-ds1 username: password: rules: - !SHARDING bindingTables: - t_order,t_order_detail broadcastTables: - t_login - t_address - t_shopping_cart - t_bank tables: t_order_detail: actualDataNodes: ds$->{0..1}.t_order_detail_$->{0..2} tableStrategy: standard: shardingAlgorithmName: mod shardingColumn: id databaseStrategy: standard: shardingColumn: guest_id shardingAlgorithmName: mod t_order: actualDataNodes: ds$->{0..1}.t_order_$->{0..2} tableStrategy: standard: shardingAlgorithmName: mod shardingColumn: id databaseStrategy: standard: shardingColumn: guest_id shardingAlgorithmName: mod shardingAlgorithms: mod: type: MOD props: sharding-count: 2 props: sql-show: true
![](https://support.huaweicloud.com/devg-mas/public_sys-resources/note_3.0-zh-cn.png)
- 上面配置数据库用户名和密码未填,用户按需补充。
- 上面提供的配置只是一个例子,实际配置用户按自己的分库分表需求进行配置,这部分配置跟shardingsphere本身的分库分表配置一致。
读写分离:
schemaName: ms dataSources: master: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://100.100.139.118:3307/devspore-ds0 username: password: slave0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://100.100.139.118:3307/devspore-ds0-slave0 username: password: slave1: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://100.100.139.118:3307/devspore-ds0-slave1 username: coral password: Coral rules: - !READWRITE_SPLITTING dataSources: ms_ds: writeDataSourceName: master readDataSourceNames: - slave0 - slave1 loadBalancerName: roundRobin loadBalancers: roundRobin: type: ROUND_ROBIN props: sql-show: true