导览
编排治理模块提供配置核心/注册核心(以及布局中的元数据中心)、配置动态化、数据库熔断禁用、调用链路等治理能力。
实现动机
- 配置集中化:越来越多的运行时实例,使得散落的配置难于治理,配置不同步导致的问题非常重大。将配置集中于配置核心,能够更加无效进行治理。
- 配置动态化:配置批改后的散发,是配置核心能够提供的另一个重要能力。它可反对数据源、表与分片及读写拆散策略的动静切换。
配置核心数据结构
配置核心在定义的命名空间的config下,以YAML格局存储,包含数据源,数据分片,读写拆散、Properties配置,可通过批改节点来实现对于配置的动静治理。
config ├──authentication # Sharding-Proxy权限配置 ├──props # 属性配置 ├──schema # Schema配置 ├ ├──sharding_db # SchemaName配置 ├ ├ ├──datasource # 数据源配置 ├ ├ ├──rule # 数据分片规定配置 ├ ├──masterslave_db # SchemaName配置 ├ ├ ├──datasource # 数据源配置 ├ ├ ├──rule # 读写拆散规定
config/authentication
password: rootusername: root
config/sharding/props
绝对于sharding-sphere配置外面的Sharding Properties。
executor.size: 20sql.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: 1800000ds_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_itembroadcastTables: - t_config defaultDataSourceName: ds_0 masterSlaveRules: {}
config/schema/masterslave/rule
读写拆散独立应用时应用该配置。
name: ds_msmasterDataSourceName: ds_master slaveDataSourceNames: - ds_slave0 - ds_slave1loadBalanceAlgorithmType: ROUND_ROBIN
动静失效
在注册核心上批改、删除、新增相干配置,会动静推送到生产环境并立刻失效。