配置规则
在 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
对于大多数配置场景,您只需要弄清楚以下问题,就知道如何编写配置
是否要修改整个应用程序或服务的配置。
- 应用程序:
scope: application, key: app-name
(也可以使用services
指定某些服务)。 - 服务:
scope: service, key:group+service+version
。
- 应用程序:
修改是否应用于消费者还是提供者。
- 消费者:
side: consumer
,当作用于消费者端时(可以进一步使用providerAddress
、applications
选择特定的提供者示例或应用程序)。 - 提供者:
side: provider
。
- 消费者:
配置是否只对某些特定实例生效。
- 所有实例:
addresses: ["0.0.0.0"]
或addresses: ["0.0.0.0:*"]
取决于 side 值。 - 指定实例:
addersses[实例地址列表]
。
- 所有实例:
要修改哪个属性。
示例
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)