Netty底层的实现原理和模型结构

news/2024/12/28 20:19:59/
Netty框架实际上就是实现了多Reactor多线程模式mainReactor ———— bossGroup(NioEventLoopGroup) 中的某个NioEventLoopsubReactor ———— workerGroup(NioEventLoopGroup) 中的某个NioEventLoopacceptor ———— ServerBootstrapAcceptorThreadPool ———— 用户自定义线程池

netty的整个工作流程 

(1)、服务器端有两个线程池,(事件循环组),bossGroup负责监听客户端连接,wokerGroup负责监听网络读写。(2)、每个线程池组里面都含有多个NioEventLoop(事件循环线程),就是一个死循环,不停的监听。(3)、每个NioEventLoop(事件循环线程)中有两个对象,一个是selector,负责监听绑定在其上的socket的IO事件,一个是taskQueue,负责来存放没来得及处理的IO事件。(4)、bossGroup里面的NioEventLoop监听到了客户端连接事件,做以下三个操作:<1>、轮询accpet事件(客户端连接事件)。<2>、监听到了连接请求,就通过accpet(),生成一个nioSocketChannel(连接通道),将其注册到workGroup里面的某个NioEventLoop的selector<3>、继续处理任务队列。(5)、workGroup里面的NioEventLoop监听到了连接事件,做以下三个操作:<1>、轮询每个NioEventLoop中的selector是否有read、write事件发生<2>、监听到了事件就执行,利用selector上绑定的niosocketchannel对应的pipeline中的channelhandler进行处理。<3>、继续处理任务队列。(6)、一个niosocketchannel会对应一个pipeline,pipeline(管道)里面有多个channelhandler(处理器),也就是通过一系列channel(通道)里绑定的handler进行IO处理。


http://www.ppmy.cn/news/484300.html

相关文章

论文阅读笔记2:NetVLAD

题目&#xff1a;NetVLAD: CNN Architecture for Weakly Supervised Place Recognition&#xff1a;、 团队&#xff1a;PSL Research University/Tokyo Institute of Technology 解决的问题&#xff1a;我们解决了大规模视觉位置识别的问题&#xff0c;其任务是快速准确地识…

CMIP6降尺度方法

气候变化关系到农业、生态系统、社会经济和人类生存与发展&#xff0c;是当今世界关注的重点问题之一。IPCC&#xff08;Intergovernmental Panel on Climate Change&#xff09;第6次评估报告指出&#xff0c;自 20 世纪 50 年代以来&#xff0c;从全球平均气温和海温升高、大…

会声会影2020秘钥视频编辑制作使用教程

现在自媒体人&#xff0c;图片编辑和视频剪辑是必学的一门功课。随着国内互联网行业的迅猛发展&#xff0c;各种视频播放、剪辑、格式转换软件雨后春笋般层出不穷。尤其是近几年&#xff0c;手机上的app都已经实现了这些功能&#xff0c;随时随地使用&#xff0c;实在方便。 这…

剪映VS会声会影哪个好用,视频剪辑软件剪映会声会影之间对比之

随着网络视频的发展&#xff0c;越来越多的人开始学习视频剪辑&#xff0c;毕竟技多不压身&#xff0c;而在众多剪辑软件中&#xff0c;剪映和会声会影是很适合新手使用的软件&#xff0c;那剪映与会声会影的区别有哪些&#xff1f;剪映会声会影哪个好用&#xff1f;下面就仔细…

proDAD Adobe pr cc2020 会声会影视频转场特效制作软件,滤镜特效插件

proDAD VitaScene是proDAD公司开发的一款视频转场特效滤镜软件和插件&#xff0c;提供专业广播质量的高端转场和视频滤镜效果的合集&#xff0c;也可以单独进行配置和微调。 proDAD VitaScene V4 PRO具有1400多种专业过渡效果和视频滤镜&#xff0c;可能提供最全面&#xff0…

【MySQL】数据库基础 ②

✍LIKE 子句 说明&#xff1a; 使用 SELECT 来查询数据&#xff0c; 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。 WHERE 子句中可以使用等号 来设定获取数据的条件&#xff0c;如 "字段(text_title) 值()"。 但是有时候我们需要获取 text_…

B站618“杀”疯了?UP主直播带货GMV连年破亿!

众多主流平台已经早早构建出较为完整的直播带货体系&#xff0c;而B站则是从去年双十一才宣布正式加入全平台直播带货&#xff0c;同时上线购物直播专区&#xff0c;到今年618年中购物大促&#xff0c;B站已经在大步向前摸索属于本平台的直播带货阵营。 一直以来B站带着二次元…

C# 学习笔记【知识点完整】

C# 学习笔记【完整记录】 // 单行注释以 // 开始 /* 多行注释是这样的 */ /// <summary> /// XML文档注释 /// </summary>// 声明应用用到的命名空间 using System; using System.Collections.Generic; using System.Data.Entity; using System.Dynamic; using Sys…