Logo
Traffic 双路由

Traffic 双路由 #

使用说明 #

Traffic 双路由功能需要使用混合部署架构,同时部署 DBPlusEngine-Driver 和 DBPlusEngine-Proxy,并通过注册中心统一管理分片、加解密或读写分离等功能配置。

由于 Traffic 双路由功能必须要配置 DBPlusEngine-Proxy 使用,因此只允许在 DBPlusEngine-Proxy 接入端通过 YAML 配置或者 DistSQL 来添加 Traffic Rule。此外,为了配合 Traffic 功能,DBPlusEngine-Proxy 接入端需要配置 labels 标签,用于 Traffic 转发的配置。

配置项说明 #

rules:
- !TRAFFIC
  trafficStrategies:
    sql_match_traffic:
      labels: 
        - OLTP
      algorithmName: sql_match_algorithm
      loadBalancerName: random_load_balancer
    sql_regex_traffic:
      labels: 
        - OLTP
      algorithmName: sql_regex_algorithm
      loadBalancerName: random_load_balancer
    sql_hint_traffic:
      labels: 
        - OLAP
      algorithmName: sql_hint_algorithm
      loadBalancerName: round_robin_load_balancer
    transaction_traffic:
      # 可选配置,算法为 JDBC 和 FIRST_SQL 无需配置
      labels: 
        - OLAP
        - OLTP
      algorithmName: transaction_algorithm
      # 可选配置,算法为 JDBC 和 FIRST_SQL 无需配置
      loadBalancerName: round_robin_load_balancer
  trafficAlgorithms:
    sql_match_algorithm:
      type: SQL_MATCH
      props:
        sql: SELECT * FROM t_order WHERE content IN (?, ?); UPDATE t_order SET creation_date = NOW() WHERE user_id = 1;
    sql_regex_algorithm:
      type: SQL_REGEX
      props:
        regex: (?i)^(UPDATE|SELECT).*WHERE user_id.*
    sql_hint_algorithm:
      type: SQL_HINT
    transaction_algorithm:
      # 支持 FIRST_SQL、JDBC、PROXY 三种类型
      # FIRST_SQL 会根据第一条 SQL 转发的结果来决定事务单元的转发结果
      # JDBC 会将事务单元不进行转发,在 JDBC 上进行执行
      # PROXY 会将事务单元转发到 Proxy 实例执行,为了保证数据的一致性,事务单元会在同一个实例上执行
      type: PROXY
  loadBalancers:
    random_load_balancer:
      type: RANDOM
    round_robin_load_balancer:
      type: ROUND_ROBIN
      
labels: 
  - OLTP

YamlTrafficRuleConfiguration 配置项说明:

名称数据类型说明
trafficStrategiesMap<String, YamlTrafficStrategyConfiguration>转发策略,必填。默认按照配置策略的顺序依次匹配,首个匹配的策略即为目标策略。如果用户配置了事务转发策略,则优先匹配事务转发策略。
trafficAlgorithmsMap<String, YamlShardingSphereAlgorithmConfiguration>转发匹配算法,必填。
loadBalancersMap<String, YamlShardingSphereAlgorithmConfiguration>转发负载均衡策略,必填。

YamlTrafficStrategyConfiguration 配置项说明:

名称数据类型说明
nameString转发策略名称,必填。
labelsCollection转发 Proxy 实例标签,当 algorithmName 配置为 JDBC 或 FIRST_SQL 时,无需配置,其他算法必填。
algorithmNameString转发匹配算法,必填。
loadBalancerNameString转发负载均衡算法,当 algorithmName 配置为 JDBC 或 FIRST_SQL 时,无需配置,其他算法必填。

内置转发匹配算法 #

基于 Hint 转发匹配算法 #

基于 SQL Hint 转发匹配算法 #

类型:SQL_HINT 可配置属性:

SQL Hint 功能需要用户提前开启解析注释的配置,设置 sqlCommentParseEnabledtrue,注释格式暂时只支持 /* */,内容需要以 ShardingSphere hint: 开始,用户通过设置 useTraffic=trueuseTraffic=false 属性来开启和关闭 SQL Hint 转发匹配算法。

基于 Segment 转发匹配算法(SegmentTrafficAlgorithm) #

基于 SQL 字符串转发匹配算法 #

基于 SQL 字符串转发匹配算法 类型:SQL_MATCH 可配置属性:

属性名称数据类型说明
sqlString用于配置 SQL 字符串,多条时使用分号分隔,SQL 字符串匹配算法忽略大小写、空白符。

基于 SQL 字符串正则转发匹配算法 #

类型:SQL_REGEX 可配置属性:

属性名称数据类型说明
regexString用于配置正则表达式。

TransactionTrafficAlgorithm #

基于第一条 SQL 转发匹配算法 #

类型:FIRST_SQL

可配置属性:无

统一转发 JDBC 转发匹配算法 #

类型:JDBC

可配置属性:无

统一转发 Proxy 转发匹配算法 #

类型:PROXY

可配置属性:无

内置转发负载均衡算法 #

TrafficLoadBalanceAlgorithm #

随机 Proxy 实例负载均衡算法 #

类型:RANDOM

可配置属性:无

轮询 Proxy 实例负载均衡算法 #

类型:ROUND_ROBIN

可配置属性:无

相关参考 #

Traffic Rule 的特性描述