当新成员加入群集时,将发生表重新分区和数据合并。
如果数据很大,我相信这需要一些时间。虽然它正在发生,缓存的状态是什么样的?
如果我使用的是嵌入式模式,它是否会阻止我的应用程序直到合并完成?或者如果我不想使用不完整的缓存,我是否需要在开始应用程序操作之前等待(以某种方式)?
答案 0 :(得分:1)
分区迁移将在成员加入群集后立即开始。它不会阻止您的应用程序,因为它将在后台异步进行。
仅阻止属于迁移分区的变更操作。只读操作不会被阻止。
变异操作将获得PartitionMigrationException
RetryableHazelcastException
,因此将默认重试2分钟。如果您的分区大小较小,则分区的迁移将持续较短。您可以通过系统属性hazelcast.partition.count
增加分区计数。
如果要在所有迁移完成之前阻止应用程序,可以检查isClusterSafe方法以确保群集中没有迁移分区。但请注意,isClusterSafe返回集群的状态而不是当前成员,因此可能无法依赖它。相反,我建议不要在分区迁移时阻止应用程序。