管控

注册中心数据结构

在定义的命名空间下,rulespropsmetadata 节点以 YAML 格式存储配置,可通过修改节点来实现对于配置的动态管理。 nodes 存储数据库访问对象运行节点,用于区分不同数据库访问实例。 sys_data 存储系统表中的数据记录。

  1. namespace
  2. ├──rules # 全局规则配置
  3. ├──props # 属性配置
  4. ├──metadata # Metadata 配置
  5. ├──${databaseName} # 逻辑数据库名称
  6. ├──schemas # Schema 列表
  7. ├──${schemaName} # 逻辑 Schema 名称
  8. ├──tables # 表结构配置
  9. ├──${tableName}
  10. ├──...
  11. ├──views # 视图结构配置
  12. ├──${viewName}
  13. ├──...
  14. ├──...
  15. ├──versions # 元数据版本列表
  16. ├──${versionNumber} # 元数据版本号
  17. ├──data_sources # 数据源配置
  18. ├──rules # 规则配置
  19. ├──...
  20. ├──active_version # 激活的元数据版本号
  21. ├──...
  22. ├──nodes
  23. ├──compute_nodes
  24. ├──online
  25. ├──proxy
  26. ├──UUID # Proxy 实例唯一标识
  27. ├──....
  28. ├──jdbc
  29. ├──UUID # JDBC 实例唯一标识
  30. ├──....
  31. ├──status
  32. ├──UUID
  33. ├──....
  34. ├──worker_id
  35. ├──UUID
  36. ├──....
  37. ├──process_trigger
  38. ├──process_list_id:UUID
  39. ├──....
  40. ├──labels
  41. ├──UUID
  42. ├──....
  43. ├──storage_nodes
  44. ├──${databaseName.groupName.ds}
  45. ├──${databaseName.groupName.ds}
  46. ├──sys_data
  47. ├──shardingsphere
  48. ├──schemas
  49. ├──shardingsphere
  50. ├──tables # 系统表
  51. ├──sharding_table_statistics # 分片统计表数据
  52. ├──8a2dcb0d97c3d86ef77b3d4651a1d7d0 # md5
  53. ├──cluster_information # 集群信息表

/rules

全局规则配置,可包含事务配置、SQL 解析配置等。

  1. - !TRANSACTION
  2. defaultType: XA
  3. providerType: Atomikos
  4. - !SQL_PARSER
  5. sqlCommentParseEnabled: true

/props

属性配置,详情请参见配置手册

  1. kernel-executor-size: 20
  2. sql-show: true

/metadata/${databaseName}/versions/${versionNumber}/dataSources

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

  1. ds_0:
  2. initializationFailTimeout: 1
  3. validationTimeout: 5000
  4. maxLifetime: 1800000
  5. leakDetectionThreshold: 0
  6. minimumIdle: 1
  7. password: root
  8. idleTimeout: 60000
  9. jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds_0?serverTimezone=UTC&useSSL=false
  10. dataSourceClassName: com.zaxxer.hikari.HikariDataSource
  11. maximumPoolSize: 50
  12. connectionTimeout: 30000
  13. username: root
  14. poolName: HikariPool-1
  15. ds_1:
  16. initializationFailTimeout: 1
  17. validationTimeout: 5000
  18. maxLifetime: 1800000
  19. leakDetectionThreshold: 0
  20. minimumIdle: 1
  21. password: root
  22. idleTimeout: 60000
  23. jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds_1?serverTimezone=UTC&useSSL=false
  24. dataSourceClassName: com.zaxxer.hikari.HikariDataSource
  25. maximumPoolSize: 50
  26. connectionTimeout: 30000
  27. username: root
  28. poolName: HikariPool-2

/metadata/${databaseName}/versions/${versionNumber}/rules

规则配置,可包括数据分片、读写分离、数据加密、影子库压测等配置。

  1. - !SHARDING
  2. xxx
  3. - !READWRITE_SPLITTING
  4. xxx
  5. - !ENCRYPT
  6. xxx

/metadata/${databaseName}/schemas/${schemaName}/tables

表结构配置,每个表使用单独节点存储,暂不支持动态修改。

  1. name: t_order # 表名
  2. columns: # 列
  3. id: # 列名
  4. caseSensitive: false
  5. dataType: 0
  6. generated: false
  7. name: id
  8. primaryKey: trues
  9. order_id:
  10. caseSensitive: false
  11. dataType: 0
  12. generated: false
  13. name: order_id
  14. primaryKey: false
  15. indexs: # 索引
  16. t_user_order_id_index: # 索引名
  17. name: t_user_order_id_index

/nodes/compute_nodes

数据库访问对象运行实例信息,子节点是当前运行实例的标识。 运行实例标识使用 UUID 生成,每次启动重新生成。 运行实例标识均为临时节点,当实例上线时注册,下线时自动清理。 注册中心监控这些节点的变化来治理运行中实例对数据库的访问等。

/nodes/storage_nodes

可以治理读写分离从库,可动态添加删除以及禁用。