08-Netty 高性能架构设计-Netty模型介绍

Netty模型

工作原理示意图 1-简单版

Netty主要是基于主从Reactors多线程模型(如图)做了一定的改进, 其中主从Reactor 多线程模型有多个Reactor

对上图的说明

  1. BossGroup线程维护Selector,只关注Accecpt
  2. 当接收到Accept事件,获取到对应的SocketChannel,封装成NIOScoketChannel并注册到Worker线程(事件循环),并进行维护
  1. 当Worker线程监听到selector中通道发生自己感兴趣的事件后,就进行处理(就由handler),注意handler经加入到通道

工作原理示意图 2-进阶版

工作原理示意图3-详细版

对上图的说明小结

  1. Netty抽象出两组线程池Boss Group 专门负责接收客户端的连接, WorkerGroup 专门负责网路的读写
  2. Boss Group 和 WorkerGroup 类型都是NIOEventLoopGroup
  1. NioEventLoopGroup相当于一个事件循环组, 这个组中含有多个事件循环, 每一个事件循环是NioEventLoop
  2. NioEventLoop表示一个不断循环的执行处理任务的线程, 每个NioEventLoop都有一个Selector, 用于监听绑定在其上的Socket的网络通讯
  1. NioEventLoopGroup 可以有多个线程, 即可以含有多个NIOEventLoop
  2. 每个Boss NioEventLoop 循环执行的步骤有3步
    1. 轮训accept事件
    2. 处理accept事件, 与client建立连接, 生成NioSocketChannel, 并将其注册到某个worker NioEventLoop上的selector
    1. 处理任务队列任务,即runAllTask
  1. 每个Worker NIOEventLoop循环执行的步骤
    1. 轮训read, write事件
    2. 处理IO事件, 即read, write事件, 在NIOSocketChannel处理
    1. 处理任务队列的任务, 即runAllTask
  1. 每个Worker NioEventLoop 处理业务时, 会使用pipeline(管道), pipeline中包含了channel, 即通过pipeline可以获取到对应的通道,通道中维护了很多的处理器
posted @   彼岸舞  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2021-01-21 SpringBoot之SpringBoot整合多环境不同配置文件
2021-01-21 SpringBoot之SpringBoot整合lombok
2021-01-21 SpringBoot之SpringBoot整合devtools热部署
2021-01-21 SpringBoot之SpringBoot整合Mybatis
2021-01-21 SpringBoot之SpringBoot整合JdbcTemplate
2021-01-21 SpringBoot之SpringBoot整合Thymeleaf模板引擎
2021-01-21 SpringBoot之SpringBoot整合Freemarker模板引擎
点击右上角即可分享
微信分享提示