【问题标题】:Equal Distribution of data among Ignite instances在 Ignite 实例之间平均分配数据
【发布时间】:2017-02-13 19:29:01
【问题描述】:

我有 9 个 ignite 服务器实例 I0, I1,..., I8,它们在 PARTITIONED 模式下具有缓存,其中我从 kafka 中的分区 P0, P1.....P8 并行加载数据。这里分区P0, P1....P8 包含可以由字段seq_no 唯一标识的条目数,我也使用part_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 实例之间分布不均,即 I4I7 拥有 2 个分区的数据,而 I0I2 不包含任何数据。那么这里如何实现数据的平均分配,让每个ignite实例得到一个分区数据呢?

【问题讨论】:

    标签: ignite gridgain


    【解决方案1】:

    【讨论】:

      【解决方案2】:
      1. 能否尝试删除关联键并检查数据是否在所有节点之间平均分布?
      2. 检查是否所有的 Ignite 服务器都属于同一个 Ignite 集群,并且是否都为它们分配了相同的堆空间。发生这种情况的原因之一是服务器 0 和服务器 2 可能没有足够的堆空间。

      另外,如果第 1 点的答案是肯定的,那么我想你必须实现自己的亲和函数

      【讨论】:

        猜你喜欢
        • 2019-01-07
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        • 1970-01-01
        • 2021-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多