受控分区和 MapStore

Controlled partitioning and MapStore

比方说,我有几个 Hazelcast 成员(服务器)分布在世界各地(例如德国、俄罗斯等)。

需要按地区 store/split 数据库中的数据,并且所有数据都应该可以通过 IMap 从任何服务器访问,由 MapStore 支持。

我最近阅读了 this article,它满足了我的要求,但我不确定 MapStore 会如何表现。

关键时刻是,如果 member1(例如俄罗斯)使用 member2(例如德国)拥有的密钥从 IMap 请求数据,MapStore.load() 在哪一边会叫吗?

您不应将同一集群的成员拆分到不同的数据中心。集群的成员依靠定期的心跳消息来检测集群的健康状况;广域网无法以一致的方式可靠地传送这些内容,您几乎肯定会遇到网络分区问题(裂脑综合症)。

每个数据中心(德国、俄罗斯等)都应该有一个带有 region-specific 地图的独立集群。然后可以将这些地图复制(WAN 复制)到远程数据中心,以用于灾难恢复和提供地理位置接近的服务器以支持该地区的用户需要访问其他地区的数据。

由于数据库中的数据已经按区域拆分,因此在 Hazelcast 端匹配此拆分意味着 MapLoader 将始终从同一位置的数据库加载。