Netty 系列 三 Reactor模型和Netty模型
传统的IO模型
Reactor模型 有三种 单Reactor单线程 单Reactor多线程 主从Reactor多线程
分别对应下图 单Reactor单线程
单Reactor多线程
主从Reactor多线程
别名 分发者模式 通知者模式 反应器模式
Netty模型就是基于主从Reactor多线程模式又进行了一些改造
Netty 模型
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 可以获取到对应通道, 管道中维护了很多的 处理器