1. Netty 的主从 Reactor 线程模型,Boss/Worker EventLoopGroup 的分工与一个 Channel 绑定单一 EventLoop 的意义如何?
Netty 的主从 Reactor 线程模型中,Boss/Worker EventLoopGroup 的分工是什么?一个 Channel 绑定单一 EventLoop 的意义是什么?
- 主从 Reactor 模型
- Boss/Worker 分工
- Channel 绑定单一 EventLoop
Netty 采用主从 Reactor 模型:Boss EventLoopGroup 负责监听端口、接受连接(accept),把新连接注册到 Worker EventLoopGroup;Worker EventLoopGroup 负责处理已连接 Channel 的读写事件与业务调度。一个 Channel 在其生命周期内绑定到单一的 EventLoop(一个线程),该 Channel 的所有 IO 事件和 handler 都在这个 EventLoop 上串行执行,天然避免并发竞争、无需加锁。意义:单一 EventLoop 保证 Channel 的事件处理线程安全(无锁串行),简化 handler 编写;EventLoop 复用连接(一个线程处理多个 Channel),减少线程数。Boss 只管 accept,Worker 管读写,职责分离。
主从 Reactor 把"接受连接"与"处理读写"分离到不同线程组。Channel 绑定单一 EventLoop 获得"无锁串行"的线程安全,细节是 Netty 高性能与简洁的关键。