Netty 在 Java 标准 NIO 类库的基础上,通过一系列架构和实现层面的优化,显著提升了网络通信的性能和易用性。
1. Netty的核心优化手段
1. Reactor模式改进
采用高效的EventLoop
和EventLoopGroup
管理Channel
,减少线程切换开销,支持主从Reactor模式(如bossGroup
处理连接,workerGroup
处理I/O)。
- Java NIO:
- 开发者需手动管理
Selector
、Channel
和线程池,通常采用单 Reactor 单线程或简单的主从多线程模型。 - 若线程分配不合理(如一个线程处理多个 Channel),可能导致阻塞或负载不均。
- 开发者需手动管理
- Netty:
- 主从多 Reactor 模型:
- BossGroup:主
Reactor
,负责处理连接建立(accept
)。 - WorkerGroup:从
Reactor
,负责处理已建立连接的 I/O 读写。 - 默认线程数:
- BossGroup:主
- 主从多 Reactor 模型: