2.14. 代码执行和数据处理


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

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

一个确定的是,长时间运行的进程可能会开始对正常读写操作造成负面影响。因此,您必须随着时间的推移监控部署并持续评估性能。

嵌入式缓存

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

ClusterExecutor API
可让您通过缓存管理器执行任何操作,包括迭代一个或多个缓存的条目,并根据 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);
}

CacheStream

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

远程缓存

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

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部