可以说,我有多个Hazelcast成员(服务器)分布在世界各地(例如德国,俄罗斯等)。
需要按区域在数据库中存储/拆分数据,并且应该可以通过IMap
支持的MapStore
从任何服务器访问所有数据。
我最近阅读了this article,它可以满足我的要求,但是我不确定MapStore
的表现如何。
关键时刻是,如果member1
(例如俄罗斯)以IMap
(例如德国)拥有的密钥从member2
请求数据,则MapStore.load()
在哪一侧叫吗?
答案 0 :(得分:1)
您不应在不同的数据中心之间划分同一集群的成员。群集成员依靠常规的心跳消息来检测群集的运行状况。广域网无法可靠地以一致的方式提供这些信息,并且您几乎肯定会遇到网络分区问题(裂脑综合症)。
每个数据中心(德国,俄罗斯等)应有一个单独的群集,其中包含特定于地区的地图。然后,可以将这些地图复制(广域网复制)到远程数据中心,以进行灾难恢复,并提供地理位置接近的服务器以支持该区域中需要访问其他区域数据的用户。
由于数据库中的数据已经按区域进行了拆分,因此在Hazelcast端匹配此拆分意味着MapLoader将始终从同一位置的数据库加载。