配置规则

    覆盖规则是Dubbo设计的在无需重启应用的情况下,动态调整RPC调用行为的一种能力。2.7.0版本开始,支持从服务应用两个粒度来调整动态配置。

    请在服务治理控制台查看或修改覆盖规则。

    • 应用粒度

      1. ---
      2. configVersion: v2.7
      3. scope: service
      4. key: org.apache.dubbo.samples.governance.api.DemoService
      5. enabled: true
      6. configs:
      7. - addresses: [0.0.0.0]
      8. side: consumer
      9. parameters:
      10. timeout: 6000
      11. ...

    规则详解

    配置模板

    其中:

    • configVersion表示dubbo的版本
    • scope表示配置作用范围,分别是应用(application)或服务(service)粒度。必填
    • key 指定规则体作用在哪个服务或应用。必填
    • scope=application时,key取值为application名称
    • enabled=true 覆盖规则是否生效,可不填,缺省生效。
    • 定义具体的覆盖规则内容,可以指定n(n>=1)个规则体。必填
      • side,
      • applications
      • services
      • parameters
      • addresses
      • providerAddresses

    **对于绝大多数配置场景,只需要理清楚以下问题基本就知道配置该怎么写了:**

    1. 要修改整个应用的配置还是某个服务的配置。

      • 应用:scope: application, key: app-name(还可使用services指定某几个服务)。
      • 服务:scope: service, key:group+service+version
      • 消费者:side: consumer ,作用到消费端时(你还可以进一步使用providerAddress, applications选定特定的提供者示例或应用)。
      • 提供者:side: provider
    2. 配置是否只对某几个特定实例生效。

      • 所有实例:addresses: ["0.0.0.0"]addresses: ["0.0.0.0:*"]具体由side值决定。
      • 指定实例:addersses[实例地址列表]
    3. 要修改的属性是哪个。

    示例

    1. 禁用提供者:(通常用于临时踢除某台提供者机器,相似的,禁止消费者访问请使用路由规则)

      1. ---
      2. scope: application
      3. key: demo-provider
      4. enabled: true
      5. - addresses: ["10.20.153.10:20880"]
      6. side: provider
      7. parameters:
      8. disabled: true
      9. ...
    2. 调整权重:(通常用于容量评估,缺省权重为 200)

      1. ---
      2. configVersion: v2.7
      3. scope: application
      4. key: demo-consumer
      5. enabled: true
      6. configs:
      7. - side: consumer
      8. parameters:
      9. loadbalance: random
      10. ...