Nacos多个实例的服务调用失败问题及解决

 更新时间:2026年02月24日 15:14:08   作者:天航星  
在微服务开发中,Nacos上出现多个同一服务实例导致OpenFeign调用失败,因为OpenFeign使用SpringCloudLoadbalancer,而SpringCloudLoadbalancer的底层默认负载均衡策略不支持Nacos,通过将负载均衡策略设置为Nacos,可以解决调用失败的问题

Nacos多个实例的服务调用失败

在微服务开发阶段,开发人员会频繁启动服务。

这样Nacos上会经常出现一个服务存在多个实例,这是自己和其他同事都启动了同一个服务造成的。

此时使用OpenFeign对该服务进行远程调用,会有很大概率出现调用失败的情况,这是OpenFeign内部的负载均衡策略造成的。

原因分析

OpenFeign的负载均衡是使用Spring Cloud Loadbalancer实现的。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>

Spring Cloud Loadbalancer的底层默认是依靠Ribbon实现的。

Nacos的负载均衡不支持使用Ribbon,需要使用自己的。

将负载均衡设置为Nacos的即可解决问题。

spring:
  cloud:
    loadbalancer:
      # 关闭Ribbon的负载均衡器
      ribbon:
        enabled: false
      # 开启Nacos的负载均衡器
      nacos:
        enabled: true

环境

  • Spring Cloud Alibaba 2021.0.4.0
  • Spring Cloud OpenFeign 3.1.4
  • Spring Cloud Loadbalancer 3.1.4

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅谈使用Java Web获取客户端真实IP的方法示例详解

    浅谈使用Java Web获取客户端真实IP的方法示例详解

    这篇文章主要介绍了使用Java-Web获取客户端真实IP的方法示例详解。一般我们无法获取客户端真实IP,原因是:当我们通过request获取客户端IP时,自身服务器通常会为了保护信息或者负载均衡的目的,对自身服务器做反向代理。对此感兴趣可以了解一下
    2020-07-07
  • 浅谈slf4j中的桥接器是如何运作的

    浅谈slf4j中的桥接器是如何运作的

    这篇文章主要介绍了slf4j中的桥接器是如何运作的,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Springboot整合mybatisplus的项目实战

    Springboot整合mybatisplus的项目实战

    本文主要介绍了Springboot整合mybatisplus的项目实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • idea连接数据库的操作方法

    idea连接数据库的操作方法

    这篇文章主要介绍了idea如何连接数据库,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • java中把汉字转换成简拼的实现代码

    java中把汉字转换成简拼的实现代码

    本篇文章是对在java中把汉字转换成简拼的实现方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • @RequestBody注解的原理及使用技巧分享

    @RequestBody注解的原理及使用技巧分享

    这篇文章主要介绍了@RequestBody注解的原理及使用技巧分享,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • IDEA断点调试,断点不起作用的解决

    IDEA断点调试,断点不起作用的解决

    这篇文章主要介绍了IDEA断点调试,断点不起作用的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • springboot在filter中如何用threadlocal存放用户身份信息

    springboot在filter中如何用threadlocal存放用户身份信息

    这篇文章主要介绍了springboot中在filter中如何用threadlocal存放用户身份信息,本文章主要描述通过springboot的filter类,在过滤器中设置jwt信息进行身份信息保存的方法,需要的朋友可以参考下
    2024-07-07
  • springboot mybatis里localdatetime序列化问题的解决

    springboot mybatis里localdatetime序列化问题的解决

    这篇文章主要介绍了springboot mybatis里localdatetime序列化问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • 深入探讨Java应用性能监控与调优的工具链构建

    深入探讨Java应用性能监控与调优的工具链构建

    这篇文章主要来和大家将深入探讨Java应用性能监控与调优的完整工具链,从传统的单机分析工具JProfiler到现代化的分布式监控系统Prometheus,希望能帮助开发者和运维人员构建全方位的性能监控体系
    2025-06-06

最新评论