Gemfire WAN与Peer to Peer相结合

时间:2017-02-06 20:14:27

标签: gemfire spring-data-gemfire

我们正在使用多站点WAN配置。我们在北美和欧洲有两个跨越地理距离的集群。

上下文:群集1有两个成员A和B,它们都是网关发件人。集群B有两个成员C和D,它们都是网关接收者。当集群1中的成员A启动时,它会从数据库中读取数据并将其加载到gemfire缓存中,然后将其发送到集群2.到目前为止一切都很好。

问题:如果群集2中的两个成员同时重新启动,则会丢失所有gemfire区域/数据。此时,我们可以重新启动集群1中的成员A,它再次从数据库加载数据并被推送到集群B. 但我们更愿意避免重新启动成员A并且不会持久保存到硬盘。

是否有解决方案,如果重新启动群集2,它可以从群集1请求数据的完整副本?

不确定是否可行,但是我们可以以某种方式为群集2中的网关接收器(在WAN之上)建立点对点,因此它们会在重新启动时自动更新。

由于

1 个答案:

答案 0 :(得分:0)

目前不支持通过WAN获取完整的数据副本。您可以做的是在站点A的所有成员上运行一个函数,它只是迭代所有数据并将其再次放回该区域。就像这样:

public void execute(FunctionContext context) {
  RegionFunctionContext ctx = (RegionFunctionContext)context;
  Region localData = PartitionRegionHelper.getLocalDataForContext(ctx);
  for (Object key : localData.keySet()) {
    Object val = localData.get(key);
    localData.put(key, val);
  }
}