ShardingSphere-JDBC 5.x+ 版本的 YAML 规则配置详解

以下是针对 ShardingSphere-JDBC 5.x+ 版本的 YAML 规则配置详解,按您要求的条目整理:


1. 数据分片 (Sharding)

作用:将单表数据水平拆分到多个库/表。
核心配置

rules:
- !SHARDING
  tables:
    t_order: # 逻辑表名
      actualDataNodes: ds_${0..1}.t_order_${0..1} # 物理表:ds0.t_order_0, ds0.t_order_1, ds1.t_order_0...
      databaseStrategy: # 分库策略
        standard:
          shardingColumn: user_id
          shardingAlgorithmName: db_hash_mod
      tableStrategy: # 分表策略
        standard:
          shardingColumn: order_id
          shardingAlgorithmName: t_mod
  shardingAlgorithms:
    db_hash_mod:
      type: HASH_MOD # 哈希取模
      props:
        sharding-count: 2 # 分片数(库)
    t_mod:
      type: MOD # 取模
      props:
        sharding-count: 2 # 分片数(表)

2. 广播表 (Broadcast Table)

作用:所有库中均存在的表(如字典表),写操作同步到所有库。
配置

rules:
- !SHARDING
  broadcastTables: t_config, t_dict # 广播表列表

3. 读写分离 (Read/Write Splitting)

作用:将读请求路由到从库,写请求到主库。
配置

rules:
- !READWRITE_SPLITTING
  dataSources:
    pr_ds: # 逻辑数据源名
      writeDataSourceName: master_ds # 主库
      readDataSourceNames: 
        - slave_ds0
        - slave_ds1
      loadBalancerName: round_robin # 读库负载均衡策略
  loadBalancers:
    round_robin:
      type: ROUND_ROBIN # 轮询

4. 分布式事务 (Distributed Transaction)

作用:支持 XA 或柔性事务(如 Seata)。
配置

rules:
- !TRANSACTION
  defaultType: XA # 可选 XA, BASE (柔性事务)
  providerType: Atomikos # XA 实现(可选 Narayana, Bitronix)
props:
  seata: # 若使用 Seata
    enabled: true
    application-id: your_app
    tx-service-group: my_tx_group

5. 数据加密 (Data Encryption)

作用:对敏感字段加密存储(如手机号)。
配置

rules:
- !ENCRYPT
  tables:
    t_user:
      columns:
        phone:
          cipherColumn: phone_cipher # 密文列
          encryptorName: aes_encryptor
  encryptors:
    aes_encryptor:
      type: AES # 加密算法
      props:
        aes-key-value: 123456abc # 密钥

6. 数据脱敏 (Data Masking)

作用:查询时动态脱敏敏感数据(如身份证后四位用****替换)。
配置

rules:
- !MASK
  tables:
    t_user:
      columns:
        id_card:
          maskColumn: id_card # 脱敏列
          maskAlgorithmName: mask_id_card
  maskAlgorithms:
    mask_id_card:
      type: MASK # 内置脱敏算法
      props:
        mask-start: 3 # 从第3位开始脱敏
        mask-length: 4 # 脱敏4位
        mask-symbol: '*' # 替换符号

7. 影子库 (Shadow DB)

作用:压测流量路由到影子库,不影响生产数据。
配置

rules:
- !SHADOW
  enable: true
  dataSources:
    shadow_ds: # 影子数据源
      sourceDataSourceName: real_ds # 生产数据源
      shadowDataSourceName: shadow_ds # 影子库
  tables:
    t_order:
      dataSourceNames: 
        - shadow_ds
      shadowAlgorithmNames:
        - simple_hint
  shadowAlgorithms:
    simple_hint:
      type: SIMPLE_HINT # 基于SQL注释的路由
      props:
        foo: bar # 自定义属性(可忽略)

8. SQL 解析 (SQL Parsing)

配置入口:全局属性控制解析行为(非独立规则)。

props:
  sql-show: true # 打印解析后的SQL
  sql-comment-parse-enabled: true # 解析注释
  parse-tree-cache: # 解析树缓存
    initial-capacity: 128
    maximum-size: 1024

9. SQL 翻译 (SQL Translation)

作用:跨异构数据库(如 MySQL -> PostgreSQL)自动转换方言。
配置

rules:
- !SQL_TRANSLATOR
  type: CONVERTER # 转换器类型
  useOriginalSQLWhenTranslatingFailed: true # 转换失败时回退原SQL
props:
  sql-translate-enabled: true # 开启翻译

10. 混合规则 (Hybrid Rules)

场景:同时启用分片+加密+读写分离等。
配置要点

rules:
- !SHARDING
  # 分片规则...
- !READWRITE_SPLITTING
  # 读写分离规则...
- !ENCRYPT
  # 加密规则...
# 注意:规则执行顺序按配置从上到下!

11. 数据分片路由缓存 (Sharding Route Cache)

作用:缓存分片路由结果,提升性能。
配置

props:
  sharding-cache-enabled: true # 启用缓存
  sharding-cache-refresh-interval: 60000 # 缓存刷新间隔(ms)

12. 单表 (Single Table)

作用:未配置分片规则的普通表,自动广播到所有数据源。
配置:无需显式声明,但需在数据源中实际存在该表


13. 联邦查询 (Federate Query)

说明

  • 实验性功能(5.3.0+),通过 FEDERATION 执行引擎跨多个逻辑表 JOIN 查询。
  • 无需特殊规则配置,依赖执行引擎优化。

完整配置示例

dataSources:
  ds_0: ...
  ds_1: ...
  master_ds: ...
  slave_ds0: ...

rules:
- !SHARDING
  tables:
    t_order: ...
  broadcastTables: t_config
- !READWRITE_SPLITTING
  dataSources: ...
- !ENCRYPT
  tables: ...
- !SHADOW
  ...

props:
  sql-show: true
  sharding-cache-enabled: true

关键注意事项

  1. 版本兼容性:确保配置语法与 ShardingSphere-JDBC 版本匹配(5.x 配置与 4.x 差异较大)。
  2. 规则优先级:混合规则时,执行顺序 = 配置顺序。
  3. 单表限制:单表需在所有真实数据源中存在且结构一致。
  4. 影子库生效:需在 SQL 中通过 Hint 或特定注释(如 /* SHARDINGSPHERE_HINT: SHADOW=true */)触发。

建议参考 官方文档 获取最新配置细节。

资源下载链接为: https://pan.quark.cn/s/abbae039bf2a DDC控制器是一种智能化的控制设备,广泛应用于建筑自动化、工业控制以及环境监控等领域。它基于先进的微处理器技术,具备强大的数据处理能力和灵活的编程功能。通过预先设定的程序,DDC控制器能够对各类传感器采集的信号进行分析处理,并根据预设的控制策略,精准地驱动执行器完成相应的操作。 在建筑自动化系统中,DDC控制器可用于控制暖通空调系统,实现对温度、湿度、风速等参数的精确调节。它能根据室内外环境的变化,自动调整空调设备的运行状态,确保室内环境的舒适性,同时优化能源消耗。此外,DDC控制器还可用于照明控制,根据自然光照强度和人员活动情况,自动调节灯光亮度,实现节能与舒适性的平衡。 在工业控制领域,DDC控制器可用于监控和控制生产线上的各种设备。它可以实时采集设备的运行数据,如温度、压力、流量等,通过分析这些数据判断设备的运行状态,并及时发出指令调整设备的运行参数,确保生产过程的稳定性和产品质量的可靠性。 DDC控制器具有高度的可靠性和稳定性,能够在恶劣的环境条件下长期稳定运行。其模块化的设计便于安装、调试和维护,用户可以根据实际需求灵活配置控制器的输入输出模块。此外,DDC控制器还具备良好的兼容性,能够与多种类型的传感器和执行器无缝对接,构建完整的自动化控制系统。 总之,DDC控制器凭借其卓越的性能和广泛的应用领域,已成为现代自动化控制系统中不可或缺的核心设备,为实现智能化、高效化和节能化的控制目标提供了有力支持。
### 关于 Apache ShardingSphere-Proxy 5.5.2 的 Java 配置及使用教程 #### Maven 依赖配置 为了在项目中集成 ShardingSphere-Proxy,首先需要引入其对应的 Maven 依赖。以下是适用于 Spring Boot 和 ShardingSphere-JDBC 的基础依赖配置: ```xml <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId> <version>5.5.2</version> </dependency> <!-- 如果需要支持加密功能 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-encrypt-spring-boot-starter</artifactId> <version>5.5.2</version> </dependency> ``` 上述依赖可以用于构建基于 ShardingSphere-JDBC 的应用环境[^3]。 #### ShardingSphere-Proxy 启动方式 ShardingSphere-Proxy 是通过命令行启动的服务端组件。可以通过以下命令解压并运行 Proxy 文件包: ```bash tar -zxvf apache-shardingsphere-5.5.2-shardingsphere-proxy-bin.tar.gz cd apache-shardingsphere-5.5.2-shardingsphere-proxy-bin/bin ./start.sh ``` 此过程会初始化 ShardingSphere-Proxy 并使其作为独立服务运行[^1]。 #### 配置文件详解 ShardingSphere-Proxy 的核心配置位于 `conf/server.yaml` 和 `conf/config-map.yaml` 中。以下是常见的配置项及其作用: - **server.yaml**: 定义监听地址、端口以及认证信息。 ```yaml authentication: users: root: password: root authorizedSchemas: db_0,db_1 props: max-connections-size-per-query: 10 query-with-cipher-column: true ``` - **config-map.yaml**: 可选配置文件,通常用于扩展属性设置。 这些配置能够满足基本的连接管理和权限控制需求[^2]。 #### 数据分片策略配置 如果需要实现数据分片逻辑,则需进一步定义分片规则。可以在 `conf/sharding-schema.yaml` 或程序内部完成如下配置: ```java import org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration; import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration; public class ShardingConfig { public static void main(String[] args) { TableRuleConfiguration tableRuleConfig = new TableRuleConfiguration(); tableRuleConfig.setLogicTable("t_order"); ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration(); shardingRuleConfig.getTableRules().add(tableRuleConfig); } } ``` 以上代码片段展示了如何通过编程方式指定表级分片规则。 #### 加密与安全机制 针对敏感字段的安全处理,可启用 SM4 等国密算法进行加解密操作。具体配置可通过 YAML 文件或动态注入的方式完成: ```yaml rules: - !ENCRYPTOR name: sm4_encryptor type: SM4 props: cipher-key: your_cipher_key_here plain-columns: order_id,user_id ``` 该部分配置允许开发者灵活调整加密列范围和秘钥参数。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值