当其他成员离开集群时,发布了Hazelcast锁

问题描述 投票:0回答:1

面对一个非常奇怪的情况,当多个成员从hazelcast集群离开时意外释放锁。

场景:

具有5个节点[A,B,C,D,E]的集群,其中A是集群中的第一个成员,然后是B,C,D,E。

节点D持有一个锁。节点E正在等待由节点D锁定的节点。

如果节点[A,B,C]一次性离开集群,则节点D释放锁定,其中D节点仍在运行。由于群集中最老的成员,节点D已成为主节点。

为什么Node D会释放锁定?

它与SplitBrain条件有关吗?

如果一个节点(A,B,C中的任何一个)一个接一个地离开集群,那么一切正常。节点D仍然保持锁定,E正在等待它可用。

组态

Config config = new Config();
config.getGroupConfig().setName("group-101");
NetworkConfig networkCOnfig = config.getNetworkConfig();
networkConfig.getJoin().getTcpIoConfig().setEnabled(true);
networkConfig.getJoin().getMulticastConfig().setEnabled(false);
networkConfig.getJoin().getAwsConfig().setEnabled(false);
networkConfig.setPort(5701);
networkConfig.getJoin().getTcpIpConfig().setMemebers(Arrays.asList("ip1","ip2"));
Hazelcast.newHazelcastInstance(config);
hazelcast
1个回答
0
投票

从文档:

锁是故障安全的。如果成员持有锁并且其他一些成员关闭,则群集将保持您的锁安全且可用。此外,当成员离开集群时,将删除该死成员获取的所有锁,以便这些锁立即可用于实时成员。

详情请见:https://docs.hazelcast.org/docs/3.11.1/manual/html-single/index.html#lock

© www.soinside.com 2019 - 2024. All rights reserved.