出现这个问题,可以参考下列方法进行排除,下列方法都可能会引起此错误

注册问题

可能是服务提供者没有注册进入Eureka,可以先排除一下这个问题

eureka配置

fetch-register一定要设置为true,否则获取不到服务节点的

 依赖冲突

<!-- SpringCloud Netflix Eureka Client -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>3.0.3</version>
</dependency>
<!-- SpringCloud Netflix ribbon -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
    <version>2.2.9.RELEASE</version>
</dependency>

Eureka中已经内置了ribbon依赖,网上有的帖子说cloud2020在eureka3.x版本去除了ribbon依赖,其实并没有去除,所以不要添加ribbon依赖导致依赖冲突

有的人学习ribbon负载策略引不到某个类,需要添加ribbon的依赖,其实并不用,找不到是因为新版ribbon负载均衡策略的配置改了,需要添加一个配置类Ribbon负载均衡策略找不到_weixin_50292503的博客-CSDN博客

调用方式

如果使用@LoadBalanced负载均衡调用,那么不能采用IP+端口进行调用,而是采用应用名称进行调用(http://应用名称/接口),切记不可使用下划线(_),否则也会找不到服务,可以使用中划线(-)

注:应用名称对应服务提供者配置文件中的spring.application.name,这个一定要配置上

这些也都是我踩过的坑,所以记录一下,希望对大家有所帮助

更多推荐

SpringCloud出现No instances available for