08-Netty 高性能架构设计-Netty模型介绍
Netty模型
工作原理示意图 1-简单版
Netty主要是基于主从Reactors多线程模型(如图)做了一定的改进, 其中主从Reactor 多线程模型有多个Reactor
对上图的说明
- BossGroup线程维护Selector,只关注Accecpt
- 当接收到Accept事件,获取到对应的SocketChannel,封装成NIOScoketChannel并注册到Worker线程(事件循环),并进行维护
- 当Worker线程监听到selector中通道发生自己感兴趣的事件后,就进行处理(就由handler),注意handler经加入到通道
工作原理示意图 2-进阶版
工作原理示意图3-详细版
对上图的说明小结
- Netty抽象出两组线程池Boss Group 专门负责接收客户端的连接, WorkerGroup 专门负责网路的读写
- Boss Group 和 WorkerGroup 类型都是NIOEventLoopGroup
- NioEventLoopGroup相当于一个事件循环组, 这个组中含有多个事件循环, 每一个事件循环是NioEventLoop
- NioEventLoop表示一个不断循环的执行处理任务的线程, 每个NioEventLoop都有一个Selector, 用于监听绑定在其上的Socket的网络通讯
- NioEventLoopGroup 可以有多个线程, 即可以含有多个NIOEventLoop
- 每个Boss NioEventLoop 循环执行的步骤有3步
- 轮训accept事件
- 处理accept事件, 与client建立连接, 生成NioSocketChannel, 并将其注册到某个worker NioEventLoop上的selector
- 处理任务队列任务,即runAllTask
- 每个Worker NIOEventLoop循环执行的步骤
- 轮训read, write事件
- 处理IO事件, 即read, write事件, 在NIOSocketChannel处理
- 处理任务队列的任务, 即runAllTask
- 每个Worker NioEventLoop 处理业务时, 会使用pipeline(管道), pipeline中包含了channel, 即通过pipeline可以获取到对应的通道,通道中维护了很多的处理器
分类:
netty高性能网络框架
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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模板引擎