Netty模型简单说明

由于netty模型图比较复杂,所以由简到深
工作原理示意图(简单版)

流程图:
在这里插入图片描述
Netty主要基于主从Reactor多线程模型做了一定的改进,其中主从Reactor多线程模型有多个Reactor
其流程为:
1.BossGroup线程维护Selector,只关注Accecpt
2.当接受到Accecpt事件,获取到对应的SocketChannel,封装成NIOSocketChannel并注册Worker线程(事件循环),并进行维护
3.当Worker线程监听到selector中通道发生自己感兴趣的事件后,就进行处理,由handler完成,注意handler已经加入到通道

工作原理示意图(进阶版)

流程图:
在这里插入图片描述
由图可见:
跟Reactor主从模式差不多,但是主线程有多个,是个线程池,从Reactor也是个线程池,流程都是循环监听

工作原理示意图(详细版)

流程图:
在这里插入图片描述
由流程图可以看出:
1.Netty抽象出两组线程池BossGroup专门负责接收客户端的连接,WorkerGroup专门负责网络的读写
2.BossGroup和,WorkerGroup 对应的类型都是NioEventLoopGroup
3.NioEventLoopGroup相当于一个事件循环组,这个组中含有多个事件循环,每一个事件循环是NioEventLoop
4.NioEventLoop表示一个不断循环的执行处理任务的线程,每个NioEventLoop都有一个selector,用于监听绑定在其上的socket的网络通讯
5.NioEventLoopGroup可以有多个线程,即可以含有多个NioEventLoop
6.每个Boss NioEventLoop循环执行的步骤有三步:

   1.轮询accept事件
   2.处理accept事件,与client建立连接,生成一个NioSocketChannle,并将其注册到某个worker NioEventLoop上的selector   
   3.处理任务队列的任务,即runAllTasks

7.每个worker的NioEventLoop 循环执行的步骤:

	1.轮询read write事件
    2.处理IO事件,即read ,write,在对应的NioSocketChannel处理
    3.处理任务队列的任务,即runAllTasks

8.每个worker的NioEventLoop处理业务时,会使用pipeline(管道),pipeline中包含了channel,即通过pipeline可以获取到对应通道,管道中维护了很多的处理器

学习年限不足,知识过浅,说的不对请见谅。

世界上有10种人,一种是懂二进制的,一种是不懂二进制的。

发布了71 篇原创文章 · 获赞 54 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/weixin_43326401/article/details/104215816