Dubbo 3 服务端怎样异步执行?
查看完整题解
参考回答
直接回答
提供者可以返回 CompletableFuture,也可以用 RpcContext.startAsync() 的异步上下文稍后写回结果。选择后一种时,原接口签名可以保留同步返回类型。
讲清原理
将任务交给设有上限的线程池,或使用异步 I/O,原来的处理线程就可以接下一次请求。结果准备好后才由框架发出。需要跨线程使用调用上下文时,应按 AsyncContext 的 API 恢复所需状态,并处理执行异常。
例子与易错点
查询价格要等待下游响应,提供者可在 Future 完成后写回。每个请求都新建线程会在流量上来时把资源耗尽,应控制后台并发。
延伸阅读 Dubbo 调用一定会阻塞线程吗? · Dubbo 的 I/O 线程和业务线程怎么分工? · Dubbo 3 消费者怎样异步调用?
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。