Ignite实例之间数据的均匀分布

Ignite实例之间数据的均匀分布,ignite,gridgain,Ignite,Gridgain,我有9个ignite服务器实例I0,I1,…,I8,它的缓存处于PARTITIONED模式,在这种模式下,我从kafka中的分区P0,P1…..P8并行加载数据。在这里,分区P0,P1…P8包含可以由字段seq\u no唯一标识的条目数,并且我使用part\u ID将条目从一个分区并置到一个实例。我把key定义为 class key() { int seq_no; @AffinityKeyMapped int part_ID; //for coll

我有9个ignite服务器实例
I0,I1,…,I8
,它的缓存处于
PARTITIONED
模式,在这种模式下,我从kafka中的分区
P0,P1…..P8
并行加载数据。在这里,分区
P0,P1…P8
包含可以由字段
seq\u no
唯一标识的条目数,并且我使用
part\u ID
将条目从一个分区并置到一个实例。我把key定义为

 class key() 
 { 
      int seq_no; 
      @AffinityKeyMapped 
      int part_ID; //for collocating entries from one partition to one instance only  
 } 
因此,我试图在ignite实例和分区中的缓存项之间实现一对一的映射,例如,
I0->P0,I1->P1,…,I8->P8
。但在我的例子中,我得到的映射是

 I0-> NULL(No Entries), 
 I1-> P5, 
 I2-> NULL, 
 I3-> P7, 
 I4-> P2, P6 
 I5-> P1 
 I6-> P8 
 I7-> P0, P4 
 I8-> P3 

亲和力配置部分在这里实现,即具有相同分区ID的条目缓存在相同的ignite实例上。但是,数据在ignite实例中的分布并不均匀,即
I4
I7
保存2个分区的数据,而
I0
I2
不包含任何数据。那么,在这里,我们如何实现数据的平等分布,以便每个ignite实例获得一个分区数据?

Apache ignite用户论坛也讨论了这一点:

  • 您是否可以尝试删除关联密钥并检查数据是否在所有节点之间平均分布
  • 检查是否所有Ignite服务器都是同一Ignite群集的一部分,并且所有这些服务器都具有分配给它们的相同堆空间。发生这种情况的原因之一是服务器0和服务器2可能没有足够的堆空间
  • 另外,如果第1点的答案是肯定的,那么我猜您必须实现自己的关联函数