标签路由通过标签将一个或多个服务的提供者划分到同一个分组,从而约束流量只在指定分组中流转,实现流量隔离的目的。标签路由可以作为蓝绿发布、灰度发布等场景的能力基础。
背景信息
标签路由目前仅支持ECS集群中的应用。
应用场景
多版本开发测试
多个版本并行开发时,需要为每个版本准备一套开发环境。如果版本较多,开发环境成本会非常大。流量隔离方案可以在多版本开发测试时大幅度降低资源成本。
使用基于标签路由的全链路流量隔离机制,可以将特定的流量路由到指定的开发环境。例如,在开发环境1中,为应用B(V1.1)和应用D(V1.1)创建Tag1标签,并配置对应的路由规则。入口应用A调用B时,会判断流量是否满足路由规则。如果满足,路由到开发环境1中应用B的V1.1版本;如果不满足,路由到基线环境中的应用B的V1版本。应用C调用应用D时,同样根据流量决定路由到应用D的V1版本或V1.1版本。

相同应用的多版本间流量隔离
如果一个应用有多个版本在线上同时运行,部署在不同环境中,例如日常环境和特殊环境。那么可以使用标签路由对不同环境中的不同版本进行流量隔离,将秒杀订单流量或不同渠道订单流量路由到特殊环境,将正常的流量路由到日常环境。即使特殊环境异常,本应进入特殊环境的流量也不会进入日常环境,从而不会影响日常环境的使用。

A/B Testing
线上有多个应用版本同时运行,期望对不同版本的应用进行A/B Testing。那么可以使用标签路由的全链路流量控制功能,将地域A的客户流量路由到V1版本,地域B的客户流量路由到V1.1版本。通过对不同版本的验证,达到降低新产品或新特性的发布风险,为产品创新提供保障的目的。

操作流程
假设ECS集群中部署了应用A,该应用有一个默认分组,共包含3个应用实例。
标签路由流程如下:
- 创建标签:为该应用新建两个分组group1和group2,将默认分组下的2个应用示例分别更换到分组group1和group2,然后分别为group1和group2分组创建标签路由中的标签。
- 创建标签路由规则:基于group1和group2的标签分别创建标签路由规则。
标签路由创建完成后,当应用B调用A时,流量会根据规则被路由到group1和group2,其它不满足group1和group2的路由规则的流量会被路由到默认分组。
创建标签
在应用中新建分组,并为该分组添加实例,然后通过分组的JVM设置为该分组创建标签。
创建标签路由规则
标签(即分组)创建完成后,需要分别基于不同标签创建路由规则。
结果验证
本文仅通过一个示例介绍如何为应用创建标签路由,您可以为应用参照配置,然后根据实际业务需求进行验证。