Hazelcast:如何确保集群启动已完成

5
我有一个由3个节点组成的集群(在不同的机器上),并且我有一个“业务逻辑”,该逻辑在启动时使用分布式锁。
有时候,当延迟更高时,每个节点都会成功获取独占锁,因为集群尚未处于“启动”状态,所以每个节点还没有看到其他节点。
随后,节点彼此看到,并且集群正确配置为3个节点。我知道有一个“MemberShipListener”来捕获事件“Member added”,因此我可以再次执行“业务逻辑”,但我想知道是否有一种方法可以确保当集群启动完成时才执行“业务逻辑”,以等待集群启动完成。
我尝试使用“hazelcast.initial.wait.seconds”,但是正确配置秒数并不确定,而且我不知道这是否也会延迟成员加入操作。
1个回答

8
据我所知,在Hazelcast中没有这样的东西。由于集群是动态的,节点随时可以进出,因此集群永远不会“完整”或不完整。
但是,您可以:
1. 配置初始等待时间,就像您描述的那样,以帮助处理初始延迟。 2. 使用hazelcast.initial.min.cluster.size定义在启动时hazelcast正在等待的最小成员数量。 3. 定义最小仲裁:集群被视为可用/健康的最小节点数(请参见cluster quorum)。 4. 使用PartitionService检查集群是否安全,或者是否存在未完成的迁移。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接