考虑以下场景。
有 2 个 Hazelcast 节点。一个停止,另一个在相当重的负载下运行。
现在,第二个节点出现了。应用程序启动,它的 Hazelcast 实例连接到第一个。Hazelcast 开始数据重新分区。对于 2 个节点,它本质上意味着 IMap 中的每个条目都被复制到新节点,并且两个节点被任意分配为主/备份。
问题: 如果在此过程中第一个节点被关闭,并且复制没有完全完成,则可能会丢失部分 IMap 内容和 ITopic 订阅。
问题:如何确保重新分区过程已经完成,并且关闭第一个节点是安全的?
(整个设置是为了在不停机的情况下启用软件更新,同时保留当前的应用程序状态)。
我尝试使用getPartitionService().addMigrationListener(...)但侦听器似乎没有连接到完整的迁移过程。相反,我为每个复制块调用了数十到数百个调用migrationStarted()/migrationCompleted() 。