异步调用
在Dubbo中发起异步调用机制,从而提高对应的服务的调用的吞吐能力和调用机制
特性说明
技术背景
从2.7.0开始,Dubbo 的所有异步编程接口开始以CompletableFuture为基础,基于NIO的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小。
使用场景
使用CompletableFuture修饰的接口
-
首先需要服务提供者事先定义CompletableFuture签名的服务,接口定义指南如下:
-
Provider端异步执行将阻塞的业务从Dubbo内部线程池切换到业务自定义线程,避免Dubbo线程池的过度占用,有助于避免不同服务间的互相影响,异步执行无异于节省资源或提升RPC响应性能,因为如果业务执行需要阻塞,则始终还是要有线程来负责执行。
-
Provider端异步执行和Consumer端异步调用是相互独立的,任意正交组合两端配置
- Consumer同步 - Provider同步
- Consumer异步 - Provider同步
- Consumer同步 - Provider异步