我已经为用例搜索了解决方案,但没有找到合适的解决方案,因此希望有一些不错的想法可以进一步探索。
我有两个gemfire(8.2版)集群( private 和 public ),每个集群存储 110 + GB数据,但不持久存储到磁盘存储中。专用群集从数据库获取数据,然后通过WAN网关将条目传输给公共,直到两个群集都联机。我有一个用例,其中我仅重新启动公共集群,但此后它会丢失数据并填充回去,因此我必须重新启动私有集群并将数据从DB加载到私有集群,再通过WAN传输数据。
我无法从数据库填充公共集群,因为它会将负载施加到主数据库上,这会影响其他应用程序。
我尝试了多种解决方案。
首先:从私有集群导出数据集,然后导入到公共数据库;但这会断开专用集群gemfire节点的连接,因为它在每个区域中都存储大量数据,而且我对用于下载大量数据的磁盘空间也有限制。
第二:我有可能会从公共集群中公开JMX bean。然后,我可以运行一个客户端程序,该程序在私有集群中调用gemfire函数,该程序通过JMX迭代条目并将条目拖放到公共集群中,但是我的组织架构不允许我在gemfire节点中公开JMX bean。
第三步:与第二步一样,gemfire函数可以通过队列将数据传输到公共集群,这似乎可以正常工作,但有其自身的局限性。队列只能传输1MB的文本消息,因此我需要专门处理大对象,并且数据传输还包括不必要的序列化和反序列化(JSON文本消息)。
无论如何,我是否可以要求私有群集通过WAN网关或有人可以建议我探索的任何其他解决方案重新传输所有数据。
答案 0 :(得分:1)
您可以在此开源项目gemfire-toolkit中尝试“ gemtouch”。
这听起来很像想法2,但是不需要公开JMX bean。它确实与gfsh一样使用JMX。如果这是一个问题,您可以轻松地删除对JMX的使用,因为它仅使用JMX来检索区域列表。
答案 1 :(得分:0)
我遇到了同样的问题,但是使用3个Geode群集(每个群集都在不同的位置)。
当一个集群中发生奇怪的事情时,我们需要使用现有的两个剩余集群之一来恢复它: