Hazelcast 不会在节点启动时填充 ReplicatedMap

Hazelcast does not populate ReplicatedMap at node startup

这是我们的 ClusterStorage 代码,它包装了 Hazelcast

    public ClusterStorage clusterStorage() {
        Config config = new Config();
        String mapName = "cluster-storage";
        ReplicatedMapConfig mapConfig = config.getReplicatedMapConfig(mapName);
        mapConfig.setInMemoryFormat(InMemoryFormat.BINARY);

        config.getGroupConfig()
                .setName("name")
                .setPassword("pass");

        HazelcastInstance instance = Hazelcast.newHazelcastInstance(config);

        return new ClusterStorage(instance.getReplicatedMap(mapName));
    }

当我在两个节点都启动时更改映射时,更改会被复制,但是当我在节点 n1 上更改映射然后启动第二个节点 n2 时,n1 的状态不会被复制并且 n2 节点具有空映射。

我想这应该可行,对吧? 可能出了什么问题?

不保证两个地图会同步:

Lost or missing updates are neither tracked nor resent

http://docs.hazelcast.org/docs/3.5/manual/html/replicatedmap.html

我做到了。我的发现:

问题是版本 3.7.1 和 3.5.5 的组合来自 Maven pom.xml 的依赖管理。我们不知道 Spring Boot 的导入依赖管理还定义了 hazelcast 具有不同版本的工件,这反过来可能导致不兼容的库位于 class 路径上。