Hazelcast 3.3 - EntryProcessor正在访问"非本地"按键

时间:2015-06-13 10:53:59

标签: distributed-computing hazelcast

我正在使用Hazelcast 3.3。

一个成员将条目写入IMap并调用map.executeOnEntries(myEntryProcessor)。 EntryProcessor的任务是只打印控制台上的条目。但是,成员(其他3个和第1个= 4个成员)似乎打印重叠的条目集。 我的理解是EntryProcessors只获得与localKeySet()对应的条目。但是,似乎并非如此。

有人可以解释一下这种行为吗?

2 个答案:

答案 0 :(得分:1)

你的推理是正确的。 EntryProcessor只应该触摸本地密钥。

你用什么作为钥匙? Hazelcast使用密钥的序列化版本作为实际密钥;所以也许你有2个不同的键实例导致相同的'toString',但它们的二进制内容是不同的。

我用自己的脚射击自己HashMap是密钥的一部分;这可能导致不同的二进制内容,即使实际内容相同,然后你会得到奇怪的行为。

如果您正在使用例如长或字符串为关键;那时我无法解释你所看到的行为。复制这个有多难?

答案 1 :(得分:0)

发现了这个问题。问题不在于EntryProcessors。实际上,将数据写入分布式IMap的代码运行的数量超过了所需数量的成员。

因此,实质上,一个进程(通过IExecutorService启动)在多个实例上运行并发布“重叠集”/重复数据集。 EntryProcessor正在以正确的方式工作。