gpt4 book ai didi

java - 如何在只有 2 个 Hazelcast 集群节点的 Hazelcast CP 子系统上使用 AtomicLong?

转载 作者:行者123 更新时间:2023-12-02 03:24:35 27 4
gpt4 key购买 nike

我正在更新到最新的 Hazelcast 版本 [3.12],并且在获取 AtomicLong 实例时遇到问题。新版本中,HZ引入了CAP定理的概念,以授予一致性和分区容错性,但他的问题是CP子系统必须至少有3个成员。

Config config = new Config();
config.getCPSubsystemConfig().setCPMemberCount(3);
config.getCPSubsystemConfig().setGroupSize(3);

HazelcastInstance instance1 = Hazelcast.newHazelcastInstance(config);

如何配置 CP 子系统来为我提供只有两个 hazelcast 节点的atomicLong 实例?

如果我仅使用一个节点启动应用程序,则会打印以下消息:

MetadataRaftGroupManager.log:65 [127.0.0.1]:6000 [dev] [3.12] CP Subsystem is waiting for 3 members to join the cluster. Current member count: 1

我只有两个节点,因此,CP 子系统不允许我使用atomicLong,因为它将永远等待至少 3 个节点..

我刚刚调用了 3.11 版本hazelcast.getAtomicLong("count")。我该如何处理这个问题?

最佳答案

在 3.12 中,CP 子系统无法配置为以少于 3 个节点运行,因为这会牺牲“一致性”,而“一致性”是 CP 子系统在某些故障情况(网络分区)下的全部目的。 [编辑:请参阅下面有关 4.0 及更高版本行为的新评论]

您仍然可以使用 3.11 API,因此 3.11 实现中的代码将继续工作。尽管 3.11 API 被标记为已弃用,但它们并未被删除或禁用;弃用是一个警告,表明 API 在裂脑场景中容易受到一致性问题的影响。某些应用程序代码可以容忍此类问题,因此无需担心该漏洞;如果您的应用程序不能容忍原子 long 的潜在一致性问题,则需要添加额外的节点才能迁移到 CP 实现。

关于java - 如何在只有 2 个 Hazelcast 集群节点的 Hazelcast CP 子系统上使用 AtomicLong?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55956241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com