解决eureka服务注册名报错
简介
Eureka是Netflix开源的一款服务发现和负载均衡工具,用于在云环境中定位微服务实例。它允许微服务注册自己和发现其他微服务,并提供了一种简单的方式来调用其他服务的实例。
Eureka的核心概念是服务注册和服务发现。在Eureka中,每个微服务实例都可以向Eureka服务器注册自己的信息,包括服务名称、实例ID、IP地址和端口号等。Eureka服务器会维护一个服务注册表,用于存储所有已注册的微服务实例信息。
当一个微服务需要调用其他微服务时,它可以向Eureka服务器发起服务发现请求,获取目标微服务的实例列表。Eureka服务器会返回一个响应,包含所有可用的目标微服务实例信息。微服务可以通过负载均衡算法选择一个合适的目标实例进行调用。
Eureka还具有高可用性的特性。它通过使用Eureka服务器集群来实现,每个服务器都具有相同的服务注册表,可以相互进行复制和同步。当一台Eureka服务器出现故障时,其他服务器可以接管其功能,保证服务的正常运行。
除了服务注册和服务发现功能外,Eureka还提供了一些其他的特性,如健康检查、自我保护机制和客户端实例缓存等。这些特性都可以帮助开发人员更好地管理和监控微服务架构。
总结来说,Eureka是一款强大的服务发现和负载均衡工具,可以帮助开发人员在云环境中构建可靠的微服务架构。它简化了微服务之间的通信和调用,并提供了高可用性和易用性的解决方案。
正文
使用RestTemplate.getForObject( url,Class)方法中,url直接使用服务注册名进行拼接后无法正常远程调用。
如下
String url="http://provider-service/provider/hello/"+id;
return restTemplate.getForObject(url,String.class);
报错404,说明没访问到
我的解决方法:换依赖版本
原来的版本
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.6.5</version>
</parent>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
更改为下面的
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>