【发布时间】:2020-08-26 21:58:53
【问题描述】:
我正在使用 Jhipster 创建一个简单的微服务架构,基本上我有一个 Eureka 注册表正在运行,其中注册了一堆微服务实例。
有些微服务需要和其他微服务通信或者查询一些数据,但是每个微服务都有一个动态IP地址,是否可以使用实例名解析IP并做请求?
【问题讨论】:
标签: java spring jhipster netflix-eureka
我正在使用 Jhipster 创建一个简单的微服务架构,基本上我有一个 Eureka 注册表正在运行,其中注册了一堆微服务实例。
有些微服务需要和其他微服务通信或者查询一些数据,但是每个微服务都有一个动态IP地址,是否可以使用实例名解析IP并做请求?
【问题讨论】:
标签: java spring jhipster netflix-eureka
这已经由 JHipster Eureka 架构提供。
eureka.client.fetch-registry 属性设置为true 的每个微服务都会配置其功能区实例,并可以使用http://<service name>/api/something 等服务名称URL 连接到其他注册服务,使用RestTemplate 或FeignClient
您没有说您选择了哪种身份验证,此文档适用于 UAA,即使对于普通 JWT 也可能有所帮助:https://www.jhipster.tech/using-uaa/#inter-service-communication
【讨论】:
您可以使用服务器端负载平衡模式。 Netflix Zuul 作为 API 网关为您提供这种平衡(使用 Netflix Ribbon 作为负载平衡器)。
在您的情况下:创建 Zuul µservice(不要忘记 annotation@EnableZuulProxy)并在 Eureka 中注册。
完成这些步骤后,您将能够通过 Zuul µservice 地址调用在 Eureka 中注册的 µservice 实例,而无需知道它们在客户端的地址。
【讨论】: