当前位置: 首页 > 知识库问答 >
问题:

如何在客户端找到Eureka注册服务的IP

郑景胜
2023-03-14

我有以下服务:

  • EurekaServer—承载eureka发现服务器

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

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

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

共有1个答案

曾光远
2023-03-14

要使用客户端发现,首先需要通过将@enableeruekaclient@EnableDiscoveryClient添加到@springbootplication注释类(或专用的@配置)来启用。

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

要创建负载平衡的restemplate请将@LoadBalanced注释添加到配置的restemplate

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

现在,当通过restemplate执行请求时,它会将服务名称客户机服务解析为要使用的实际服务实例。不用你做任何事。

 类似资料: