标签路由通过标签将一个或多个服务的提供者划分到同一个分组,从而约束流量只在指定分组中流转,实现流量隔离的目的。标签路由可以作为蓝绿发布、灰度发布等场景的能力基础。
前提条件
使用限制
限制项 | 限制值 | 说明 |
---|---|---|
Spring Cloud版本 | Spring Cloud Edgware及以上版本。 | 该内容主要针对微服务治理中心,您的应用需要接入MSE服务治理中心。 |
Dubbo版本 | 2.5.3~2.7.8 | 该内容主要针对微服务治理中心,您的应用需要接入MSE服务治理中心。 |
客户端类型 |
|
该内容主要针对微服务治理中心,您的应用需要接入MSE服务治理中心。 |
Java应用JDK版本 | 目前支持JDK 1.6、1.7和1.8版本应用接入。 | 该内容主要针对微服务治理中心,您的应用需要接入MSE服务治理中心。 |
负载均衡类型 |
|
该内容主要针对微服务治理中心,您的应用需要接入MSE服务治理中心。 |
Spring Cloud Gateway版本 | Spring Cloud Gateway 2.1.0.RELEASE+ | 该内容主要针对微服务治理中心,您的应用需要接入MSE服务治理中心。 |
注册中心类型 |
|
该内容主要针对微服务治理中心,您的应用需要接入MSE服务治理中心。 |
应用场景
- 多版本开发测试
多个版本并行开发时,需要为每个版本准备一套开发环境。如果版本较多,开发环境成本会非常大。流量隔离方案可以在多版本开发测试时大幅度降低资源成本。
使用基于标签路由的全链路流量隔离机制,可以将特定的流量路由到指定的开发环境。例如在开发环境1中只修改应用B和应用D,则为这两个应用在开发环境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版本,对不同版本进行验证,从而降低新产品或新特性的发布风险,为产品创新提供保障。
操作场景
本文以cartservice为例,分别给应用打上tag1和tag2两个标签,将应用划分为2个分组,每个分组各包含四个节点。

本文介绍如何为cartservice创建标签路由,主要包含以下两步:
- 在ACK中为应用接入MSE微服务治理并设置标签。
- 在MSE微服务治理中为应用创建标签路由。
在ACK中为应用接入MSE微服务治理并设置标签
在MSE微服务治理中为应用创建标签路由
结果验证
本文仅通过一个示例介绍如何为应用创建标签路由,您可以为应用参照配置,然后根据实际业务需求进行验证。