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

Dubbo 的 I/O 线程和业务线程怎么分工?

先说出你的答案

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

查看完整题解

参考回答

直接回答

以经典 dubbo 协议为例,I/O 线程负责连接和收发事件,Dispatcher 决定收到事件后是否转交业务线程池。普通耗时业务宜交给业务线程处理。

讲清原理

all 会把较多入站事件投到 Dubbo 线程池。direct 让事件直接在 I/O 线程处理。execution、message、connection 各有自己的分发边界。Triple 的实现有差异,不能把这个表原样套过去。

I/O 线程接包,业务线程执行方法
I/O 线程接包,业务线程执行方法

例子与易错点

在 I/O 线程里执行一个卡住的数据库查询,同一线程负责的其他连接也要等待。选分发策略时要看业务是否阻塞,以及线程池是否出现排队和拒绝。

延伸阅读 Dubbo 调用超时,应该先排查什么? · Dubbo 调用一定会阻塞线程吗? · Dubbo 业务线程池有哪些策略,怎么选? · Dubbo 3 如何使用 Netty 4?

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

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