由于hazelcast中的网络分区而导致大脑分裂时,如何从db重新加载地图

由于hazelcast中的网络分区而导致大脑分裂时,如何从db重新加载地图,hazelcast,Hazelcast,我使用的是hazelcast 3.2.2社区版 我正在用hazelcast进行各种测试。我有两个独立的VM,它们作为linux服务运行两个hazelcast实例,形成一个集群。在本文中,我将其称为HAZ-A和HAZ-B 以下是测试流程(link在本文中是指物理链接): 1) HAZ-A向上,HAZ-B向上。 2) HAZ-A链路断开,HAZ-B链路接通。 执行一些操作,比如更改用户密码,这样HAZ-B将有两个版本的用户对象(一个是HAZ-a版本1的备份,另一个是更新副本版本2) 3) HAZ-B

我使用的是hazelcast 3.2.2社区版

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

以下是测试流程(
link
在本文中是指
物理链接
):

1)
HAZ-A向上,HAZ-B向上。

2)
HAZ-A链路断开,HAZ-B链路接通。

执行一些操作,比如更改用户密码,这样HAZ-B将有两个版本的用户对象(一个是HAZ-a版本1的备份,另一个是更新副本版本2)

3)
HAZ-B链路断开,HAZ-A链路已断开。因此,HAZ-A和HAZ-B的链接都已关闭。

4)
HAZ-A的还原链接。链接已关闭HAZ-B。

执行一些操作,比如更改用户密码,此时我得到的是
stale
数据,因为HAZ-a没有一次机会与HAZ-B同步

所以这里的要点是:

我们可以实现/注入任何类型的监听器来检测 接口向上/向下或链接向上/向下,一旦检测到,我们可以 从数据库重新同步数据


从文档中可以看出,HAZ-A和HAZ-B将从数据库中加载值,当它们最终看到对方时,它们将合并

从第18章开始

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