3.4. 异步 API
除了像 Cache.put ()、cache .remove () 等同步 API 方法外,Data Grid 还有一个异步的、非阻塞的 API,您可以在其中实现相同的结果。
这些方法命名的方式与其阻止的对应部分相似,并附加"Async"。 E.g., Cache.putAsync() , Cache.removeAsync() , etc. 这些异步对应的项会返回包含操作实际结果的 CompletableFuture。
例如,在 cache 参数中,在 Cache<String, String>, Cache.put (String key, String value) 中返回 String,而 Cache.putAsync (String key, String value) 返回 Complet ableFuture<String>。
3.4.1. 为什么使用这样的 API? 复制链接链接已复制到粘贴板!
非阻塞 API 非常强大,其提供了同步通信的所有保证 - 能够处理通信故障和例外 - 在调用完成前,无需阻止。 这可让您提高系统中的利用率并行性。 例如:
3.4.2. 哪些进程实际上异步发生? 复制链接链接已复制到粘贴板!
Data Grid 中有 4 个问题,它们可能被视为典型的写入操作的关键路径。这些是按成本顺序排列:
- 网络调用
- Marshalling
- 写入缓存存储(可选)
- 锁定
使用 async 方法将获取网络调用并分离关键路径。 出于各种技术原因,写入缓存存储和获取锁定,但仍在调用器线程中发生。