治理中心 #
注册中心数据结构 #
在定义的命名空间下,rules
、props
和 metadata
节点以 YAML 格式存储配置,可通过修改节点来实现对于配置的动态管理。nodes
存储数据库访问对象运行节点,用于区分不同数据库访问实例。
namespace
├──rules # 全局规则配置
├──props # 属性配置
├──metadata # Metadata 配置
├ ├──${schema_1} # Schema 名称1
├ ├ ├──dataSources # 数据源配置
├ ├ ├──rules # 规则配置
├ ├ ├──tables # 表结构配置
├ ├ ├ ├──t_1
├ ├ ├ ├──t_2
├ ├ ├──views # 视图结构配置
├ ├ ├ ├──v_1
├ ├ ├ ├──v_2
├ ├──${schema_2} # Schema 名称2
├ ├ ├──dataSources # 数据源配置
├ ├ ├──rules # 规则配置
├ ├ ├──tables # 表结构配置
├──nodes
├ ├──compute_nodes
├ ├ ├──online
├ ├ ├ ├──proxy
├ ├ ├ ├ ├──${your_instance_ip_a}@${your_instance_port_x}
├ ├ ├ ├ ├──${your_instance_ip_b}@${your_instance_port_y}
├ ├ ├ ├ ├──....
├ ├ ├ ├──jdbc
├ ├ ├ ├ ├──${your_instance_ip_a}@${your_instance_pid_x}
├ ├ ├ ├ ├──${your_instance_ip_b}@${your_instance_pid_y}
├ ├ ├ ├ ├──....
├ ├ ├──attributies
├ ├ ├ ├──${your_instance_ip_a}@${your_instance_port_x}
├ ├ ├ ├ ├──status
├ ├ ├ ├ ├──label
├ ├ ├ ├──${your_instance_ip_b}@${your_instance_pid_y}
├ ├ ├ ├ ├──status
├ ├ ├ ├──....
├ ├──storage_nodes
├ ├ ├──disable
├ ├ ├ ├──${schema_1.ds_0}
├ ├ ├ ├──${schema_1.ds_1}
├ ├ ├ ├──....
├ ├ ├──primary
├ ├ ├ ├──${schema_2.ds_0}
├ ├ ├ ├──${schema_2.ds_1}
├ ├ ├ ├──....
/rules #
全局规则配置,可包括访问 DBPlusEngine-Proxy 用户名和密码的权限配置。
全局规则配置,可包含事务配置、SQL 解析配置等。
- !TRANSACTION
defaultType: XA
providerType: Atomikos
- !SQL_PARSER
sqlCommentParseEnabled: true
```LL_PRIVILEGES_PERMITTED
/props #
属性配置,详情请参见配置手册。
kernel-executor-size: 20
sql-show: true
/metadata/${schemaName}/dataSources #
多个数据库连接池的集合,不同数据库连接池属性自适配(例如:DBCP,C3P0,Druid, HikariCP)。
ds_0:
initializationFailTimeout: 1
validationTimeout: 5000
maxLifetime: 1800000
leakDetectionThreshold: 0
minimumIdle: 1
password: root
idleTimeout: 60000
jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds_0?serverTimezone=UTC&useSSL=false
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
maximumPoolSize: 50
connectionTimeout: 30000
username: root
poolName: HikariPool-1
ds_1:
initializationFailTimeout: 1
validationTimeout: 5000
maxLifetime: 1800000
leakDetectionThreshold: 0
minimumIdle: 1
password: root
idleTimeout: 60000
jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds_1?serverTimezone=UTC&useSSL=false
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
maximumPoolSize: 50
connectionTimeout: 30000
username: root
poolName: HikariPool-2
/metadata/${schemaName}/rules #
规则配置,可包括数据分片、读写分离、数据加密、影子库压测等配置。
- !SHARDING
xxx
- !READWRITE_SPLITTING
xxx
- !ENCRYPT
xxx
/metadata/${schemaName}/tables #
表结构配置,每个表使用单独节点存储,暂不支持动态修改。
name: t_order # 表名
columns: # 列
id: # 列名
caseSensitive: false
dataType: 0
generated: false
name: id
primaryKey: trues
order_id:
caseSensitive: false
dataType: 0
generated: false
name: order_id
primaryKey: false
indexs: # 索引
t_user_order_id_index: # 索引名
name: t_user_order_id_index
/nodes/compute_nodes #
数据库访问对象运行实例信息,子节点是当前运行实例的标识。 运行实例标识由运行服务器的 IP 地址和 PORT 构成。 运行实例标识均为临时节点,当实例上线时注册,下线时自动清理。 注册中心监控这些节点的变化来治理运行中实例对数据库的访问等。
/nodes/storage_nodes #
可以治理读写分离从库,可动态添加删除以及禁用。