Load balancer does not contain an instance for the service xxx-service

问题描述:

在使用Nacos+SpringBoot+OpenFeign搭建项目时,Nacos作为注册中心、配置中心,应用成功注册到Nacos,但是服务消费者通过OpenFeign调用服务时,报错:Load balancer does not contain an instance for the service xxx-service。解决方案如下:

1、排查微服务应用的名字

  • 排查application.name大小写是否一致问题(nacos比较区分大小写,最好统一都用小写)
  • “_”下划线改为短线“-”,eg:cloud_payment 改为cloud-payment (不然可能会报错java.lang.IllegalStateException: Service id not legal hostname)
#参考:
spring:
  application:
    name: cloud-payment #微服务应用的名字

2、排查注解@FeignClient注解

排查注解@FeignClient注解value的值配置,是否和nacos中展示的服务名一致(大小写也要一致)

@FeignClient(value = "cloud-payment",fallback = PaymentFallbackService.class)

在这里插入图片描述

3、排查SpringBoot、SpringCloud、Spring Cloud Alibaba、以及Nacos版本

排查SpringBoot、SpringCloud、Spring Cloud Alibaba、以及Nacos版本是否配套使用,我们知道往往环境问题多是版本搞得怪。

可参看SpringBoot、SpringCloud、Spring Cloud Alibaba版本对照表(详细准确)处理。

4、微服务在共同的命名空间和分组中

5、修改配置

如果开启了熔断器,可检查版本:

springcloud2020以前的版本,配置如下:

feign:
  hystrix:
    enable: true

或者

feign.hystrix.enabled=true

springcloud2020以后的版本,配置如下:

feign:
  circuitbreaker:
    enabled: true

或者

feign.circuitbreaker.enabled=true

修改配置后重启服务。

好了,到这里了,希望能解决你的问题。如果没有解决,可以先单独调用服务提供者确认自身没问题,能成功注入到注册中心,再去怀疑调用者哈,再去怀疑调用过程。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47061482/article/details/131708340