Netty 系列 三 Reactor模型和Netty模型

传统的IO模型

Netty 系列 三 Reactor模型和Netty模型_第1张图片

 

Reactor模型 有三种 单Reactor单线程  单Reactor多线程  主从Reactor多线程 

分别对应下图 单Reactor单线程

Netty 系列 三 Reactor模型和Netty模型_第2张图片

单Reactor多线程 

Netty 系列 三 Reactor模型和Netty模型_第3张图片

主从Reactor多线程 

Netty 系列 三 Reactor模型和Netty模型_第4张图片

 

别名 分发者模式 通知者模式 反应器模式

Netty模型就是基于主从Reactor多线程模式又进行了一些改造

Netty 模型

Netty 系列 三 Reactor模型和Netty模型_第5张图片

1.Netty抽象出了2组线程池,bossGroup专门负责客户端的链接,workGroup 专门负责网络的读写

2.bossGroup workGroup 2个对象的类型都是NioEventLoopGroup 

3.NioEventLoopGroup是一个不断循环执行任务的线程池

4.每个Boss NioEventLoop 循环执行的步骤有3步

1.轮询accept 事件
2.处理accept 事件 , 与client建立连接 , 生成NioScocketChannel , 并将其注册到某个worker NIOEventLoop 上的 selector
3.处理任务队列的任务 , 即 runAllTasks
5 每个 Worker NIOEventLoop 循环执行的步骤

1.轮询read, write 事件
2.处理i/o事件, 即read , write 事件,在对应NioScocketChannel 处理
3.处理任务队列的任务 , 即 runAllTasks
6 每个Worker NIOEventLoop  处理业务时,会使用pipeline(管道), pipeline 中包含了 channel , 即通过pipeline 可以获取到对应通道, 管道中维护了很多的 处理器

 

你可能感兴趣的:(技术人生)