【问题标题】:Hazelcast AtomicLong Data loss When multiple member leftHazelcast AtomicLong 数据丢失当多个成员离开时
【发布时间】:2019-12-11 15:04:04
【问题描述】:

当多个成员从集群断开连接时,Hazelcast 失败。 我的场景非常基本,我的配置有 3 个 bakcup 选项(它不起作用)。我在一个集群中有 4 个成员,我使用 AtomicLong API 来保存我的 key->value。当所有成员都还活着时,一切都是完美的。但是,当我同时杀死 2 个成员(无需等待一段时间)时,会发生一些数据丢失。我的会员数总是4。有什么办法可以避免这种数据丢失?

  Config config = new Config();
  NetworkConfig network = config.getNetworkConfig();
  network.setPort(DistributedCacheData.getInstance().getPort());
  config.getCacheConfig("default").setBackupCount(3);
  JoinConfig join = network.getJoin();
  join.getMulticastConfig().setEnabled(false);
  join.getTcpIpConfig().setEnabled(true);  
  config.setNetworkConfig(network);
  config.setInstanceName("member-name-here");

谢谢。

【问题讨论】:

    标签: atomic hazelcast atomicinteger


    【解决方案1】:

    IAtomicLong 具有硬编码的 1 个同步备份,您不能将其配置为具有 1 个以上的备份。你正在做的是用 3 个备份配置 Cache

    下面是一个示例,演示了IMap的多个成员断开连接

    Config config = new Config();
    config.getMapConfig("myMap").setBackupCount(3);
    HazelcastInstance[] instances = {
            Hazelcast.newHazelcastInstance(config),
            Hazelcast.newHazelcastInstance(config),
            Hazelcast.newHazelcastInstance(config),
            Hazelcast.newHazelcastInstance(config)
    };
    IMap<Integer, Integer> myMap = instances[0].getMap("myMap");
    for (int i = 0; i < 1000; i++) {
        myMap.set(i, i);
    }
    System.out.println(myMap.size());
    instances[1].getLifecycleService().terminate();
    instances[2].getLifecycleService().terminate();
    System.out.println(myMap.size());
    

    【讨论】:

    • 当我查看 HazelCast 官方文档时,我看到了 MAP API 下的备份部分,我只是想尝试一下 IAtomicLong。正如你所说,我没有工作。当多个成员从集群断开连接时,如何避免数据丢失?至少应该有办法。
    • 正如我所说,您无法为 IAtomitlong 数据结构配置超过 1 个备份,但您可以配置其他数据结构,例如 IMap 最多 6 个备份。在这种情况下,如果多个成员从集群断开连接,IMap 将不会丢失数据。我已经更新了我的答案来证明这一点。
    • 我使用 IAtomicLong 是因为我的数据结构非常基础,而且 IAtomicLog 的工作效率/性能更高。我必须再次将所有结构转换为 IMap 并进行一些调整。
    • 顺便说一句,我已经尝试了您的示例以及 main 何时完成。 HZ 线程仍然继续工作并在无限循环中抛出异常。是否有任何配置来限制尝试。 (原因:SocketException[连接被拒绝:没有更多信息可解决)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多