由于hazelcast中的网络分区而导致大脑分裂时,如何从db重新加载地图
我使用的是hazelcast 3.2.2社区版 我正在用hazelcast进行各种测试。我有两个独立的VM,它们作为linux服务运行两个hazelcast实例,形成一个集群。在本文中,我将其称为HAZ-A和HAZ-B 以下是测试流程(由于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
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正在使用,那么丢失的分区将从某个数据库中重新加载,从而使每个小型集群都完整。然后,每个小型集群将重新创建丢失的主分区,并继续在其中存储数据,包括其他节点上的备份