gpt4 book ai didi

gemfire - 如何在成员组中的分区区域上运行数据相关函数?

转载 作者:行者123 更新时间:2023-12-01 13:11:19 25 4
gpt4 key购买 nike

我的团队使用 Geode 作为临时分析引擎。我们在 Geode 中存储了大量原始数据对象(每个 200MB+),但这些对象永远不会直接返回给客户端。相反,我们严重依赖自定义函数执行来在 Geode 内部处理这些数据集,并且只返回分析结果集。

我们有一个新的要求来实现两层数据分析精度。高精度分析将需要更大的原始数据集和更多的 CPU 时间。这些高精度分析必须不以任何方式抑制低精度分析性能。因此,我正在寻找一种将这些数据集隔离到不同服务器的解决方案。

我构建了一个 POC,将每个数据集保存在自己的区域中(均已分区)。这些区域被配置为属于单独的成员组,然后每个服务器被配置为加入两个组之一。我能够毫无问题地在本地建立这个集群,并且 gfsh 表明一切看起来都是正确的:describe member 显示每个成员托管预期的区域。

我的客户端代码配置了一个指向集群单一定位器的 ClientCache。我的函数执行命令一般如下所示:

FunctionService
.onRegion(highPrecisionRegion)
.setArguments(inputObject)
.filter(keySet)
.execute(function);

当我只运行高精度服务器时,我能够针对高精度区域执行该功能。当我只运行低精度服务器时,我能够针对低精度区域执行该功能。但是,当我运行两个服务器并一个接一个地执行功能时,我总是会收到一个异常,指出无法找到一个区域。有关我的代码示例和异常,请参阅以下要点。 https://gist.github.com/dLoewy/c9f695d67f77ec18a7e60a25c4e62b01

TLDR 关键点:

  1. 使用成员组,区域 A 在服务器 1 上,区域 B 在服务器 2 上。
  2. 这些区域必须在生产中进行分区。
  3. 我需要在这些区域之一上运行一个数据依赖函数;客户端代码选择哪个。
  4. 照原样,我的客户端代码总是找不到一个区域。

有人可以帮助我走上正轨吗?我应该考虑使用完全不同的集群架构吗?很乐意根据要求提供更多详细信息。

非常感谢您的宝贵时间!

大卫

仅供引用,以下文档页面提到了成员组的功能执行,但提供的细节很少。第一个链接描述了在成员组上运行数据-独立 函数,但没有说明如何,也没有说明在成员组上运行数据-相关 函数。 https://gemfire.docs.pivotal.io/99/geode/developing/function_exec/how_function_execution_works.html https://gemfire.docs.pivotal.io/99/geode/developing/function_exec/function_execution.html

最佳答案

您是否尝试过在客户端创建两个不同的池,每个池都针对特定的 server-group,并像往常一样使用 onRegion 执行函数?,我相信应该做的伎俩。有关详细信息,请查看 Organizing Servers Into Logical Member Groups .

希望这对您有所帮助。干杯。

关于gemfire - 如何在成员组中的分区区域上运行数据相关函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59724806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com