我可以 "pin" 一个 Geode/Gemfire 区域到特定的服务器子集吗?

Can I "pin" a Geode/Gemfire region to a specific subset of servers?

我们大量使用 Geode 函数执行来操作 Geode 内部的数据。我想配置我的集群,以便我们针对特定数据子集执行的功能始终由一组特定的服务器提供服务。

在我看来,我的理想配置如下所示:(分区)区域 A 仅由服务器 1 和 2 提供服务,而(分区)区域 B 仅由服务器 3、4 和 5 提供服务。

我们针对这两个区域执行的功能具有非常不同的 CPU/network 要求;我们希望将一个区域与另一个区域的性能影响隔离开来,理想情况下能够相应地调整每台服务器的硬件。

您可以将您的服务器拆分为不同的 groups,然后将区域创建到这些特定的 groups 中,从而使您能够正确地 "route" 函数执行。您可以在 Organizing Peers into Logical Member Groups.

中获得有关此功能的更多详细信息

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

假设您在操作上使用 gfsh 来管理您的集群,您可以使用 groups 通过将每个服务器分配给相关组来在逻辑上隔离您的集群。然后创建区域只需要您还指明应该在哪个 'group' 上创建区域。函数应该已经被限制为通过 FunctionService.onRegion() 调用针对给定区域执行。

注意:如果您正在阅读 FunctionService API,请不要试图使用 onMember(group) 方法作为那些不幸的是,它只适用于点对点(服务器到服务器)调用。我在这里假设您正在进行典型的客户端-服务器调用。当然,如果您正在进行 p2p 函数调用,那么这些方法将完全相关。