spring-cloud-gateway使用-灰度发布

代码在:
https://gitee.com/sleepforests/spring-cloud-gateway-demo

灰度发布使用scg的Weight实现,需要配置2个规则,A规则对应prod是线上服务,B规则对应canary是需要灰度的服务。

用户选择灰度发布后,填写灰度

支持灰度的配置

spring:
  application:
    name: cloud-gateway
  cloud:
    gateway:
      routes:
      - id: service1
        uri: lb://service1
        predicates:
        - Path=/test
        - Weight=servicew1, 90
      - id: service1_canary
        uri: lb://service1_canary
        predicates:
        - Path=/test
        - Weight=servicew1, 10

注意:
Weight=servicew1,90 和 Weight=servicew1, 10 这个就是权重的路由表,其中servicew1表示一组服务,需要唯一。

老的prod服务ribbon配置 9000和9001

service1:
  ribbon:
    listOfServers: localhost:9001,localhost:9000

新发布的灰度服务ribbon配置 9002

service1_canary:
  ribbon:
    listOfServers: localhost:9002

结合发布系统,提供api接口,对于已经存在的服务service1,比如已经存在XYZ3台服务,选择灰度发布X服务。
1)先下线服务X;通过动态路由修改下线X
2)发布服务X代码,重启服务X;通过部署系统完成
3)增加一个route serivce1_canary 配置,和原来service1配置类似,增加权重,将流量导入1%;
4)逐步提高X的流量权重,查看服务X日志;
5)灰度完成,修改service1的配置,去掉canary路由规则;
6)end

使用到了2个过滤器
WeightRoutePredicateFactory
PrefixPathGatewayFilterFactory

你可能感兴趣的:(spring-cloud-gateway使用-灰度发布)