2.14. 代码执行和数据处理


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

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

一个无限的考虑因素是,长时间运行的进程可能会对正常的读写操作造成负面影响。因此,您必须持续监控部署并持续评估性能。

嵌入缓存

通过使用嵌入式缓存,数据网格提供两个 API,可让您在与数据相同的内存空间中执行代码。

ClusterExecutor API
允许您使用 Cache Manager 执行任何操作,包括迭代一个或多个缓存的条目,并基于数据网格节点进行处理。
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 Server 注册自定义 Java 实施,并通过调用 Hot Rod 或使用 Data Grid Command Line Interface (CLI)来编程执行任务。您可以在一个数据网格服务器实例或集群中所有服务器实例上执行任务。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat