标签路由
标签路由是将每个服务打上一个标签,通过标签将标签相同的服务分为同一个分组,然后约束流量在同一个分组内流转,以此实现灰度发布、金丝雀发布、蓝绿发布等功能。
版本限制
框架 | 限制 | 详情 |
---|---|---|
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:应用设置标签
为云容器引擎集群应用设置标签,为应用容器添加ctgcloud.service.tag注解
为ECS应用设置标签,在启动应用时,添加JVM启动参数-Dctgcloud.service.tag=gray
步骤2:在微服务治理中心控制台创建标签路由
-
登录微服务治理中心控制台
-
在左侧导航栏选择微服务治理中心 ->应用列表
-
在应用列表选择应用product-service
-
在product-service的应用详情页面选择标签路由页,查看服务标签
-
在标签路由页点击流量分配,为标签按比例分配流量
-
在标签路由页的流量规则栏新增流量规则
流量规则参数说明:
参数 | 说明 |
---|---|
路由名称 | 路由规则的名称 |
应用 | 所选的应用 |
标签 | 设置的标签名 |
应用实例 | 设置了该标签的实例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秒 |
摘除实例比例上限 | 摘除的异常实例比例上限,即达到阈值后,不再摘除异常实例 |
恢复检测单位时间 | 发现实例异常后,检测异常实例的单位时间(修改) |
未恢复累计次数上限 | 持续对异常实例进行检测,检测间隔随检测次数按恢复检测单位时间线性增加,当达到设置的检测次数上限后,会按最长时间间隔持续检测异常实例是否恢复 |
默认状态 | 默认是否开启离群摘除规则 |