相关文章推荐
犯傻的海豚  ·  Next stop Davos! | ...·  1 年前    · 
曾经爱过的领结  ·  c - How to change ...·  3 年前    · 
高大的骆驼  ·  python - Django CSRF ...·  3 年前    · 
Load balancer does not contain an instance for the service service-B
feign.FeignException$ServiceUnavailable: [503] during [POST] to [http://service-B/test]  
报错信息的意思是找不到服务 service-B,feign的远程服务没有调通

排查方法:

1 看一下loadbalancer的依赖是否加了

从 Spring Cloud 2020.0 开始使用LoadBanlancer作为负载均衡,放弃了ribbon
所以在使用时pom依赖要加上 loadBanlancer的依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    <version>3.1.6</version>
</dependency>

2 看一下服务service-B启动了没有

没启动当然调不到了

3 看一下注册中心是否有服务service-B

看一下配置的注册中心是否正确

4 A服务调用B服务,两个服务的namespace和group是否一致

namespace和group的作用就是做环境隔离,所以两个服务在不同的namespace和group是调用不通的

5 对比一下配置的服务名是否和feign中指定的名称相同

服务名称是否写对了,注意大小写都要对应

看一下 application.yml 中的配置
spring:
    application:
        name: service-B
service-A中指定的远程调用服务名
 @FeignClient("service-B")

如果在配置中指定了context-path

application.yml 中的配置

server:
    servlet:
        context-path: /test
service-A中指定的远程调用服务名,需要加path参数
//注意这里的path前面需要带 /
 @FeignClient(value = "test", path = "/test")