我正在更新到最新的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子系统正在等待3个成员加入集群。当前会员人数:1
我只有两个节点,因此,CP子系统不允许我使用atomicLong,因为它将等待至少3个节点。
我刚刚将版本3.11称为hazelcast.getAtomicLong("count")
。
我该如何处理?
答案 0 :(得分:0)
CP子系统不能配置为使用少于3个节点运行,因为这会牺牲“一致性”,这在某些故障情况下(网络分区)是CP子系统的全部目的。
您仍然可以使用3.11 API,因此您从3.11实现中获得的代码将继续起作用。尽管3.11 API已被标记为已弃用,但它们不会被删除或禁用。弃用是警告我们,已知API在裂脑情况下很容易受到一致性问题的影响。某些应用程序代码可以容忍此类问题,因此无需担心该漏洞。如果您的应用程序不能忍受与原子相关的潜在一致性问题,那么将需要添加一个附加节点以迁移到CP实现。