Sping Cloud Gateway Unable to find instance for

在升级spring cloud 体系版本时候遇到org.springframework.cloud.gateway.support.NotFoundException: Unable to find instance for xxx

出现以上错误主要原因有几个:

1、spring.application.name 中不要使用下划线,只能是字母数字和横杠

        对下划线很多位置是不支持的(可以形成编码规范,name不要用下划线)。

spring:
  application:
    name: cloud-gateway

2、针对gateway的配置是否正确

spring:
  application:
    name: cloud-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 10.0.1.73:8848
    gateway:
      discovery:
        locator:
          # 让gateway根据注册中心找到其他服务
          enabled: true
      routes:
#        - id: cloud-service
#          uri: lb://cloud-service
#          predicates:
#            - Path=/*

3、服务名是否和服务注册中心一致

        去对应的服务注册中心查看注册的服务名和路由规则中设置的是否一致。

 

 

4、版本及依赖导致兼容问题

        Spring Cloud一直在迭代新版本,新版本很多会弃用老版本的一些特性和组件,所以在新版本中使用老版本的方式会出现各种问题,建议升级版本之前先查一下官方说明,changelog。

从Spring Cloud 2020开始弃用了Ribbon,因此Spring Cloud Alibaba在2021版本nacos中删除了Ribbon的jar包,因此无法通过lb路由到指定微服务,出现了503情况。

所以只需要引入springcloud loadbalancer包即可

<!--客户端负载均衡loadbalancer-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

如果你使用的是fegin客户端还得添加对应的lb依赖

<!--fegin组件 -->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-openfeign</artifactId>
   <version>3.0.2</version>
</dependency>
<!-- Feign Client for loadBalancing -->
   <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-loadbalancer</artifactId>
   <version>3.0.2</version>
</dependency>

如果使用了consul可能还要检查下是否开启了actuator

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>


        最后是建议如无刚需不建议升级,升级前先查阅对应版本及依赖和changelog等官方文档,做好升级准备后再升级。

参考来源:

springcloud2020版本gateway+nacos,服务报错503 Service Unavailable_疯狂的炫的博客-CSDN
博客

nacos+spring cloud gateway 出现503 Service Unavailable_wangzibai的博客-CSDN博客
关于spring cloud gateway中可能会出现503 Source Unavailable的问题_Irrxing的博客-CSDN博客

 

Spring cloud GateWay 503 Service Unanailable_代码搬晕工的博客-CSDN博客
SpringCloud Gateway报500 Invalid host: lb://xxx_a_lllk的博客-CSDN博客
 

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Boot和Spring Cloud是两个不同的框架,它们都是基于Spring Framework的。Spring Boot主要是用于快速构建单个微服务,而Spring Cloud则是用于构建分布式系统中的多个微服务。 下面是Spring CloudSpring Boot的优缺点比较: Spring Boot优点: 1. 简单易用:Spring Boot提供了自动配置和快速开发的能力,使得开发人员可以快速地构建和运行Spring应用程序。 2. 强大的开发工具:Spring Boot提供了强大的开发工具,比如Spring Boot CLI和Spring Boot Starter,使得开发人员可以轻松地创建和部署应用程序。 3. 集成了大量的第三方库:Spring Boot集成了大量的第三方库,比如Hibernate、Thymeleaf、Jackson等,使得开发人员可以轻松地使用这些库来处理不同的业务需求。 4. 适用于小型应用程序:Spring Boot适用于构建小型的应用程序,可以快速地实现业务需求。 Spring Boot缺点: 1. 不适用于大型应用程序:Spring Boot不适用于构建大型的应用程序,因为它缺乏分布式系统的支持。 2. 缺乏服务治理:Spring Boot缺乏服务治理的能力,因此在构建分布式系统时需要使用Spring CloudSpring Cloud优点: 1. 服务治理:Spring Cloud提供了服务注册、发现、负载均衡和断路器等服务治理功能,使得开发人员可以构建分布式系统中的多个微服务。 2. 分布式配置管理:Spring Cloud提供了分布式配置管理的功能,可以快速地更新应用程序的配置。 3. 分布式追踪:Spring Cloud提供了分布式追踪的功能,可以快速地定位应用程序的异常。 Spring Cloud缺点: 1. 复杂度高:Spring Cloud的复杂度很高,需要开发人员具备分布式系统的技术知识。 2. 性能问题:Spring Cloud会增加系统的复杂度,可能会影响系统的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值