五、 动态配置规则
动态配置规则(ConfigurationRule)是Dubbo设计的在无需重启应用的情况下,动态调整RPC调用行为的一种能力,也成为动态覆盖规则,因为它是通过在运行态覆盖Dubbo实例或者Dubbo实例中URL地址的各种参数值,实现改变RPC调用行为的能力。
使用动态配置规则,有以下几条关键信息值得注意:
• 设置规则生效过滤条件。配置规则支持一系列的过滤条件,用来限定规则只对符合特定条件的服务、应用或实例才生效。
• 设置规则生效范围。一个rpc服务有服务发起方(消费者)和服务处理方(提供者)两个角色,对某一个服务定义的规则,可以具体到限制是对消费者还是提供者生效。
• 选择规则管理粒度。Dubbo支持从服务和应用两个粒度来管理和下发规则。
以下一个应用级别的配置示例,配置生效后,shop-detail应用下提供的所有服务都将启用accesslog,对shop-detail部署的所有实例生效。
以下是一个服务级别的配置示例,key:org.apache.dubbo.samples.UserService和side:consumer说明这条配置对所有正在消费UserService的Dubbo实例生效,在调用失败后都执行4次重试。match条件进一步限制了消费端的范围,限定为只对应用名为shop-frontend的这个消费端应用生效。
1. ConfigurationRule
配置规则主体,定义要设置的目标服务或应用、具体的规则配置。具体配置规则(configs)可以设置多条。
2. Config
具体的规则配置定义,包含生效端(consumer或provider)和过滤条件。
3. MatchCondition
过滤条件,用来设置规则对哪个服务(service)、应用(application)、实例(address),或者包含哪些参数(param)的实例生效。
Field |
Type |
Description |
Required |
address |
StringMatch |
The instance address matching condition for this config rule to take effect.
-xact:“value”for exact string match -prefix:“value”for prefix-based match -regex:“value”for RE2 style regex-based match
|
No |
service |
StringMatch (oneof) |
The service matching condition for this config rule to take effect. Effective when scope: application is set.
-exact:“value”for exact string match -prefix:“value”for prefix-based match -regex:“value”for RE2 style regex-based match
|
No |
application |
StringMatch (oneof) |
The application matching condition for this config rule to take effect. Effective when scope: service is set.
-exact:“value”for exact string match -prefix:“value”for prefix-based match -regex:“value”for RE2 style regex-based match
|
No |
param |
ParamCondition[] |
The Dubbo url keys and values matching condition for this config rule to take effect. |
No |
4. ParamCondition
定义实例参数(param)过滤条件,对应到Dubbo URL地址参数。
5. StringMatch
Field |
Type |
Description |
Required |
exact |
string (oneof) |
exact string match |
No |
prefix |
string (oneof) |
prefix-based match |
No |
regex |
string (oneof) |
RE2 style regex-based match |
No |