美文网首页微服务
如何使用SpringCloud进行灰度发布

如何使用SpringCloud进行灰度发布

作者: 2c4d177cb8a6 | 来源:发表于2018-11-20 08:19 被阅读12次

灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

在开发或者测试的时候,或者线上发布,线上服务多版本控制的时候,需要对服务提供权重路由,最常见的使用就是,一个服务有两个版本,旧版本V1,新版本v2。在线上灰度的时候,需要通过网关动态实时推送,路由权重信息。比如95%的流量走服务v1版本,5%的流量走服务v2版本。

如何使用SpringCloud进行灰度发布呢?将分一下四步:

第一,设置网关权重路由设置

Spring Cloud Gateway中提供了org.springframework.cloud.gateway.handler.predicate.WeightRoutePredicateFactory去实现根据分组设置权重进行路由,因此使用起来相对比较简单,有兴趣的可以debug阅读源码。

我们通过在Spring Cloud Gateway中会配置不同的权重信息到不同URL上,Spring Cloud Gateway会根据我们配置的路由权重信息,将请求分发到不同的源服务组,权重信息如ch4/ch4-gateway中的application.yml所示,主要配置信息如下。

spring: 

  cloud:  

    gateway:

      discovery:      

        locator:     

          enabled: true

      routes: 

      - id: order-service1

        uri: lb://order/order/create1

        order: 8000

        predicates:

        - Path=/order/create

        filters:

        - StripPrefix=1

        - Weight=order-service, 95

      - id: order-service2

        uri: lb://order/create2

        order: 8000

        predicates:

        - Path=/order/create

        filters:

        - StripPrefix=1

        - Weight=order-service, 5

Weight=order-service1, 95,Weight=service1, 5就是路由的权重信息。

第二、源服务配置

源服务在本案例中为order模块源服务,主要提提供Gateway Server权重路由对应的后端源服务。因为比较简单因此不做详细说明,主要代码如下所示。

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class OrderController {

@RequestMapping("/create1")

public String orderCreateV1() {

      //此处写业务逻辑代码

     return "success";

}

@RequestMapping"/ceate2")

public String v2() {

     //此处写业务逻辑代码

     return “success”;

}

}

第三、进行测试

分别启动gateway,order进行访问:http://localhost:5001/order/create 测试,发现会根据所设权重进行路由。

第四,使用zookeeper config实现动态权重路由

到第三步完成以后,现在可以通过修改配置的如何根据现有的服务在线动态更新权重呢?使用zookeeper作为spring cloud的注册和配置中心,gateway模块和order模块配置监控配置的变化,如果想做动态灰度发布,增加后台在线配置管理界面,并在线修改gateway的配置,实现动态的灰度发布,而不用每次修改都要重新启动gateway。

spring: 

  cloud: 

    zookeeper:

      enabled: true  

      connect-string: localhost:2181

      config:

        root: /config

        enabled: true

        watcher:

          enabled: true  

第五,使用zkui进行配置修改

使用ZKUI来可视化管理Zookeeper,登录ZKUI->import 选择对应文件导入即可。ZKUI安装使用请自行百度。

以上就是我使用spring cloud进行灰度发布的过程记录。

相关文章

  • 如何使用SpringCloud进行灰度发布

    灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让...

  • SpringCloud灰度发布

    一: 调用链分析 请求==>网关==>服务Resttemplate调用==>服务请求==>网关==>服务Fegin...

  • SpringCloud-灰度发布

    by shihang.mai zuul过滤器+ribbon自定义路由规则+aop 1. 代码 表结构 id ser...

  • 浅谈灰度发布

    什么是灰度发布 所谓灰度发布就是将软件新功能版本先发布到灰度区进行可控范围的验证,如果验证结果良好,再进行正式发布...

  • SpringCloud 优雅下线+灰度发布

    在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造...

  • Openshift上使用Nginx Pod作灰度发布

    参考文章:使用 Nginx 实现灰度发布 什么是灰度发布 【百度百科】灰度发布(又名金丝雀发布)是指在黑与白之间,...

  • 灰度发布01-效果与方案分析

    一、灰度发布期待的效果分析 1.1 灰度发布前 灰度发布前,系统处于正常使用状态,用户在浏览器输入地址访问前端H5...

  • 灰度发布(二)

    继续上一篇的灰度发布,本文重点讲述kong网关是如何配置灰度发布规则的。一、Kong网关在灰度发布中的重要作用1、...

  • SpringCloud-灰度发布方案简介

    转载 http://huhanlin.com/2018/06/15/springcloud-%E7%81%B0%E...

  • 如何进行灰度发布,考虑啥

    灰度发布的定义: 灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部...

网友评论

    本文标题:如何使用SpringCloud进行灰度发布

    本文链接:https://www.haomeiwen.com/subject/fbxtqqtx.html