流量灰度
在 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: 当路由结果为空,降级请求tag为空的提供者。
- force=true: 当路由结果为空,直接返回异常。
- 路由规则的优先级
- priority=1: 路由规则的优先级,用于排序,优先级越大越靠前执行,可不填,缺省为 0。
- 配置是否只对某几个特定实例生效。
- 所有实例:
addresses: ["0.0.0.0"]
或addresses: ["0.0.0.0:*"]
具体由side值决定。 - 指定实例:
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: 当路由结果为空,降级请求tag为空的提供者。
- force=true: 当路由结果为空,直接返回异常。
- 路由规则的优先级
- priority=1: 路由规则的优先级,用于排序,优先级越大越靠前执行,可不填,缺省为 0。
- 配置是否只对某几个特定实例生效。
- 所有实例:
addresses: ["0.0.0.0"]
或addresses: ["0.0.0.0:*"]
具体由side值决定。 - 指定实例:
addersses[实例地址列表]
。
- 所有实例:
- 要修改的标签名。
结果验证
选择和流量灰度配置相关的应用,触发该调用验证。
最后修改 December 16, 2022: Fix check (#1736) (97972c1)