应用管理与运维平台 ServiceStage应用管理与运维平台 ServiceStage

更新时间:2021/09/07 GMT+08:00
分享

使用灰度发布

为保障新特性平稳上线,可以先选择少部分用户试用,待新特性成熟以后,再让所有用户使用。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以减少其影响。灰度发布类型有以下两种:

  • 微服务灰度发布:适用于微服务开发框架(Java Chassis/Spring Cloud),灰度发布任务作用于微服务,通过微服务之间的协作,共同完成新特性的上线。
  • ELB灰度发布:适用于通过ELB作为流量入口的任何类型应用,灰度发布任务作用于ELB。

详细的灰度发布操作请参考灰度发布。本章节重点介绍微服务灰度发布如何进行微服务侧的开发。

微服务引擎里面的灰度发布只能够Java Chassis使用,本章节描述的灰度发布是指适用于多个微服务框架的ServiceStage部署入口提供的灰度发布。

灰度发布是一种特殊的服务治理。和基于流量的服务治理功能一样,灰度发布也通过配置的方式描述了一套规范,除了通过ServiceStage部署入口进行操作,也可以通过配置下发的方式定义灰度发布规则。

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,表示微服务版本。还可以配置其他属性,这些属性在实例的属性里面定义。
  • 优先级数量越大优先级越高。

Java Chassis

Java Chassis使用灰度发布,需要在项目中增加如下依赖。如果项目中已经直接或者间接引入依赖,无需重复引入。

<dependency>
  <groupId>org.apache.servicecomb</groupId>
  <artifactId>handler-router</artifactId>
</dependency>

并在配置文件中增加配置项:

servicecomb.router.type: router

Java Chassis默认不会传递非参数header到各个微服务,如果灰度发布依赖于非参数header,可以增加如下配置项:

servicecomb.router.header: canaryHeader1,canaryHeader2

Java Chassis会将这些非参数header用于灰度发布的匹配。

如果请求经过Edge Service转发,Edge Service也需要增加灰度发布相关的配置。

Spring Cloud

Spring Cloud使用灰度发布,需要在项目中增加如下依赖。如果项目中已经直接或者间接引入依赖,无需重复引入。

<dependency>
  <groupId>com.huaweicloud</groupId>
  <artifactId>spring-cloud-starter-huawei-router</artifactId>
</dependency>
分享:

    相关文档

    相关产品