Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

Dubbo 3 服务端怎样异步执行?

先说出你的答案

定义边界、关键机制、一个反例;P8题再补容量、失败与验证。

查看完整题解

参考回答

直接回答

提供者可以返回 CompletableFuture,也可以用 RpcContext.startAsync() 的异步上下文稍后写回结果。选择后一种时,原接口签名可以保留同步返回类型。

讲清原理

将任务交给设有上限的线程池,或使用异步 I/O,原来的处理线程就可以接下一次请求。结果准备好后才由框架发出。需要跨线程使用调用上下文时,应按 AsyncContext 的 API 恢复所需状态,并处理执行异常。

调用端取 Future 与提供端异步执行各自独立
调用端取 Future 与提供端异步执行各自独立

例子与易错点

查询价格要等待下游响应,提供者可在 Future 完成后写回。每个请求都新建线程会在流量上来时把资源耗尽,应控制后台并发。

延伸阅读 Dubbo 调用一定会阻塞线程吗? · Dubbo 的 I/O 线程和业务线程怎么分工? · Dubbo 3 消费者怎样异步调用?

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。