2

考虑以下场景。

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

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

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

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

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

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

4

1 回答 1

3

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

hazelcastInstance.getLifecycleService().shutdown();

2- 如果您使用Hazelcast 管理中心,它会在主屏幕中显示正在进行的迁移/重新分区操作计数。

于 2012-11-07T06:56:18.070 回答