我有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的条目被缓存在相同的点火实例上。但是,数据并不是在点燃实例之间平均分配,即I4
和I7
拥有2个分区'数据,而I0
和I2
不包含任何数据。那么在这里我们如何实现数据的均等分配,以便每个点火实例获得一个分区数据?
答案 0 :(得分:0)
Apache Ignite用户论坛上也讨论过这个问题:http://apache-ignite-users.70518.x6.nabble.com/Equal-Distribution-of-data-among-Ignite-instances-td10602.html
答案 1 :(得分:0)
此外,如果第1点的答案是肯定的,那么我猜你必须实现自己的亲和力函数