乐趣区

关于数据库:ShardingSphere-4x-编排治理之配置中心

导览

编排治理模块提供配置核心 / 注册核心 (以及布局中的元数据中心)、配置动态化、数据库熔断禁用、调用链路等治理能力。

实现动机

  • 配置集中化:越来越多的运行时实例,使得散落的配置难于治理,配置不同步导致的问题非常重大。将配置集中于配置核心,能够更加无效进行治理。
  • 配置动态化:配置批改后的散发,是配置核心能够提供的另一个重要能力。它可反对数据源、表与分片及读写拆散策略的动静切换。

配置核心数据结构

配置核心在定义的命名空间的 config 下,以 YAML 格局存储,包含数据源,数据分片,读写拆散、Properties 配置,可通过批改节点来实现对于配置的动静治理。

config
    ├──authentication                            # Sharding-Proxy 权限配置
    ├──props                                     # 属性配置
    ├──schema                                    # Schema 配置
    ├      ├──sharding_db                        # SchemaName 配置
    ├      ├      ├──datasource                  # 数据源配置
    ├      ├      ├──rule                        # 数据分片规定配置
    ├      ├──masterslave_db                     # SchemaName 配置
    ├      ├      ├──datasource                  # 数据源配置
    ├      ├      ├──rule                        # 读写拆散规定 

config/authentication

password: root
username: root

config/sharding/props

绝对于 sharding-sphere 配置外面的 Sharding Properties。

executor.size: 20
sql.show: true

config/schema/schemeName/datasource

多个数据库连接池的汇合,不同数据库连接池属性自适配(例如:DBCP,C3P0,Druid, HikariCP)。

ds_0: !!org.apache.shardingsphere.orchestration.core.configuration.YamlDataSourceConfiguration
  dataSourceClassName: com.zaxxer.hikari.HikariDataSource
  properties:
    url: jdbc:mysql://127.0.0.1:3306/demo_ds_0?serverTimezone=UTC&useSSL=false
    password: null
    maxPoolSize: 50
    maintenanceIntervalMilliseconds: 30000
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    minPoolSize: 1
    username: root
    maxLifetimeMilliseconds: 1800000
ds_1: !!org.apache.shardingsphere.orchestration.core.configuration.YamlDataSourceConfiguration
  dataSourceClassName: com.zaxxer.hikari.HikariDataSource
  properties:
    url: jdbc:mysql://127.0.0.1:3306/demo_ds_1?serverTimezone=UTC&useSSL=false
    password: null
    maxPoolSize: 50
    maintenanceIntervalMilliseconds: 30000
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    minPoolSize: 1
    username: root
    maxLifetimeMilliseconds: 1800000

config/schema/sharding_db/rule

数据分片配置,包含数据分片 + 读写拆散配置。

tables:
  t_order:
    actualDataNodes: ds_$->{0..1}.t_order_$->{0..1}
    databaseStrategy:
      inline:
        shardingColumn: user_id
        algorithmExpression: ds_$->{user_id % 2}
    keyGenerator:
      column: order_id
    logicTable: t_order
    tableStrategy:
      inline:
        shardingColumn: order_id
        algorithmExpression: t_order_$->{order_id % 2}
  t_order_item:
    actualDataNodes: ds_$->{0..1}.t_order_item_$->{0..1}
    databaseStrategy:
      inline:
        shardingColumn: user_id
        algorithmExpression: ds_$->{user_id % 2}
    keyGenerator:
      column: order_item_id
    logicTable: t_order_item
    tableStrategy:
      inline:
        shardingColumn: order_id
        algorithmExpression: t_order_item_$->{order_id % 2}
bindingTables:
  - t_order,t_order_item
broadcastTables:
  - t_config
  
defaultDataSourceName: ds_0
    
masterSlaveRules: {}

config/schema/masterslave/rule

读写拆散独立应用时应用该配置。

name: ds_ms
masterDataSourceName: ds_master 
slaveDataSourceNames:
  - ds_slave0
  - ds_slave1
loadBalanceAlgorithmType: ROUND_ROBIN

动静失效

在注册核心上批改、删除、新增相干配置,会动静推送到生产环境并立刻失效。

退出移动版