Spring cloud loadbalancer跟Nacos进行整合

本文讲述了在升级Spring Cloud版本后,由于Ribbon被弃用,导致Nacos注册中心无法正常工作的问题。通过引入Spring Cloud LoadBalancer并禁用Ribbon配置,解决了启动问题。但在实际业务中遇到异常,发现仍需禁用Nacos中的Ribbon。经过排查和参考Nacos官方解决方案,最终通过排除Ribbon依赖使问题得到解决。
摘要由CSDN通过智能技术生成

Spring cloud loadbalancer是spring官方发布的客户端负载均衡组件,而Netflix的 Ribbon已进入维护阶段,从最新的spring cloud2020版本中移除掉了,最近升级之后Nacos注册中心无法正常运行了,提醒我是不是忘了引入Spring cloud loadbalancer,~^_^~!索性就升级了吧!

1. 引入Spring cloud loadbalancer,配置禁用ribbon,启动正常,功能正不正常呢?往下看

<!-- 升级spring cloud之后,Nacos消费者服务依赖该组件 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
spring:
  cloud:
    # 使用spring loadbalancer,弃用ribbon
    loadbalancer:
      ribbon:
        enabled: false

2. 正常的业务逻辑是访问gateway网关,转发到delivery服务,delivery服务完成业务逻辑需要调用order服务,跑一下试试!!

异常了,看日志提示RibbonLoadBalancerClient未定义??明明已经禁用了为啥还是会去找它来卖命?打断点各种调试,feign没问题、loadbalancer也引入了,但每次都要去找ribbon,那估计是nacos的问题咯!

3. 去Nacos官方一看果然,有解决方案,nacos也要禁用ribbon:

https://github.com/alibaba/spring-cloud-alibaba/issues/1620

好吧,试试:

# 使用spring loadbalancer,弃用ribbon
ribbon:
  nacos:
    enabled: false

还是不生效,最后一扣脑壳,可能nacos自动配置哪里出了问题,老是要去找ribbon,干脆把ribbon给exclude了。

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <!-- 使用spring loadbalancer,弃用ribbon -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

哈哈!欧了!!再回头仔细一看nacos官方方案,有讲一句排除依赖,这也太不起眼太笼统了嘛!

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值