代码之家  ›  专栏  ›  技术社区  ›  sanit

使用gemfire通过集群传输数据

  •  0
  • sanit  · 技术社区  · 7 年前

    我已经搜索了我的用例的解决方案,但没有找到正确的解决方案,所以希望有一些好的想法可以进一步探索。

    我有两个GemFire(版本8.2)集群( 私有的 和 公众的 每个商店 110 + GB数据,不保存到diskstore。私有集群从数据库获取数据,并通过广域网网关将条目发送给公共集群,直到两个集群都联机。我有一个只重新启动公共集群的用例,但是它在这个用例之后会释放数据并填充数据,我必须重新启动私有集群,并将数据从DB加载到私有集群,然后通过WAN传输数据。

    我无法从数据库填充公共集群,因为它将负载放到我的主数据库上,这将影响其他应用程序。

    我尝试了多种解决方案。

    第一: 从私有集群导出数据集,然后导入到公共集群;但是这会断开私有集群gemfire节点的连接,因为它在每个区域存储大量数据,而且我对下载大量数据的磁盘空间也有限制。

    第二: 有可能我将公开来自公共集群的JMXbean。然后,我可以运行一个客户端程序,它在私有集群中调用gemfire函数,该函数迭代条目,并通过jmx将条目放入公共集群,但是我的组织基础结构不允许我在gemfire节点中公开jmx bean。

    第三: 和第二个一样,gemfire函数可以通过队列将数据传输到公共集群,这个队列看起来工作正常,但也有其自身的局限性。队列只能传输1MB的文本消息,因此我需要专门处理大型对象,数据传输还包括不必要的序列化和反序列化(JSON文本消息)。

    我是否可以要求私有集群通过广域网网关或其他有人建议我探索的解决方案重新传输所有数据?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Randy May    7 年前

    您可以在这个开源项目中尝试“gemtouch” gemfire-toolkit .

    这听起来与IDEA 2非常相似,但不需要公开JMX bean。它使用JMX的方式与gfsh相同。如果这是一个问题,您可以很容易地删除对JMX的使用,因为它只使用JMX来检索区域列表。