Migration 如何确保Hazelcast迁移完成

Migration 如何确保Hazelcast迁移完成,migration,cloud,cluster-computing,hazelcast,Migration,Cloud,Cluster Computing,Hazelcast,考虑以下场景 有2个Hazelcast节点。一个停止,另一个在相当重的负载下运行 现在,第二个节点出现了。应用程序启动,其Hazelcast实例连接到第一个实例。Hazelcast开始数据重新分区。对于2个节点,它本质上意味着 将IMap中的每个条目复制到新节点,并将两个节点指定为主节点/备份节点 问题: 如果在此过程中第一个节点关闭,并且复制未完全完成,则部分IMap内容和ITopic订阅可能会丢失 问题: 如何确保重新分区过程已完成,并且关闭第一个节点是安全的 (整个设置是为了在不停机的情况

考虑以下场景

有2个Hazelcast节点。一个停止,另一个在相当重的负载下运行

现在,第二个节点出现了。应用程序启动,其Hazelcast实例连接到第一个实例。Hazelcast开始数据重新分区。对于2个节点,它本质上意味着 将IMap中的每个条目复制到新节点,并将两个节点指定为主节点/备份节点

问题: 如果在此过程中第一个节点关闭,并且复制未完全完成,则部分IMap内容和ITopic订阅可能会丢失

问题: 如何确保重新分区过程已完成,并且关闭第一个节点是安全的

(整个设置是为了在不停机的情况下启用软件更新,同时保留当前应用程序状态)


我尝试使用getPartitionService().addMigrationListener(…)但该侦听器似乎没有连接到完整的迁移过程。相反,对于复制的每个区块,我会得到数十到数百个调用migrationStarted()/migrationCompleted()

1-当您正常关闭第一个节点时,关闭进程应该等待(阻塞),直到数据安全备份

hazelcastInstance.getLifecycleService().shutdown();
2-如果使用,则在主屏幕中显示正在进行的迁移/重新分区操作计数