配置规则

在 Dubbo 中配置应用程序级治理规则和服务级治理规则

覆盖规则

覆盖规则是 Dubbo 设计的一种功能,可以在不重启应用程序的情况下动态调整 RPC 调用的行为。从 2.7.0 版本开始,支持在 **服务** 和 **应用程序** 两个粒度上进行动态配置调整。

概述

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

应用程序粒度

# Change the weight of all services (scope:application) provided by the application demo (key:demo) on port 20880 (side:provider) to 1000 (weight:1000).
---
configVersion: v2.7
scope: application
key: demo
enabled: true
configs:
- addresses: ["0.0.0.0:20880"]
  side: provider
  parameters:
  weight: 1000
  ...

服务粒度

# All consumer (side:consumer) DemoService service (key:org.apache.dubbo.samples.governance.api.DemoService) application instance (addresses:[0.0.0.0]), the timeout is changed to 6000ms
---
configVersion: v2.7
scope: service
key: org.apache.dubbo.samples.governance.api.DemoService
enabled: true
configs:
- addresses: [0.0.0.0]
  side: consumer
  parameters:
  timeout: 6000
  ...

详细规则

配置模板

---
configVersion: v2.7
scope: application/service
key: app-name/group+service+version
enabled: true
configs:
- addresses: ["0.0.0.0"]
  providerAddresses: ["1.1.1.1:20880", "2.2.2.2:20881"]
  side: consumer
  applications/services: []
  parameters:
    timeout: 1000
    cluster: failfase
    loadbalance: random
- addresses: ["0.0.0.0:20880"]
  side: provider
  applications/services: []
  parameters:
    threadpool: fixed
    threads: 200
    iothreads: 4
    dispatcher: all
    weight: 200
...

in

  • configVersion 表示 dubbo 版本
  • scope 表示配置范围,即应用程序或服务的粒度。**必填**。
  • key 指定规则体作用于哪个服务或应用程序。**必填**。
    • 当 scope=service 时,key 值为 [{group}:]{service}[:{version}] 的组合
  • 当 scope=application 时,key 值为应用程序名称
  • enabled=true 覆盖规则是否有效,可以留空,默认有效。
  • configs 定义具体的覆盖规则内容,可以指定 n (n>=1) 个规则体。**必填**。
    • side,
    • applications
    • services -parameters
    • addresses
    • providerAddresses

对于大多数配置场景,您只需要弄清楚以下问题,就知道如何编写配置

  1. 是否要修改整个应用程序或服务的配置。

    • 应用程序: scope: application, key: app-name(也可以使用 services 指定某些服务)。
    • 服务: scope: service, key:group+service+version
  2. 修改是否应用于消费者还是提供者。

    • 消费者: side: consumer,当作用于消费者端时(可以进一步使用 providerAddressapplications 选择特定的提供者示例或应用程序)。
    • 提供者: side: provider
  3. 配置是否只对某些特定实例生效。

    • 所有实例: addresses: ["0.0.0.0"]addresses: ["0.0.0.0:*"] 取决于 side 值。
    • 指定实例: addersses[实例地址列表]
  4. 要修改哪个属性。

示例

1. 禁用提供者:(通常用于临时踢掉提供者机器,类似地,请使用路由规则禁止消费者访问)

---
configVersion: v2.7
scope: application
key: demo-provider
enabled: true
configs:
- addresses: ["10.20.153.10:20880"]
  side: provider
  parameters:
    disabled: true
...

2. 调整权重:(通常用于容量评估,默认权重为 200)

---
configVersion: v2.7
scope: application
key: demo-provider
enabled: true
configs:
- addresses: ["10.20.153.10:20880"]
  side: provider
  parameters:
    weight: 200
...

3. 调整负载均衡策略:(默认负载均衡策略为随机)

---
configVersion: v2.7
scope: application
key: demo-consumer
enabled: true
configs:
- side: consumer
  parameters:
    loadbalance: random
...

4. 服务降级:(通常用于临时屏蔽出现错误的非关键服务)

```yaml

configVersion: v2.7 scope: service key: org.apache.dubbo.samples.governance.api.DemoService enabled: true configs

  • side: consumer parameters: force: return null …

上次修改时间:2023 年 1 月 2 日:Enhance en docs (#1798) (95a9f4f6c1c)