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>。
3.4.1. 为什么使用这种 API? 复制链接链接已复制到粘贴板!
非阻塞 API 非常强大,它们提供了所有同步通信保证 - 能够处理通信故障和例外 - 在调用完成后不需要阻止。 这可让您更好地利用系统中的并行性。 例如:
3.4.2. 哪些进程实际发生在异步中? 复制链接链接已复制到粘贴板!
Data Grid 中有 4 个事情,它们被视为典型写入操作的关键路径。这些是成本顺序:
- 网络调用
- Marshalling
- 写入缓存存储(可选)
- 锁定
使用 async 方法将取网络调用和划分出关键路径。 然而,出于各种技术原因,写入缓存存储和获取锁定,但仍然出现在调用者的线程中。