添加新的群集节点时,删除了Hazelcast Map中的成员

时间:2018-11-30 12:25:46

标签: hazelcast

我正在使用Hazelcast版本3.9.1,并且尝试添加新节点时,删除了许多地图成员。 我们正在使用通过TCP发现成员并在新节点中添加所有IP,然后重新启动Hazelcast服务。 删除地图成员的原因是什么?

2 个答案:

答案 0 :(得分:0)

在正在运行的集群中,不会删除Map数据,但会对其进行重新分区,即在整个集群中重新平衡数据。换句话说,将新成员添加到群集后,某些现有条目将移至新成员。

如果您只想将成员添加到现有群集中,则无需重新启动,Hazelcast会自动重新平衡数据。

如果未启用任何备份,而您重新启动了群集,则数据将丢失,因为数据已存储在内存中。为了防止数据丢失,请启用备份(默认为启用1个同步备份),并且不要立即关闭整个群集。

答案 1 :(得分:0)

正如Wildnez在回应中所说,添加新节点将导致重新平衡。因此,尽管可以从特定节点的地图中删除地图条目,但它们仍将保留在群集中。

作为一个具体示例,如果您使用默认的1个备份,并启动具有一个节点和1000个条目的群集,则所有1000个条目都将在该节点的映射中。在这种情况下,将不会有备份,因为即使您指定了1个备份,备份也不会与主数据库存储在同一节点上。

如果添加第二个节点,则大约50%的地图条目将迁移到新节点。对于要迁移的条目,其备份将添加到第一个节点上,对于不迁移的地图条目,其备份将创建在第二个节点上。

如果添加第三个节点,迁移将再次发生,并且每个节点将具有大约三分之一的主要条目和三分之一的备份。

添加节点决不能使映射条目从集群中删除,但是它们将导致集群成员之间的条目迁移。