Netty 的 Reactor 线程模型?
发布于
一、Reactor 模式
基于事件驱动,I/O 多路复用监听多个连接,事件就绪后分发给处理器。
二、Netty 三种模型
- 单线程 Reactor:一个线程处理所有连接的 accept 和 I/O,简单但不适合高并发。
- 多线程 Reactor:一个 Acceptor 线程接收连接,I/O 由线程池处理。
- 主从 Reactor(Netty 默认):BossGroup 接收连接,WorkerGroup 处理 I/O。
三、Netty 默认模型
EventLoopGroup boss = new NioEventLoopGroup(1);
EventLoopGroup worker = new NioEventLoopGroup();
ServerBootstrap b = new ServerBootstrap();
b.group(boss, worker);
- BossGroup 通常 1 个线程,负责 accept。
- WorkerGroup 默认 CPU 核数 × 2 线程,负责 I/O。
- 每个 Channel 绑定一个 EventLoop,全程单线程,无锁。
四、优势
- 事件驱动,高吞吐。
- Channel 绑定固定 EventLoop,避免锁竞争。
- Pipeline 模式灵活扩展。