Hazelcast - 当新的集群成员合并时,新成员是否在运行?

Hazelcast - when a new cluster member is merging, is the new member operational?

当新成员加入集群时,table 将发生重新分区和数据合并。

如果数据量大,相信需要一些时间。当它发生时,缓存的状态是什么样的?

如果我使用嵌入式模式,它会在合并完成之前阻止我的应用程序吗?或者如果我不想使用不完整的缓存,我是否需要等待(以某种方式)在开始我的应用程序操作之前?

分区迁移将在成员加入集群后立即开始。它不会阻止您的应用程序,因为它会在后台异步进行。

仅阻止落入迁移分区的变异操作。 Read-only 操作未被阻止。

变异操作将获得 PartitionMigrationException,即 RetryableHazelcastException,因此它们将在默认 2 分钟内重试。如果您的分区大小较小,则分区迁移的持续时间会更短。您可以通过系统 属性 hazelcast.partition.count 增加分区数。

如果您想在所有迁移完成之前阻止您的应用程序,您可以检查 isClusterSafe 方法以确保集群中没有迁移分区。但请注意 isClusterSafe returns 集群的状态而不是当前成员,因此它可能不是值得依赖的东西。相反,我建议不要在分区迁移时阻止应用程序。