简单版

Netty主要基于主从Reactors多线程模型做了一定的改进,其中主从Reactor多线程模型有多个Reactor
image.png
1.BossGroup线程维护Selector,只关注Accept
2.当接收到Acept事件,获取到对应的SocketChannel,封装成NIOSocketChannel并注册到Worker线程(事件循环),并进行维护
3.当Worker线程监听到selector中通道发生自己感兴趣的事件后,就进行处理(由handler),handler已经提前加入到了通道


Netty主要是基于Reactors多线程模型,做了一定的改进,其中主从Reactor多线程模型有多个


详细版

image.png
image.png

说明

1.Netty抽象出了两组线程池BossGroup专门负责接收客户端连接,WorkerGroup专门负责网络的读写
2.BossGroup和WorkerGroup类型都是NioEventLoopGroup
3.NioEventLoopGroup相当于一个事件循环组,这个组中含有多个事件循环,每个事件循环是NioEventLoop
4.NioEventLoop表示一个不断循环的执行处理任务的线程,每个NioEventLoop都有一个Seletor,用于监听绑定在其上的socket网络通讯
5.NioEventLoopGroup可以有多个线程,即可以含有多个NioEventLoop
6.每个Boss NioEventLoop循环执行的步骤有三步
1.轮询accept事件
2.处理accept事件,与client建立连接,生成NioSocketChannel,并将其注册到某个worker NIOEventLoop上的Selector
3.处理任务队列的任务,即runAllTasks
7.每个Worker NIOEventLoop循环执行的步骤
1.轮询 read、write事件
2.处理IO事件,即read ,write事件,在对应NIOSocketChannel处理
3.处理任务队列的任务,runAllTasks
8.每个Worker NIOEventLoop 处理业务时,会使用pipeline(管道),piepeline中包含了channel,即通过piepeline可以获取到对应的通道,piepeline中还维护了很多处理器