ribbon设置权重_spring cloud gateway+ribbon 组合指定版本权重分流(简易灰度发布实现)...

本文介绍了如何在Spring Cloud Gateway中结合Ribbon实现基于权重和服务版本的流量控制,以达到简易灰度发布的目的。改造了Gateway的Weight Route Predicate Factory,将版本号与Eureka服务的metadata匹配,通过自定义Rule和Predicate来选择目标服务。同时,文章讨论了在微服务间Fegin和RestTemplate调用时如何传递版本信息,并处理了Hystrix线程池隔离对threadlocal的影响。最后,文章提到了在不使用Ribbon的情况下,如何利用spring-cloud-loadbalancer实现类似功能的挑战。
摘要由CSDN通过智能技术生成

0.参考

1.思路

改造gataway的### Weight Route Predicate Factory,在指定权重的同时指定每个对应权重的服务的版本号。主要需要改写的地方是要在分流之后,将版本号传给ribbon,ribbon在做负载均衡选择的时候,根据传入的版本号,与服务的eureka.matedata中的version匹配,从而达到灰度发布的目的。

gateway的配置类似如下,VersionWeight为重写的断言工厂。- id: temp_old

uri: lb://TEMPLATE

predicates:

- Path=/temp/**

- VersionWeight=group1, 10, v1

filters:

- StripPrefix=1

- id: temp_new

uri: lb://TEMPLATE

predicates:

- Path=/temp/**

- VersionWeight=group1, 1, v2

filters:

- StripPrefix=1

2.调查改造点

debug后知道了整个请求顺序客户端-> gateway filter -> LoadBalancerClientFilter -> (如果使用ribbon) RibbonLoadBalancerClient-> (某个Rule) XXXAvoidanceRule -> (对应的 Predicate) XXXAvoidancePredicate

所以选择的服务的关键就是Ribbon的rule和Predicate

步骤写一个grayContext, 基于threadloc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值