您可以为部署在EDAS K8s环境中的Spring Cloud和Dubbo微服务应用配置全链路流量控制,将具有一定特征的流量路由到目标版本应用。

前提条件

为应用配置全链路流量控制,需要提前完成以下工作:
  • 部署新版本应用或升级应用。具体操作,请参见升级和回滚应用概述(K8s)
  • 如果入口应用是Spring Cloud Gateway或Netflix Zuul微服务网关,则需要提前创建微服务网关并绑定EDAS微服务空间。

    使用Spring Cloud Gateway作为入口网关时,需要Spring Cloud Gateway的版本在2.1.x及以上。

  • 为入口应用绑定负载均衡SLB。具体操作,请参见添加负载均衡SLB复用负载均衡SLB

背景信息

本文以电商架构中的下单场景为例介绍全链路流控功能。

客户下单后流量从入口应用(或者微服务网关)进来,调用交易中心,交易中心再调用商品中心,商品中心调用下游的库存中心。

交易中心和商品中心各有两个新版本(1和2)在运行,需要对这两个新版本进行灰度验证。此时在入口应用(或者微服务网关)上期望将满足特定流控规则的请求流量路由到新版本,其余流量全部路由到线上(正式)版本。

全链路流量控制示意

创建泳道组

  1. 登录EDAS控制台
  2. 在左侧导航栏选择微服务治理 > 全链路流量控制
  3. 全链路流量控制页面顶部菜单栏选择地域,在页面中选择目标微服务空间。
  4. 全链路流量控制底部,单击创建泳道组及泳道
    如果您选择的微服务空间内已经创建过泳道组,则在选择泳道组文本框右侧单击创建
    说明 一个微服务空间内,最多创建2个泳道组。
  5. 创建泳道对话框设置泳道组相关参数,然后单击确定
    创建泳道组
    参数 描述
    命名空间 全链路流量控制页面所选目标微服务空间,不可编辑。
    泳道组名称 自定义设置泳道组的名称。支持大小写字母、数字、短划线(-)和下划线(_),长度不超过64个字符。
    入口类型 根据您的需要选择入口类型,包含入口应用(在EDAS部署应用/网关)入口网关(微服务网关)
    说明 目前仅支持Spring Cloud Gateway和Netflix Zuul引擎类型的网关,且所创网关必须关联EDAS命名空间。
    入口应用 仅选择入口类型入口应用(在EDAS部署应用/网关)时,出现该参数。
    入口网关 仅选择入口类型入口网关(微服务网关)时,出现该参数。
    泳道组涉及所有应用 单击添加流控链路涉及应用,选择您的入口应用或入口网关所涉及的所有相关服务。
    创建泳道组完成后,在全链路流量控制页面的泳道组涉及应用区域出现您所创建的泳道组。请检查入口应用和所涉及的应用是否正确,如需变更泳道组信息,请单击编辑并修改相关信息。

创建泳道

  1. 全链路流量控制页面上方选择创建和泳道组时相同的微服务空间,然后底部单击点击创建第一个分流泳道
    注意 加入全链路流量控制的应用,将不再支持金丝雀发布。
  2. 创建流控泳道面板设置流控泳道相关参数,然后单击确定
    创建泳道
    参数 描述
    命名空间 默认为在全链路流量控制页面选择的微服务空间,而且需要保证该微服务空间之前已经创建了泳道组,不可编辑。
    流控泳道名称 自定义设置流控泳道的名称。支持大小写字母、数字、短划线(-)和下划线(_),长度不超过64个字符。
    接收打标流量应用 单击添加泳道应用,在所属泳道组内选择应用。
    说明
    • 您可以在同一个流控泳道选择多个应用,也可以为每个应用创建一个流控泳道。
    • 一个泳道组内,最多创建5个泳道。
    • 创建泳道时支持不设置接收打标流量应用,可在编辑泳道时设置接受打标流量应用。
    流控规则
    开关 流控路由开关,默认打开。
    Path HTTP相对路径,置空表示任意路径。请根据实际情况设置。
    条件模式 请根据实际需要选择条件模式,包含同时满足下列条件满足下列任一条件
    • 同时满足下列条件:必须同时满足设置的所有条件才能生效。
    • 满足下列任一条件:只需满足任一条件即可生效。
    条件列表 单击添加规则条件,可根据需要添加多项条件。您可以设置CookieHeaderParameterBody Content等不同类型的条件。
    在本示例中添加的条件为:
    • 参数类型为Parameter,参数env=red,即满足该条件时,流量进入到1.0版本的服务中。
    • 参数类型为Parameter,参数env=blue,即满足该条件时,流量进入到2.0版本的服务中。
    创建泳道成功后,在全链路流量控制页面的流控分配区域出现您所创建的泳道。请检查泳道名称、流控规则和打标应用是否正确,如需修改泳道信息,请单击编辑修改泳道相关信息。
  3. 可选:如需创建多条泳道,在流控分配区域单击创建泳道并设置泳道相关参数。
    说明 一个泳道组内,最多支持创建5条泳道。

验证特征流量路由到目标应用

  1. 获取入口应用或者入口网关的负载均衡SLB的地址。
    1. 应用列表页面,单击入口应用或入口网关的名称。
    2. 应用总览页面的访问方式配置区域,复制并记录负载均衡SLB的地址。
  2. 在浏览器或者其他工具上多次访问泳道组内的打标应用。

    假设在浏览器中输入http://ip:prt/**?env=red访问交易中心应用,返回结果只会有一种,即表示实现了将特征流量路由到目标应用。

    其中**是流控规则中的Path,env=red是流控规则中的条件。

    A2[172.20.**.**] -> B2[172.20.**.**] -> C[172.20.**.**]
  3. 查看打标应用的流量监控图。
    1. 全链路流量控制页面选择目标泳道组。
    2. 全链路流量控制设置时间段,入口应用监控(总)入口应用(未打标部分)流控分配区域自动刷新监控图。
      观察流量监控图,您会发现几乎均分的请求流量路由到了打标应用,且入口应用总QPS=未打标部分QPS+打标部分QPS打标应用流量监控图

查看所有应用监控图

您除了查看入口应用总的监控图、未打标部分监控图和打标部分监控图外,您还可以查看泳道组内所有应用的监控图。通过比对分析所有应用的监控图,可以分析出更多有用信息。

  • 可以看出同一时刻,调用的是哪些应用。
  • 分析流量逃逸问题,判断逃逸对象。