首页 > 其他分享 >基于 Dubbo Admin 实现流量灰度

基于 Dubbo Admin 实现流量灰度

时间:2022-12-21 11:45:19浏览次数:61  
标签:Dubbo Admin 0.0 配置 灰度 为空 路由

Dubbo提供流量灰度的服务治理能力,可以在无需重启应用的情况下,配置标签路由规则和条件路由实现灰度发布。

Dubbo可以通过XML配置,注解配置,动态配置实现流量灰度,这里主要介绍动态配置的方式,其他配置方式请参考旧文档配置

开始之前

请确保成功运行Dubbo-Admin

背景信息

在产品开发中会遇到需求变化、版本迭代的场景,为了兼顾需求变化和系统稳定,发布要尽可能平滑,影响人群要由少到多,一旦有问题马上回滚。Dubbo-Admin提供了动态的流量灰度能力,能够帮助您对新服务作标,服务平滑发布,提高服务的稳定和可用性。

操作步骤

条件路由

  1. 登录Dubbo-Admin控制台
  2. 在左侧导航栏选择服务治理 > 条件路由。
  3. 点击创建按钮,在创建新路由规则面板中,填写规则内容,然后单击保存。

规则详解

配置模板
---
scope: application/service
force: true
runtime: true
enabled: true
key: app-name/group+service+version
conditions:
  - application=app1 => address=*:20880
  - method=sayHello => address=*:20880

对于流量灰度场景,只需要理清楚以下问题基本就知道配置该怎么写了:

  1. 要修改消费者应用的配置还是某个服务的配置。
    • 应用:scope: application, key: app-name(还可使用services指定某几个服务)。
    • 服务:scope: service, key:group+service+version
  2. 当路由结果为空,是否强制返回。
    • force=false: 当路由结果为空,降级请求tag为空的提供者。
    • force=true: 当路由结果为空,直接返回异常。
  3. 路由规则的优先级
    • priority=1: 路由规则的优先级,用于排序,优先级越大越靠前执行,可不填,缺省为 0。
  4. 配置是否只对某几个特定实例生效。
    • 所有实例:addresses: ["0.0.0.0"] addresses: ["0.0.0.0:*"] 具体由side值决定。
    • 指定实例:addersses[实例地址列表]
  5. 要修改的条件规则。
    • => 之前的为消费者匹配条件,所有参数和消费者的 URL 进行对比,当消费者满足匹配条件时,对该消费者执行后面的过滤规则。
    • => 之后为提供者地址列表的过滤条件,所有参数和提供者的 URL 进行对比,消费者最终只拿到过滤后的地址列表。
    • 如果匹配条件为空,表示对所有消费方应用,如:=> host != 10.20.153.11
    • 如果过滤条件为空,表示禁止访问,如:host = 10.20.153.10 =>

标签路由

  1. 登录Dubbo-Admin控制台
  2. 在左侧导航栏选择服务治理 > 标签路由。
  3. 点击创建按钮,在创建新标签规则面板中,填写规则内容,然后单击保存。

规则详解

配置模板
---
  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"]
 ...

对于流量灰度场景,只需要理清楚以下问题基本就知道配置该怎么写了:

  1. 要修改服务所属提供者应用的配置。
    • 应用:scope: application, key: app-name(还可使用services指定某几个服务)。
  2. 当路由结果为空,是否强制返回。
    • force=false: 当路由结果为空,降级请求tag为空的提供者。
    • force=true: 当路由结果为空,直接返回异常。
  3. 路由规则的优先级
    • priority=1: 路由规则的优先级,用于排序,优先级越大越靠前执行,可不填,缺省为 0。
  4. 配置是否只对某几个特定实例生效。
    • 所有实例:addresses: ["0.0.0.0"] addresses: ["0.0.0.0:*"] 具体由side值决定。
    • 指定实例:addersses[实例地址列表]
  5. 要修改的标签名。

结果验证

选择和流量灰度配置相关的应用,触发该调用验证。

原文首于 Dubbo 官网:https://cn.dubbo.apache.org/zh/overview/tasks/traffic-management/traffic-gray/
欢迎在 https://github.com/apache/dubbo 给 Dubbo Star。
搜索关注官方微信公众号:Apache Dubbo,了解更多业界最新动态,掌握大厂面试必备 Dubbo 技能

标签:Dubbo,Admin,0.0,配置,灰度,为空,路由
From: https://www.cnblogs.com/apache-dubbo/p/16995906.html

相关文章

  • Dubbo架构设计与源码解析(二) 服务注册
    一、Dubbo简介Dubbo是一款典型的高扩展、高性能、高可用的RPC微服务框架,用于解决微服务架构下的服务治理与通信问题。其核心模块包含【RPC通信】和【服务治理】,其中......
  • Dubbo架构设计与源码解析(一) 架构设计
    作者:黄金一、架构演变单应用架构---->垂直架构---->分布式架构---->微服务架构---->云原生架构二、Dubbo总体架构1、角色职能•Container:服务容器(to......
  • 基于 Dubbo Admin 动态进行流量隔离
    Dubbo提供动态流量隔离的服务治理能力,可以在无需重启应用的情况下,动态进行流量隔离。Dubbo可以通过XML配置,注解配置,动态配置实现流量隔离,这里主要介绍动态配置的方式,其他......
  • 如何基于 Spring Boot 快速开发一个 Dubbo 微服务应用
    Dubbo还提供了包括XML、API等多种启动与接入方式,更多开发方式和配置细节可参见配置手册。下载示例代码完整示例代码在dubbo-samples中。下载源码gitclone-bm......
  • 搭建LAMP并使用mysql的phpMyadmin图形化管理工具
    #1.环境为centos7系统#2.安装httpd服务yum-yinstallhttp#安装HTTP服务systemctlstarthttpd#启动HTTP服务systemctlenablehttpd#开机启动HTTP服务firewall-c......
  • Springboot整合Apache Dubbo
    ​​Springboot​​​整合​​ApacheDubbo​​一、通过​​Docker​​​安装​​Zookeeper​​​​docker-compose​​​的​​yaml​​文件version:'3'services:zoo......
  • 基于 Dubbo Admin 临时踢除问题服务实例
    Dubbo提供临时踢除问题服务实例的服务治理能力,可以在无需重启应用的情况下,临时踢除问题服务实例。Dubbo可以通过XML配置,注解配置,动态配置实现临时踢除问题服务实例,这里主......
  • Dubbo架构设计与源码解析(一) 架构设计
    作者:黄金一、架构演变单应用架构---->垂直架构---->分布式架构---->微服务架构---->云原生架构二、Dubbo总体架构1、角色职能•Container:服务......
  • Spring Cloud实践:降级、限流、滚动、灰度、AB、金丝雀的实现思路
    端口:8888,方便起见直接读取配置文件,生产环境可以读取git。application-dev.properties为全局配置。先启动配置中心,所有服务的配置(包括注册中心的地址)均从配置中心读取。consu......
  • 基于 Dubbo Admin 动态调整服务超时时间
    Dubbo提供动态调整超时时间的服务治理能力,可以在无需重启应用的情况下,动态调整服务超时时间。Dubbo可以通过XML配置,注解配置,动态配置实现动态调整超时时间,这里主要介绍动......