问题描述
我正在使用Jhipster创建一个简单的微服务架构,基本上我正在运行一个Eureka注册表,并向其注册了一堆微服务实例。
某些微服务需要与其他微服务对话或查询一些数据,但是每个微服务都有一个动态IP地址,是否可以使用实例名称来解析IP并执行请求?
解决方法
这已经由JHipster Eureka体系结构提供。
- 微服务(Eureka客户端)在注册表(Eureka服务器)中注册。
- 然后,将
eureka.client.fetch-registry
属性设置为true
的每个微服务都将配置其Ribbon实例,并可以使用http://<service name>/api/something
使用诸如RestTemplate
的服务名称URL连接到其他注册的服务。 }或FeignClient
您没有说您选择哪种身份验证,该文档适用于UAA,即使对于普通的JWT,它也可能会有所帮助:https://www.jhipster.tech/using-uaa/#inter-service-communication
,您可以使用服务器端负载平衡模式。 Netflix Zuul 作为API网关为您提供了这种平衡(使用 Netflix Ribbon 作为负载平衡器)。
在您的情况下:创建Zuul µservice(不要忘记注释@EnableZuulProxy
)并将其注册在Eureka中。
完成这些步骤后,您将可以通过Zuul µservice地址调用在Eureka中注册的µservice实例,而无需在客户端知道它们的地址。