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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容