关于Netty的模型

两组线程池

  • BossGroup专门负责接收客户端的连接
  • WorkerGroup专门负责网络的读写

BossGroup和WorkerGroup类型都是NioEventLoopGroup,NioEventLoopGroup相当于一个事件循环组,这个组中含有多个事件循环,每一个事件循环是NioEventLoop

NioEventLoop表示一个不断循环的执行处理任务的线程,每个NioEventLoop都有一个selector,用于监听绑定在其上的socket的网络通讯

NioEventLoopGroup可以有多个线程,即可以含有多个NioEventLoop。

每个BossGroup循环执行的步骤如下

  • 轮询accept事件
  • 处理accept事件,与client建立连接,生成NioSocketChannel,并将其注册到某个WorkerGroup上的selector上
  • 处理任务队列的任务,即runAllTasks

每个WorkerGroup循环执的步骤如下

  • 轮询read/write事件
  • 处理I/O事件,即read、write事件
  • 处理任务队列中的任务,即runAllTasks

Netty的组件及其之间的关系

  • NioEventLoopGroup下包含多个NioEventLoop
  • 每个NioEventLoop中包含有一个selector,一个taskQueue/scheduledTaskQueue
  • 每个NioEventLoop的selector上可以注册多个NioChannel
  • 每个NioChannel只会绑定在唯一的NioEventLoop上
  • 每个NioChannel都绑定有一个自己的ChannelPipeline
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容