如何在Hazelcast CP子系统上使用Atomiclong使用2个Hazelcast群集节点



我正在更新到最新的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子系统为我提供一个Atomiclong的实例,只有两个Hazelcast节点?

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

metadataraftGroupmanager.log:65 [127.0.0.1]:6000 [dev] [3.12] CP子系统正在等待3个成员加入群集。当前成员计数:1

我只有两个节点,因此,CP子系统不允许我使用原子良好,因为它将在3个节点上等待。

版本3.11我刚刚称为 hazelcast.getAtomicLong("count")。我该如何处理?

在3.12中,CP子系统不能配置为少于3个节点,因为这将牺牲"一致性",这是CP子系统在某些故障场景下的全部目的(网络分区(。[编辑:请参阅下面有关4.0及以后行为的新评论]

您仍然可以使用3.11 API,因此您从3.11实施中拥有的代码将继续工作。尽管将3.11 API标记为弃用,但不会被删除或禁用;贬值是警告说,已知API在分裂的大脑场景中容易受到一致性问题的影响。某些应用程序代码容忍了此类问题,而漏洞也不关心。如果您的应用程序不容忍原子长的潜在一致性问题,则需要添加一个额外的节点以迁移到CP实现。

最新更新