Spring Cloud Alibaba gateway ribbon 自定义负载均衡规则
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 上一篇介绍了,ribbon的组件。本篇要自己写一个灰度方案。其实就是一个很简单的思维扩散。 需求 前端header请求携带version字段。路由服务根据version去需要对应版本的服务集合,进行或轮询或hash或权重的负载。请求路由到服务上,如果还要调用下游服务,也按照version规则去路由下游服务器。前端未携带版本按照后端服务最高version版本进行路由。 分析如果自己动手写一个灰度方案。需要考虑的因素有几点? 服务对应的版本。key(版本号):value(对应版本号的服务集合) 对应版本号的服务集合需要重新排序。 重写负载均衡规则,就是ribbon的IRule方法。按照我们想要的负载规则去路由我们的请求 解决方案: 利用注册中心的metadata属性元数据,让服务携带版本信息。 拿到要请求的服务集合。spring cloud Alibaba nacos NamingService接口根据服务名称获取所有服务List集合,如果你使用的spring cloud 版本可以使用 ILoadBalancer 对象获取所有的服务集合 Instance服务里面携带了,服务注册到注册中心的自定义版本信息 重写IRule负载规则。按照需求转发请求。 来写一下网关层的实现。 gateway负载规则有一个拦截器