Ignite实例之间的数据分配相等

时间:2017-02-13 19:29:01

标签: ignite gridgain

我有9个点燃服务器实例I0, I1,..., I8,它具有PARTITIONED模式的缓存,我在其中从kafka中的分区P0, P1.....P8并行加载数据。这里分区P0, P1....P8包含可以由字段seq_no唯一标识的条目数,我也使用part_ID来将条目从一个分区并置到一个实例。我已将键定义为,

 class key() 
 { 
      int seq_no; 
      @AffinityKeyMapped 
      int part_ID; //for collocating entries from one partition to one instance only  
 } 

所以,我试图在点燃实例和分区中的缓存条目之间实现一对一映射,例如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的条目被缓存在相同的点火实例上。但是,数据并不是在点燃实例之间平均分配,即I4I7拥有2个分区'数据,而I0I2不包含任何数据。那么在这里我们如何实现数据的均等分配,以便每个点火实例获得一个分区数据?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

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