Dubbo ->线程模型以及线程策略
使用NettyServer两级线程池
EventLoopGroup(boss): 接收客户端的链接请求,将TCP三次握手的连接分发给EventLoopGroup(worker),其中boss,worker为IO线程;
若逻辑可迅速完成,则建议直接在IO线程上处理,无需进入线程池调用操作;
否则的话建议转发给业务线程池处理;
线程模型 | 描述 |
---|---|
all | 全部请求转发到业务线程池 |
direct | 全部请求在IO线程上完成 |
execution | 请求响应事件由业务线程处理;响应,连接,断开,心跳事件于IO线程 |
message | 请求响应事件于业务线程池;其他事件IO线程 |
connection | 连接,断开事件以队列方式于IO线程执行;其他转发至业务线程中 |
自定义线程模型
1.
2.
Dubbo线程池策略
策略 | 描述 |
---|---|
FixedThreadPool | 具有固定线程数的线程池 |
LimitedThreadPool | 池中线程个数随着需要动态增加,但不会超过某一阈值;且空闲线程不会被回收 |
EagerThreadPool | 当池中所有线程均处于忙碌状态时,会创建新线程 |
CachedThreadPool | 创建一个自适应线程池,当线程空闲1min即回收该线程,新请求来就又创建新线程 |