背景:
我们有一组大约 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 地址和端口信息不可用。于是我们想到了两种可能的解决方案:
找到一种将 Hazelcast 作为 Spring Boot 应用程序运行的方法,并将其注册到 Eureka 作为发现客户端。这样其他 Spring Boot 应用程序可以使用 Eureka 动态发现 Hazelcast 实例
在 Hazelcast 中找到一种方法,以便它可以将其 IP 地址和端口信息动态发布到中央键/值存储
如果有人玩过 Hazelcast 以便能够执行其中一种/两种可能的解决方案,那么如果您能分享更多关于这方面的信息,那就太好了。如果有第三种方法会更好,我也很想知道。