2.14. 代码执行和数据处理


分布式缓存的一个优点是,您可以利用各个主机的计算资源来更有效地执行大规模数据处理。通过在 Data Grid 上直接执行您的处理逻辑,您可以将工作负载分散到多个 JVM 实例中。您的代码还在 Data Grid 存储数据的相同内存空间中运行,这意味着您可以更快地迭代条目。

在对数据网格部署的性能影响方面,这完全取决于您的代码执行。更复杂的处理操作性能较低,因此您应该在 Data Grid 集群中运行的任何代码,并仔细规划。首先测试您的代码,并执行在较小的、示例数据集上运行的多个执行。收集一些指标后,您可以开始识别优化并了解您正在运行代码的性能影响。

一个确定的考虑是,长时间运行的进程可能会开始对正常读写操作产生负面影响。因此,您可以随时监控部署并持续评估性能。

嵌入式缓存

借助嵌入式缓存,Data Grid 提供两个 API,可让您在与数据相同的内存空间中执行代码。

ClusterExecutor API
允许您使用 Cache Manager 执行任何操作,包括迭代一个或多个缓存的条目,并为您提供基于 Data Grid 节点的处理。
CacheStream API
可让您对集合执行操作,并根据数据进行处理。

如果要在单一节点、一组节点或特定区域中的所有节点上运行操作,那么您应该使用集群执行。如果要运行一个为整个数据集保证正确结果的操作,则使用分布式流是一个更有效的选项。

集群执行

ClusterExecutor clusterExecutor = cacheManager.executor();
clusterExecutor.singleNodeSubmission().filterTargets(policy);
for (int i = 0; i < invocations; ++i) {
   clusterExecutor.submitConsumer((cacheManager) -> {
      TransportConfiguration tc =
      cacheManager.getCacheManagerConfiguration().transport();
      return tc.siteId() + tc.rackId() + tc.machineId();
   }, triConsumer).get(10, TimeUnit.SECONDS);
}
Copy to Clipboard Toggle word wrap

CacheStream

Map<Object, String> jbossValues =
cache.entrySet().stream()
     .filter(e -> e.getValue().contains("JBoss"))
     .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
Copy to Clipboard Toggle word wrap

远程缓存

对于远程缓存,Data Grid 提供了一个 ServerTask API,它可让您在 Data Grid 服务器注册自定义 Java 实现,并通过通过 Hot Rod 调用 execute () 方法或使用 Data Grid 命令行界面(CLI)来以编程方式执行任务。您只能对一个 Data Grid 服务器实例或集群中的所有服务器实例执行任务。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat