3.4. Asynchronous API


除了同步的 API 方法(如 Cache.put ()Cache.remove () 等)之外,数据网格也有一个异步的非阻塞 API,您可以在其中实现相同的结果。

这些方法的命名方式与阻塞计数器类似,并附加"Async"。  例如,Cache.putAsync ()Cache.removeAsync () 等。  这些异步对应部分返回一个包含操作实际结果的 CompletableFuture

例如,在 cache 参数中,在 Cache<String, String>, Cache.put (String key, String value) 返回 String while Cache.putAsync (String key) returns Complet ableFuture<String&gt;。

3.4.1. 为什么使用这种 API?

非阻塞 API 非常强大,它们提供了所有同步通信保证 - 能够处理通信故障和例外 - 在调用完成后不需要阻止。  这可让您更好地利用系统中的并行性。  例如:

Set<CompletableFuture<?>> futures = new HashSet<>();
futures.add(cache.putAsync(key1, value1)); // does not block
futures.add(cache.putAsync(key2, value2)); // does not block
futures.add(cache.putAsync(key3, value3)); // does not block

// the remote calls for the 3 puts will effectively be executed
// in parallel, particularly useful if running in distributed mode
// and the 3 keys would typically be pushed to 3 different nodes
// in the cluster

// check that the puts completed successfully
for (CompletableFuture<?> f: futures) f.get();
Copy to Clipboard Toggle word wrap

3.4.2. 哪些进程实际发生在异步中?

Data Grid 中有 4 个事情,它们被视为典型写入操作的关键路径。这些是成本顺序:

  • 网络调用
  • Marshalling
  • 写入缓存存储(可选)
  • 锁定

使用 async 方法将取网络调用和划分出关键路径。  然而,出于各种技术原因,写入缓存存储和获取锁定,但仍然出现在调用者的线程中。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat