Netty线程模型

学习B站的视频的笔记
Netty线程模型是基于主从Reactor多线程模式做了一定的改进得来的

在这里插入图片描述
●Netty抽象出两组线程池,BossGroup专门负责接收客户端的连接,WorkerGroup专门负责网络的读写

●BossGroup和WorkerGroup类型的本质都是NioEventLoopGroup类型。

●NioEventLoopGroup相当于一个线程管理器(类似于ExecutorServevice),它下面维护很多个NioEventLoop线程。

●在初始化这两个Group线程组时,默认会在每个Group中生成CPU*2个NioEventLoop线程
当n个连接来了,Group默认会按照连接请求的顺序分别将这些连接分给各个NioEventLoop去处理。
同时Group还负责管理EventLoop的生命周期。

●NioEventLoop表示一个不断循环的执行处理任务的线程
它维护了一个线程和任务队列。
每个NioEventLoop都包含一个Selector,用于监听绑定在它上面的socket通讯。
每个NioEventLoop相当于Selector,负责处理多个Channel上的事件
每增加一个请求连接,NioEventLoopGroup就将这个请求依次分发给它下面的NioEventLoop处理。

●每个Boss NioEventLoop循环执行的步骤有3步:
轮询accept事件
处理accept事件,与client建立连接,生成NioSocketChannel,并将其注册到某个Worker NioEventLoop的selector上。
处理任务队列到任务,即runAllTasks

●每个Worker NioEventLoop循环执行的步骤:
轮询read,write事件
处理I/O事件,即read,write事件,在对应的NioSocketChannel中进行处理
处理任务队列的任务,即runAllTasks

●每个 Worker NioEventLoop处理业务时,会使用pipeline(管道),pipeline中维护了一个ChannelHandlerContext链表,而ChannelHandlerContext则保存了Channel相关的所有上下文信息,同时关联一个ChannelHandler对象。如图所示,Channel和pipeline一一对应,ChannelHandler和ChannelHandlerContext一一对应。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值