应用管理与运维平台 ServiceStage
应用管理与运维平台 ServiceStage
- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 使用前必读
- 权限管理
- 环境管理
- 应用管理
- 组件管理
- 配置管理
- 全链路流量控制
- 发布管理(公测)
- 技术栈管理
- 部署源管理
- 持续交付
- 微服务引擎
- 云审计服务支持的关键操作
- 查看监控指标及告警
- 开发指南
- 最佳实践
- API参考
- SDK参考
- 场景代码示例
-
常见问题
- 应用开发问题咨询指引
- 环境管理
-
应用管理
- 如何查看应用组件部署失败的原因?
- 如何解决单击应用组件外部访问地址返回504的问题?
- 如何处理虚拟机类型环境下应用创建实例失败?
- 实例长期处于创建中怎么办?
- 如何解决Docker运行node应用程序时的依赖问题?
- 如何定制Tomcat Context path?
- 如何固定应用组件IP?
- 如何处理虚拟机类型环境下创建和部署组件时遇到ECS错误?
- 如何处理虚拟机类型环境下创建和部署组件时端口访问不通的错误?
- 虚拟机类型环境下部署的应用组件支持在什么目录写文件?
- 如何处理虚拟机类型环境下部署的组件删除失败报host status is not active错误的问题?
- 如何体验ServiceStage的源码部署功能?
- 如何处理使用ServiceStage灰度发布升级组件失败?
- 如何通过挂载配置项方式修改容器部署的组件配置文件?
- 如何处理应用组件接入微服务引擎后在微服务治理下看到的应用名称和ServiceStage应用管理下的不同?
- 持续交付
- 软件中心
- 基础设施
- 应用运维
- 应用开发问题
- 视频帮助
- 文档下载
- 通用参考
本文导读
链接复制成功!
使用灰度发布
为保障新特性平稳上线,可以先选择少部分用户试用,待新特性成熟以后,再让所有用户使用。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以减少其影响。
基于Servicecomb Java Chassis和Spring Cloud Huawei框架注册到微服务引擎的微服务,使用灰度功能只需通过配置下发即可使用。
Servicecomb Java Chassis依赖handler-router和Spring Cloud Huawei依赖spring-cloud-starter-huawei-router实现微服务灰度能力,下发规则遵守如下规范:
servicecomb: routeRule: provider: | #服务名 - precedence: 2 #优先级 match: #匹配策略 headers: #header匹配 region: exact: 'providerRegion' type: exact: gray route: #路由规则 - weight: 100 #权重值 tags: version: 1.0.0 - precedence: 1 route: - weight: 20 tags: version: 0.0.1 canaryProperty: group-a - weight: 80 tags: version: 0.0.2
上述配置的具体含义如下:
- 匹配特定请求由match配置,匹配条件是headers。headers中的字段的匹配支持精准匹配。如果未定义match,则可匹配任何请求。
- 转发权重定义在routeRule.{targetServiceName}.route下,由weight配置,weight数值表示百分数,需要满足加和等于100,不满足100的部分会用最新版本填充。
- 服务分组定义在routeRule.{targetServiceName}.route下,由tags配置,version是特殊的tag,表示微服务版本。还可以配置其他属性,这些属性在实例的属性里面定义。
- 优先级数量越大优先级越高。
Servicecomb Java Chassis依赖darklaunch实现的微服务灰度能力,也是当前微服务引擎页面下发的规则,遵守如下规范:
{ "policyType":"RULE", "ruleItems":[ { "groupName":"self_rule_test", "groupCondition":"version=0.0.1", "policyCondition":"name=11111", "versions":["0.0.1"] }], "empty":false }
上述配置的具体含义如下:
- policyCondition路由规则匹配条件,本条规则匹配的是请求参数为name,值为11111时匹配当前路由规则。
- groupName路由规则名称。
- groupCondition规则的目标分组,本条路由规则在匹配到name=11111的条件下,路由到version=0.0.1的微服务实例。
- 配置项固定为:cse.darklaunch.policy.${serviceName}。
Spring Cloud Huawei
Spring Cloud Huawei使用灰度发布,需要在项目中增加如下依赖。如果项目中已经直接或者间接引入依赖,无需重复引入。
<dependency> <groupId>com.huaweicloud</groupId> <artifactId>spring-cloud-starter-huawei-router</artifactId> </dependency>
灰度规则依赖的headers参数设置:
- 1.10.7及之后版本header参数需要在配置文件中设置,用户请求当中的header不会透传到下游服务:
spring: cloud: servicecomb: context: headerContextMapper: canary: canary
- 1.10.7之前的版本设置header参数:请求中设置的header参数进行透传。
Java Chassis
Java Chassis使用灰度发布,需要在项目中增加如下依赖。如果项目中已经直接或者间接引入依赖,无需重复引入。
<dependency> <groupId>org.apache.servicecomb</groupId> <artifactId>handler-router</artifactId> </dependency>
或者
<dependency> <groupId>org.apache.servicecomb</groupId> <artifactId>darklaunch</artifactId> </dependency>
并在配置文件中增加配置项:
servicecomb.router.type: router
Java Chassis默认不会传递非参数header到各个微服务,如果灰度发布依赖于非参数header,可以增加如下配置项:
servicecomb.router.header: canaryHeader1,canaryHeader2
Java Chassis会将这些非参数header用于灰度发布的匹配。
如果请求经过Edge Service转发,Edge Service也需要增加灰度发布相关的配置。
父主题: 使用微服务引擎功能