java - 如何配对在同一图像的多个 docker 容器内运行的嵌入式 Hazelcast

标签 java spring-boot docker containers hazelcast

我有 Spring Boot 应用程序。我在此 Web 应用程序中使用嵌入式 Hazelcast。我使用缓存中的大量可用数据。最初我只运行一个 docker 容器。现在,为了扩展响应,我启动了 3 个具有相同镜像的 docker 容器。现在,每个 docker 容器都运行其嵌入式 Hazelcast。因此,一旦我点击刷新缓存,提供请求的容器将仅拥有最新数据,而其他两个容器将不会拥有最新数据,除非刷新请求未被提供。

问题:

由于所有三个容器都与 Hazelcast 一起运行,因此所有三个容器的 Hazelcast 并不同步。我需要同步容器内运行的所有 Hazelcast,以便一次刷新就可以刷新所有三个容器 Hazelcast 上的缓存数据。

怎么做?

编辑:我正在使用 docker swarm。在一个虚拟机中,我有两个容器,在另一台虚拟机上,我有一个相同镜像的容器。 我通过<public-address-ip>发现可以实现,但目前还没尝试过。

最佳答案

您需要使 Hazelcast 实例形成一个集群。如何执行取决于您运行的环境。检查 Hazelcast Reference Manual Discovery Mechanisms了解详情。

如果你在 Docker Swarm 中运行,你应该使用 Docker Swarm Discovery SPI Plugin .

关于java - 如何配对在同一图像的多个 docker 容器内运行的嵌入式 Hazelcast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61221569/

相关文章:

git - Dockerfile git克隆文件权限

java - 如何使用 StAX 将属性添加到 XML 节点?

java - 列出所有已部署的 REST 端点(spring-boot、jersey)

java - 如何以 Thymeleaf 形式显示嵌套对象值

spring - 使用 Spring Boot 1.4 导入的 MVC 测试 get()、status() 和 content()

docker - 在 $GOROOT 或 $GOPATH 中找不到包 cid

laravel - Dockerfile不在Laravel中创建文件和文件夹

java - Android Google Maps V2 - SD 卡作为 Tile Provider

使用 Objenesis 创建静态内部类实例时出现 java.lang.InstantiationError

java - Java中创建硬链接(hard link)和删除文件的原子操作