标签路由
标签路由是将每个服务打上一个标签,通过标签将标签相同的服务分为同一个分组,然后约束流量在同一个分组内流转,以此实现灰度发布、金丝雀发布、蓝绿发布等功能。
版本限制
框架 | 限制 | 详情 |
---|---|---|
Spring Cloud | Spring Cloud Edgware及以上版本 | 客户端:Feign、RestTemplate 负载均衡:Ribbon、LoadBalancer |
Dubbo | 2.5.3~2.7.8 | 支持Alibaba Dubbo、Apache Dubbo |
注册中心 | Nacos、Eureka、Zookeeper | -- |
jdk版本 | 1.8+ | -- |
应用场景
A/B测试
在营销活动中,经常会有A/B测试,A/B测试是为了测试不同的规则对业务的影响,所以一个应用会有多个版本同时运行,可以通过标签的方式区分不同的版本,对不同版本的应用进行流量隔离,将特殊用户的流量路由到特殊版本,从而实现A/B测试。
开通标签路由
步骤1:应用设置标签。
为云容器引擎集群应用设置标签,为应用容器添加环境变量MSE_SERVICE_TAG=gray。
为ECS应用设置标签,在启动应用时,添加JVM启动参数-Dctgcloud.service.tag=gray。
步骤2:在微服务治理中心控制台创建标签路由。
-
登录微服务治理中心控制台。
-
在左侧导航栏选择 微服务治理中心 ->网关治理。
-
在网关治理页面单击目标应用卡片。
-
在网关页面左侧导航栏选择流量治理 - 标签路由,查看服务标签。
-
在标签路由页点击流量分配,为标签按比例分配流量。
-
在标签路由页的流量规则栏新增流量规则。
流量规则参数说明:
参数 | 说明 |
---|---|
路由名称 | 路由规则的名称。 |
应用 | 所选的应用。 |
标签 | 设置的标签名。 |
应用实例 | 设置了该标签的实例ip。 |
是否链路传递 | 代表开启全链路流控。 |
框架类型 | Spring Cloud Dubbo。 |
Path | SpringCloud为path路径,Dubbo为接口。 |
条件模式 | 满足一个条件,或者满足所有条件。 |
条件列表 | 可以设置Header、Cookie、Parameter和Body Content四种参数类型。 |
是否开启流量规则 | 流量规则开关。 |
离群摘除
在微服务场景中,当服务提供者的实例出现异常时,服务消费者无法感知到提供者出现异常,此时就可能出现异常调用。通过配置离群摘除功能可以实时监测下游实例的可用性,摘除异常实例,提升业务的可用性。
版本限制
框架 | 限制 | 详情 |
---|---|---|
Spring Cloud | Spring Cloud Dalston及以上版本 | -- |
Dubbo | 2.5.3+ | 支持Apache Dubbo 不支持Alibaba Dubbo |
Jdk版本 | 1.8+ | -- |
开通离群摘除
- 登录微服务治理中心控制台。
- 在左侧导航栏选择 微服务治理中心 ->应用治理。
- 在应用治理页面单击目标应用卡片。
- 在应用页面左侧导航栏选择流量治理 - 离群实例摘除,可查看离群实例摘除规则列表。
- 在创建离群实例摘除页面配置相关参数,并单击确认。
离群摘除规则参数说明:
参数 | 说明 |
---|---|
策略名称 | 离群摘除规则的名称。 |
被调用服务所用框架 | Spring Cloud或Dubbo。 |
选择生效应用 | 选择生效应用后,该应用调用的异常应用实例会被摘除。 |
错误率下限 | 被调用的应用中某个应用实例的错误率高于设置的域值后,将摘除该实例。 默认值为50%。例如该实例在统计时间窗口内被调用10次,有6次调用失败,错误率为60%,超过了配置的错误率域值(50%),则从应用中移除该实例。 |
异常类型 | 目前只支持网络异常+业务异常(HTTP 5xx)。 |
QPS下限 | QPS按照统计时间窗口进行计算,默认为10秒。 |
摘除实例比例上限 | 摘除的异常实例比例上限,即达到阈值后,不再摘除异常实例。 |
恢复检测单位时间 | 发现实例异常后,检测异常实例的单位时间(修改)。 |
未恢复累计次数上限 | 持续对异常实例进行检测,检测间隔随检测次数按恢复检测单位时间线性增加,当达到设置的检测次数上限后,会按最长时间间隔持续检测异常实例是否恢复。 |
默认状态 | 默认是否开启离群摘除规则。 |