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

标签 java locking startup hazelcast

我有一个包含 3 个节点(在不同机器上)的集群,并且我有一个在启动时使用分布式锁 的“业务逻辑”。

有时当有更多延迟时每个节点获得独占 成功,因为集群还没有“启动”,所以每个节点还没有看到其他节点。

随后节点相互看到并且集群正确配置为 3 个节点。我知道有一个“MemberShipListener”来捕获事件“添加成员”所以我可以再次执行“业务逻辑”,但我想知道是否有一种方法可以确保集群启动何时正确完成以便等待执行“业务逻辑”,直到集群启动。

我尝试使用 hazelcast.initial.wait.seconds 但配置正确的秒数不是确定性的,我不知道这是否也会延迟成员加入操作。

最佳答案

Afaik,Hazelcast 中没有这样的东西。由于集群是动态的,一个节点可以随时离开,所以集群永远不会“完整”或不完整。

但是,您可以:

  1. 像您描述的那样配置初始等待,以帮助解决初始延迟
  2. 使用 hazelcast.initial.min.cluster.size 定义 hazelcast 在开始时等待的最小成员数
  3. 定义最小法定人数:集群中被视为可用/健康的最小节点数(参见 cluster quorum)
  4. 使用 PartitionService 检查集群是否安全,或者是否有待处理的迁移

关于java - Hazelcast:如何确保集群启动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35520423/

相关文章:

java - Redisson从不同线程释放锁

c# - 在启动时运行程序

java - 单击时使 RecyclerView 图像全屏显示

java - 失败-上下文路径/项目中的应用程序无法启动

java - 客户端的进度信息?

windows - 找出谁在锁定网络共享上的文件

c++ - 为什么 `std::lock`不使用全局顺序锁定互斥锁?

java - Tomcat 6 启动时的警告和错误

c# - 我们在 vb6.0 中的启动模块的 C# 等价物是什么?

java - SQLException - JDBC 驱动程序和 Tomcat