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

背景信息

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

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

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

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

全链路流控示例图

名词解释

  • 入口应用

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

  • 泳道

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

  • 泳道组

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

使用限制

  • 加入全链路流量控制的应用,将不再支持金丝雀发布。
  • 一个微服务空间下,最多能创建2个泳道组。
  • 一个泳道组内,最多能创建5个泳道。