netty模型简介
Netty工作原理图
netty抽象出了两组线程池,BossGroup专门负责客户端 的连接,WorkerGroup专门负责网络读写。
BossGroup和WorkerGroup 类型都是NioEventLoopGroup
NioEventLoopGroup相当于一个事件循环组,这个组中含有多个事件循环,每一个事件循环是一个NioEventLoop
NioEventLoop表示一个不断循环的执行处理任务的线程,每个NioEventLoop都有一个selector,用于监听绑定在其上socket网络通信
NioEventLoopGroup可以有多个线程,即可以含有多个NioEventLoop
每个Boss对应的NioEvenetLoop都会执行以下三步:
轮询accept事件,
处理accept事件,与client建立socket连接,生成NioSocketChannel,并将生成的NioSocketChannel注册到某个worker NioEventLoop上的selector上。
处理任务队列中的任务,即runAllTasks
每个worker NioEventLoop循环执行步骤:
轮询read/write事件
处理io事件,即read ,write事件,,在对应的NioSocketChannel处理
处理任务队列中的其它任务
每个worker NioEventLoop会使用PipeLine管道处理,PipeLine中包含了Channel,即通过PipeLine可以获取对应的Channel, 管道中维护了很多的处理器Handler
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/41918.html