Netty-线程模型
本文最后更新于:2 年前
⼤部分⽹络框架都是基于 Reactor 模式设计开发的。
Reactor 模式基于事件驱动,采⽤多路复⽤将事件分发给相应的 Handler 处理,⾮常适合处理海量 IO 的场景。
在 Netty 主要靠 NioEventLoopGroup 线程池来实现具体的线程模型的 。
我们实现服务端的时候,⼀般会初始化两个线程组:
- bossGroup :接收连接。
- workerGroup :负责具体的处理,交由对应的 Handler 处理。
拥有一个 Acceptor 专门用来监听请求的 I/O 类型
使用专门线程池可以提高 acceptor 的并发量,并且可以将同一个 SocketChannel 放于同一个 I/O 线程处理,同一个 I/O 线程可以处理多个 SocketChannel 的 READ/WRITE 事件
线程模型:
⼀个 Acceptor 线程只负责监听客户端的连接,⼀个 NIO 线程池负责具体处理:
从⼀个 主线程 NIO 线程池中选择⼀个线程作为 Acceptor 线程,绑定监听端⼝,接收客户端连接
的连接,其他线程负责后续的接⼊认证等⼯作。连接建⽴完成后,Sub NIO 线程池负责具体处理
I/O 读写。