在Spring Boot生态系统中发现Hazelcast实例

Blo*_*ock 6 hazelcast spring-boot netflix-eureka

背景:

我们有一套约15个Spring Boot应用程序作为微服务.它们都作为Docker容器运行,并作为一个或多个实例的集群运行.我们还使用Eureka等Spring Cloud Netflix组件,并使用Feign/Ribbon从客户端发现正在运行的应用程序实例.

题:

作为POC练习的一部分,我们使用Redis和Hazelcast测试了缓存和Spring Boot配置存储.一切都使用Spring Boot,Spring Cloud和Redis/Hazelcast Java客户端库.但是,当我们在多节点对等集群中部署Hazelcast时,Hazelcast似乎需要一个"已知"IP地址/主机名,并且可访问端口在Java客户端的配置中可用(有或没有Spring).通常,当Hazelcast部署在临时VM实例(例如,EC2)上的多实例集群中时,IP地址和端口信息不可用.所以我们考虑了两种可能的解决方案

  1. 找到一种方法将Hazelcast作为Spring Boot应用程序运行,并将其作为Discovery Client注册到Eureka.这样,其他Spring Boot应用程序可以使用Eureka动态发现Hazelcast实例

  2. 在Hazelcast中找到一种方法,以便它可以将其IP地址和端口信息动态发布到中央Key/Value存储

如果有人玩过Hazelcast以便能够执行其中一种/两种可能的解决方案,那么如果您可以分享更多相关信息,那就太棒了.如果有第三种方法可以更好地工作,我也会渴望知道这一点.