首页 > 解决方案 > 如何在客户端找到Eureka注册服务的IP

问题描述

我有以下服务:

有没有办法获取客户端服务的 ip,以便我可以从 Finder 服务向它发出请求。

我知道有一种方法可以从 EurekaServer 找到 InstanceInfo,我正在考虑在 eureka 服务器中创建一个控制器,您可以在其中传递服务 ID 并获取服务的实例 IP。这样,Finder-service 只需要知道它知道的服务 id 和 eureka ip,因为它在那里注册。

还有比这更干净的解决方案吗?

标签: springspring-bootnetflix-eurekaspring-cloud-netflix

解决方案


要使用客户端发现,您首先需要通过添加@EnableEurekaClient或添加@EnableDiscoveryClient到您的@SpringBootApplication注释类(或您的专业@Configuration)来启用。

接下来要使用实际服务实例的解析,您需要创建一个RestTemplate负载均衡的。这将添加一个拦截器,它将服务名称转换为 IP 地址/DNS 名称以将请求发送到(如果找到多个实例,它将在这些实例之间分配负载)。

要创建负载平衡RestTemplate,请将@LoadBalanced注释添加到已配置的RestTemplate.

@Bean
@LoadBalanced
public RestTemplate restTemplate(RestTemplateBuilder rtb) {
    return rtb.build();
}

现在,当通过它发出请求时,RestTemplate它会将服务名称解析为client-service要使用的实际服务实例。无需您做任何事情。


推荐阅读