Split Brain Merge上的ReplicatedMap EntryListener事件

时间:2017-05-09 15:17:11

标签: java hazelcast splitbrain

我在Hazelcast群集中使用了ReplicatedMap<String, String>。每个节点在此映射中都有其键(hazelcastInstance.getLocalEndpoint().getUuid())和一些数据(JSON字符串)。使用这个映射,我实现了一个服务,使每个节点都有自己的数据存储,可以访问其他节点的数据,并观察变化。

然而,我努力让分裂的大脑行为正确。

我希望在发生分裂大脑合并时entryAdded附加到entryUpdated的{​​{1}}或EntryListener事件。然而,这种情况并非如此。我认为这是设计(?)。

您能想象解决这个问题的解决方案吗?

思路:

  • ReplicatedMap可以检测到裂脑合并。问题:MembershipListener中的数据尚未准备就绪 - 可以在调用ReplicatedMap事件之前或之后准备好。
  • 实施memberAdded,例如:

    MergePolicy

    问题:当分裂脑合并两个节点时,这可以正常工作。但是,使用四个节点(两台不同机器上的每台机器两个节点),它会消除值并且似乎随机行为。我怀疑我理解了一些错误,因为这种方法并不像希望的那样有效。因此,我还没有分析这四个节点的行为 - 分析四个日志文件也非常耗时。

0 个答案:

没有答案