流量灰度
在 Dubbo-Admin 中配置标签路由规则以实现灰度发布
Dubbo 提供流量灰度服务管理功能,可以配置标签路由规则和条件路由,实现灰度发布,无需重启应用。
Dubbo 可以通过 XML 配置、注解配置和动态配置实现流量灰度。这里主要介绍动态配置方法,其他配置方法请参考旧文档 配置
开始之前
请确保成功运行 Dubbo-Admin
背景信息
产品开发过程中会遇到需求变更和版本迭代的场景。为了兼顾需求变更和系统稳定性,发布应该尽可能平滑,受影响的人数应该从小到大,出现问题立即回滚。Dubbo-Admin 提供动态流量灰度功能,可以帮助您竞标新服务,平滑发布服务,提高服务稳定性和可用性。
步骤
条件路由
- 登录 Dubbo-Admin 控制台
- 在左侧导航栏中,选择服务治理 > 条件路由。
- 点击创建按钮,在创建新路由规则面板中填写规则内容,然后点击保存。
详细规则
配置模板
---
scope: application/service
force: true
runtime: true
enabled: true
key: app-name/group+service+version
conditions:
- application=app1 => address=*:20880
- method=sayHello => address=*:20880
对于流量灰度场景,您只需要明确以下问题,就知道如何编写配置
- 修改消费者应用的配置或服务的配置。
- 应用:
scope: application, key: app-name
(也可以使用services
指定某些服务)。 - 服务:
scope: service, key:group+service+version
。
- 应用:
- 路由结果为空时,是否强制返回。
- force=false: 当路由结果为空时,降级标签为空的提供者。
- force=true: 当路由结果为空时,会直接返回异常。
- 路由规则的优先级
- priority=1: 路由规则的优先级,用于排序,优先级越高,执行越靠前,可以留空,默认值为 0。
- 配置是否只对某些特定实例生效。
- 所有实例:
addresses: ["0.0.0.0"]
或addresses: ["0.0.0.0:*"]
取决于侧值。 - 指定实例:
addersses[实例地址列表]
。
- 所有实例:
- 要修改的条件规则。
- => 前面是消费者匹配条件。所有参数都与消费者的 URL 进行比较。当消费者满足匹配条件时,会对消费者执行后续的过滤规则。
- => 之后是提供者地址列表的过滤条件。所有参数都与提供者的 URL 进行比较,最终消费者只获得过滤后的地址列表。
- 如果匹配条件为空,则表示应用于所有消费者,例如:=> host != 10.20.153.11
- 如果过滤条件为空,则禁止访问,例如:host = 10.20.153.10 =>
标签路由
- 登录 Dubbo-Admin 控制台
- 在左侧导航栏中,选择服务治理 > 标签路由。
- 点击创建按钮,在创建新标签规则面板中填写规则内容,然后点击保存。
详细规则
配置模板
---
force: false
runtime: true
enabled: true
key: governance-tagrouter-provider
tags:
- name: tag1
addresses: ["127.0.0.1:20880"]
- name: tag2
addresses: ["127.0.0.1:20881"]
...
对于流量灰度场景,您只需要明确以下问题,就知道如何编写配置
- 修改服务所属提供者应用的配置。
- 应用:
scope: application, key: app-name
(也可以使用services
指定某些服务)。
- 应用:
- 路由结果为空时,是否强制返回。
- force=false: 当路由结果为空时,降级标签为空的提供者。
- force=true: 当路由结果为空时,会直接返回异常。
- 路由规则的优先级
- priority=1: 路由规则的优先级,用于排序,优先级越高,执行越靠前,可以留空,默认值为 0。
- 配置是否只对某些特定实例生效。
- 所有实例:
addresses: ["0.0.0.0"]
或addresses: ["0.0.0.0:*"]
取决于侧值。 - 指定实例:
addersses[实例地址列表]
。
- 所有实例:
- 要修改的标签名称。
结果验证
选择与流量灰度配置相关的应用,触发调用验证。
上次修改时间:2023 年 2 月 9 日:Update docsy to 0.6.0 (#2141) (20081578326)