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

文章目录

  • 问题描述:
  • 1、排查微服务应用的名字
  • 2、排查注解@FeignClient注解
  • 3、排查SpringBoot、SpringCloud、Spring Cloud Alibaba、以及Nacos版本
  • 4、微服务在共同的命名空间和分组中
  • 5、修改配置

问题描述:

在使用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)

Load balancer does not contain an instance for the service xxx-service_第1张图片

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

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

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

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

Load balancer does not contain an instance for the service xxx-service_第2张图片

5、修改配置

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

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

feign:
  hystrix:
    enable: true

或者

feign.hystrix.enabled=true

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

feign:
  circuitbreaker:
    enabled: true

或者

feign.circuitbreaker.enabled=true

修改配置后重启服务。

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

Load balancer does not contain an instance for the service xxx-service_第3张图片

你可能感兴趣的:(《微服务中间件技术》系列,其他,spring,boot,后端,java,spring,cloud,nacos)