更新时间:2023-12-27 GMT+08:00
分享

使用ShardingSphereDataSource场景

sdk还支持使用ShardingSphereDataSource,此时,需要修改yml配置,单独将sharing配置放在yml同级目录,并在yml中设置sharing配置文件名,示例如下:

引入依赖:

<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

上面配置,仅ds0使用了ShardingSphereDataSource,ds1仍使用HikariDataSource,如果ds1也需要使用ShardingSphereDataSource,将ds1的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
  • 上面配置数据库用户名和密码未填,用户按需补充。
  • 上面提供的配置只是一个例子,实际配置用户按自己的分库分表需求进行配置,这部分配置跟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
分享:

    相关文档

    相关产品