[讨论] ShardingSphere db-discovery 模块 API 调整

Hi, 大家好

目前 db-discovery 高可用模块集成了 MYSQL MGR 和 openGuass, 它们都是通过定时任务轮询实时获取主-从关系, job 相关代码是比较冗余的. 所以我们打算把 job 相关的代码剥离出 shardingsphere-db-discovery-provider 模块, 放到上层的 shardingsphere-db-discovery-core 模块来进行管理, shardingsphere-db-discovery-provider 模块只负责提供主-从的关系的实现. 为了满足前面所说的, 我们需要对 api 进行调整.

调整前的配置 :

schemaName: database_discovery_db

dataSources:
  ds_0:
    url: jdbc:mysql://127.0.0.1:13306/demo_primary_ds?serverTimezone=UTC&useSSL=false
    username: root
    password: 123456
    connectionTimeoutMilliseconds: 3000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1
  ds_1:
    url: jdbc:mysql://127.0.0.1.18:13307/demo_primary_ds?serverTimezone=UTC&useSSL=false
    username: root
    password: 123456
    connectionTimeoutMilliseconds: 3000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1
  ds_2:
    url: jdbc:mysql://127.0.0.1:13308/demo_primary_ds?serverTimezone=UTC&useSSL=false
    username: root
    password: 123456
    connectionTimeoutMilliseconds: 3000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1

rules:
  - !READWRITE_SPLITTING
    dataSources:
      rd_rs:
        autoAwareDataSourceName: pr_ds

  - !DB_DISCOVERY
    dataSources:
      pr_ds:
        dataSourceNames:
          - ds_0
          - ds_1
          - ds_2
        discoveryTypeName: mgr
    discoveryTypes:
      mgr:
        type: MGR
        props:
          groupName: 64ce3a6b-3d25-11ec-931a-6c92bf049e78
          zkServerLists: 'localhost:2181'
          keepAliveCron: '0/50 * * * * ?'

调整后的配置 :

schemaName: database_discovery_db

dataSources:
  ds_0:
    url: jdbc:mysql://127.0.0.1:3306/demo_primary_ds?serverTimezone=UTC&useSSL=false
    username: root
    password:
    connectionTimeoutMilliseconds: 3000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1
  ds_1:
    url: jdbc:mysql://127.0.0.1:3306/demo_replica_ds_0?serverTimezone=UTC&useSSL=false
    username: root
    password:
    connectionTimeoutMilliseconds: 3000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1
  ds_2:
    url: jdbc:mysql://127.0.0.1:3306/demo_replica_ds_1?serverTimezone=UTC&useSSL=false
    username: root
    password:
    connectionTimeoutMilliseconds: 3000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1

rules:
- !READWRITE_SPLITTING
  dataSources:
    rd_rs:
      autoAwareDataSourceName: pr_ds

- !DB_DISCOVERY
  dataSources:
    pr_ds:
      dataSourceNames:
        - ds_0
        - ds_1
        - ds_2
      discoveryTypeName: mgr
      discoverySchedulerName: mgr-job

  discoverySchedulers:
    mgr-job:
      type: elastic-job
      props:
        zkServerLists: 'localhost:2181'
        keepAliveCron: '0/5 * * * * ?'

  discoveryTypes:
    mgr:
      type: MGR
      props:
        groupName: 92504d5b-6dec-11e8-91ea-246e9612aaf1

Can you speak English? :laughing: :laughing:

中文社区, 不说英文啦, github 上我们可以英文交流哦

京ICP备2021015875号