如何在由于hazelcast中的网络分区而发生裂脑时从db重新加载地图

时间:2014-07-23 13:20:08

标签: hazelcast

我正在使用hazelcast 3.2.2社区版。

我正在使用hazelcast进行各种测试。我有两个独立的VM,它们运行两个hazelcast实例作为linux服务形成一个集群。在这种情况下,我会将它们称为HAZ-A和HAZ-B。

以下是测试流程(link在此上下文中表示Physical link):

1)HAZ-A is up, HAZ-B is up.

2)Link down of HAZ-A, HAZ-B link is up.

执行一些操作说改变用户的密码,因此HAZ-B将有两个版本的用户对象(一个是HAZ-A的备份,说版本1,另一个是更新版本,说版本2)。

3)Link down of HAZ-B, HAZ-A link is already down. Hence links of both HAZ-A and HAZ-B are down.

4)Restore link of HAZ-A. Link is already down of HAZ-B.

执行一些操作,说更改用户密码,此时我收到stale数据,因为HAZ-A没有一次机会与HAZ-B同步。

所以重点是:

  

我们可以实现/注入任何会检测的侦听器吗?   界面上/下或链接上/下,检测后我们可以简单   从db?

重新同步数据

1 个答案:

答案 0 :(得分:0)

从文档中看,HAZ-A和HAZ-B似乎都会加载来自数据库的值,当它们最终看到对方时,它们将合并

来自第18章

  

如果正在使用MapStore,那些丢失的分区将从某个数据库重新加载,从而使每个迷你集群都完整。然后,每个迷你集群将重新创建丢失的主分区,并继续在其中存储数据,包括在其他节点上的备份。