暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Spring Cloud Gateway升级记录

IT周瑜 2023-11-27
482

本来没什么难度,阅读起来比较轻松。

今天对Spring Cloud Gateway进行升级,版本从2.2.5.RELEASE升级到3.1.8,不要问我为什么不升级到最新版(4.0.6),因为3.1.8是客户要求的(-_-),本文记录一下升级过程中遇到的一些问题。

首先Gateway本身的升级的是依赖于Spring Cloud版本的,只要把Spring Cloud从Hoxton.SR8升级到2021.0.8,Gateway就自动升级了,升级之后发现以下几个问题。

不在支持hystrix

不一定是3.1.8中不支持hystrix了,可能是更早的版本就不支持了,好在我们也没有用hystrix了,已经改成用sentinel了,只不过hystrix相关的jar、配置、filter还在,所以直接注释掉相关代码就可以了。

LoadBalancerClientFilter

3.1.8版本中已经没有LoadBalancerClientFilter了,而是建议使用ReactiveLoadBalancerClientFilter,从名字可以看出LoadBalancerClientFilter应该是阻塞式的负载均衡客户端,而ReactiveLoadBalancerClientFilter是响应式的负载均衡客户端,性能方面应该是更好的。

nacos-client

升级后发现nacos-clinet也从2.1.0升级到了2.2.0,导致我们用到的ServerListManager类中的一个构造方法直接不存在了,这里不得不吐槽一下,构造方法怎么说删除就删除了,至少得先deprecated一段时间呀,好在通过参考nacos自身的用法,稍作改造就可以了。

spring.config.import

解决了上述问题后,就开始启动,启动遇到的第一个错就是no spring.config.import
解决方式就是在网关中手动引入spring-cloud-starter-bootstrap。

循环依赖

网关中用到的discovery存在循环依赖,Spring Cloud升级和Spring Boot升级也是同步的,Spring Boot我们升级到了2.7.17,该版本中默认不允许循环依赖了但是由于是第三方组件中出现了循环依赖,并且是属性注入导致的循环依赖,所以直接配置允许循环依赖即可解决。

spring-cloud-starter-loadbalancer

最后遇到的一个问题就是下图解决方式比较简单,手动添加依赖spring-cloud-starter-loadbalancer即可

总结

启动正常后,经过测试,不管是我们自定义的filter、还是集成sentinel的限流和降级,都没有什么问题,整个升级并不复杂,做此文记录一下,有需要的可以收藏、分享一下。

我是大都督周瑜,之前是一名讲师,现在是一名架构师,实践才能出真知,这是我重回一线的原因!如果大家觉得有所收获,不想错过更多实战干货高质量技术文章,可以关注我的公众号:Hoeller

另外,想跟我做更多交流的可以加入我的知识星球,更多干货,有问必答,福利多多。


文章转载自IT周瑜,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论