如何使用SpringCloud进行灰度发布

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

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

图片描述

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

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

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

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

spring: ui

cloud:spa

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就是路由的权重信息。debug

第2、源服务配置

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

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

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”;

}

}

第3、进行测试

分别启动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进行灰度发布的过程记录。

相关文章
相关标签/搜索