概述
在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及以上。