Dubbo 的 I/O 线程和业务线程怎么分工?
查看完整题解
参考回答
直接回答
以经典 dubbo 协议为例,I/O 线程负责连接和收发事件,Dispatcher 决定收到事件后是否转交业务线程池。普通耗时业务宜交给业务线程处理。
讲清原理
all 会把较多入站事件投到 Dubbo 线程池。direct 让事件直接在 I/O 线程处理。execution、message、connection 各有自己的分发边界。Triple 的实现有差异,不能把这个表原样套过去。
例子与易错点
在 I/O 线程里执行一个卡住的数据库查询,同一线程负责的其他连接也要等待。选分发策略时要看业务是否阻塞,以及线程池是否出现排队和拒绝。
延伸阅读 Dubbo 调用超时,应该先排查什么? · Dubbo 调用一定会阻塞线程吗? · Dubbo 业务线程池有哪些策略,怎么选? · Dubbo 3 如何使用 Netty 4?
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。