Apache ignite 分区映射交换、基线自动调整和数据重新平衡

Apache ignite Partition Map Exchange , Baseline Autoadjustment and Data Rebalancing

  1. 我的问题是这些操作是如何关联的?
  2. 是否有捕获 PME(分区映射交换)和数据重新平衡的开始和结束的事件?

长话短说,这些主题是关于数据分布的。

每个节点都包含一组预定义的分区,您的实际缓存所在的分区。分区数是固定的,默认为1024。也就是说,如果您有 2 个节点并添加了一个新节点,则需要将数据重新分配到新节点,这意味着每个节点上的分区不是 1024/2,而是现在需要 1024/3。

因拓扑变化而发送和接收数据的过程称为data rebalancing. As you might expect, this process might be resource and time-consuming depending on the amount of data in your cluster. Sometimes a node might experience short outages, for example if there was an error or due to some maintenance works. In that case, when persistence is enabled and the data is being stored on disk, there is no need for 2 rebalances (when a node leave and when it's back), instead, we would like to avoid the rebalance. To achive that behavior, baseline topology已介绍。基线拓扑结构乍一看可能会让人困惑,但它定义了一组包含数据的节点,基线的每一次变化都需要数据重新平衡。

当你添加一个新的持久节点时,它不会自动触发重新平衡,相反,你应该手动将它包含到基线拓扑中,例如使用控制脚本,或配置 Baseline Autoadjustment 这意味着在超时后进行基线更改。一个基线被改变,数据正在重新分配。

在数据重新平衡开始之前,会发生另一个名为 Partition Map Exchange (PME) 的过程。这是一个 cluster-wide 进程,当服务器或客户端节点加入或离开集群或者您正在启动或销毁缓存时触发。它的主要目标是在所有节点之间同步集群信息并进行一些调整,比如我们是否需要取消某些任务(如果客户端失败),是否有任何分区丢失(如果集群中没有更多的分区所有者)等等。

详情最好参考官方文档和博文。 Data Distribution in Apache Ignite

回答最后一个问题:

是的,可以收听 EVTS_CACHE_REBALANCE(不确定 PME-events),但我不明白你为什么要收听做吧。