全链路流量控制

2025-09-22 07:00:09

全链路流量控制简介

在MSAP中支持对微服务应用进行全链路流量控制。全链路流量控制功能可以帮助您快速灵活地创建一个流量控制环境,将具有一定特征的流量路由到目标版本应用。 

背景信息 

在MSAP中,当您部署的应用存在升级版本时,由于应用间的调用是随机的,会导致无法将具有一定特征的流量路由到应用的目标版本。全链路流量控制功能将应用的相关版本隔离成一个独立的运行环境(即泳道),通过设置流控路由规则,将满足规则的请求流量路由到目标版本应用。 

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

客户下单后流量从入口应用(或者微服务网关)进来,调用商城应用,商城应用再调用订单应用,订单应用调用下游的支付应用。 

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

在示意图中,商城应用和订单应用分别存在两个升级版本(V1.1和V1.2),此时访问请求会随机转发到各个版本,无法进行流量控制。借助全链路流量控制功能,将版本V1.1设置为tag1泳道;将版本V1.2设置为tag2泳道,并在入口应用处设置流控规则,当进入入口应用的请求流量满足流控规则时,则将请求流量路由到目标泳道。 

名词解释 

  • 入口应用

    微服务体系内的流量入口。入口应用可以是Spring Cloud Gateway、Netflix Zuul Gateway引擎类型网关或者Spring Boot、Spring MVC、Dubbo应用。

  • 泳道

    为相同版本应用定义的一套隔离环境。只有满足了流控路由规则的请求流量才会路由到对应泳道里的打标应用。一个应用可以属于多个泳道,一个泳道可以包含多个应用,应用和泳道是多对多的关系。

  • 泳道组

    泳道的集合。泳道组的作用主要是为了区分不同团队或不同场景。

使用限制 

  • 加入全链路流量控制的应用,将不再支持金丝雀发布。

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


使用全链路流量控制将流量路由到目标应用

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

前提条件 

部署新版本应用或升级应用。 

背景信息 

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

客户下单后流量从入口应用(或者微服务网关)进来,调用商城应用,商城应用再调用订单应用,订单应用调用下游的支付应用。 

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

创建泳道组 

在左侧导航栏,选择微服务治理 > 全链路流量控制,单击创建泳道组及泳道按钮。 

  • 环境:选择一个环境。

  • 泳道组名称:自定义一个泳道组名称。

  • 入口类型:目前只支持MSAP中部署的应用/网关。

  • 入口应用:选择一个入口应用,一般为网关。

  • 泳道组涉及的所有应用:选择您的入口应用/网关所涉及的所有相关服务。

创建泳道 

在左侧导航栏,选择微服务治理 > 全链路流量控制,创建好泳道组后,在泳道组页面最下方,点击创建第一个分流泳道。 

  • 环境:选择一个环境。

  • 分流泳道名称:自定义一个分流泳道名称。

  • 接收打标流量应用:单击添加泳道应用,在所属泳道组内选择应用。

  • 流控规则:流控路由开关,默认关闭。

  • Path:选择您的入口应用/网关所涉及的所有相关服务。

  • 条件模式:请根据实际需要选择条件模式,包含同时满足下列条件和满足下列任一条件。

  • 条件列表:单击添加规则条件,可根据需要添加多项条件。您可以设置Cookie、Header、Parameter和等不同类型的条件。

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

1 对入口应用发起请求,若泳道条件列表中设置的规则为userId = 1时,流量到泳道打标应用,则请求http://ip:port/path/userId=1,流量会到泳道中设置的打标应用中。 

2 通过观察返回结果查看流量是否到对应版本的应用,同时也可以通过界面查看流量的分布情况。


IlDiQDEzSR3i