主线程:用于客户端的连接请求操作,一旦连接建立成功,将会监听IO事件,监听到事件后会创建一个链路请求 链路请求将会注册到负责IO操作的IO工作线程上,由IO工作线程负责后续的IO操作 Reactor线程模型解决了在高并发的情况下,由于单个NIO线程无法监听海量客户端和满足大量IO操作造成的问题4.串行设计
- 服务端在接收消息之后,存在着编码、解码、读取和发送等链路操作
- 如果这些操作基于并行实现,无疑会导致严重的锁竞争,进而导致系统的性能下降
- 为了提升性能,Netty采用串行无锁化完成链路操作,提供了Pipeline,实现链路的各个操作在运行期间不会切换线程
5.零拷贝
- 数据从内存发到网络中,存在两次拷贝,先是从用户空间拷贝到内核空间,再从内核空间拷贝到网络IO
- NIO提供的ByteBuffer可以使用Direct Buffer模式
- 直接开辟一个非堆物理内存,不需要进行字节缓冲区的二次拷贝,可以直接将数据写入到内核空间
6.优化TCP参数配置,提高网络吞吐量,Netty可以基于ChannelOption来设置
- TCP_NODELAY:用于控制是否开启Nagle算法
- Nagle算法通过缓存的方式将小的数据包组成一个大的数据包,从而避免大量发送小的数据包,导致网络阻塞
- 在对时延敏感的应用场景,可以选择关闭该算法
- SO_RCVBUF / SO_SNDBUF:Socket接收缓冲区和发送缓冲区的大小
- SO_BACKLOG:指定客户端连接请求缓冲队列的大小
- 服务端处理客户端连接请求是按顺序处理的,
推荐阅读
-
-
-
江州司马|司令员是开国中将,活了近百岁,野战军番号最大的一个纵队
-
就要买买买 网友iPhone7估价410,回收验机变成2块钱,二手回收平台太坑
-
-
-
央视新闻客户端|北京疫情防控形势持续向好 仅剩3个中风险地区
-
东京|王府井发布公告:股东京国瑞基金拟减持不超过2%股份
-
辽宋夏金|大夫、郎中都是古代官名,为何今用来称呼医生?原来与宋朝有关
-
包子妈妈育儿@做不好这3件事,再补钙也没用,儿科医生:宝宝长个有讲究
-
女孩|一年一度喜剧大赛2: 冠军相也“翻车”,《饭局往事》冒犯饭圈女孩
-
-
车市快评|盲订的MG5,敢不敢“赌”一把?,“炸裂”的MG领航
-
老母鸡|天冷了,这3道菜再贵也要吃,第4个菜再便宜也要吃,补气养胃佳品
-
迪丽热巴|热巴在跑男这么能吃,为何在其他节目一口不吃,其原因扎心了
-
汉中|汉中西部大暴雨,启动全市IV级防汛应急响应!
-
-
春生育儿|而是康熙具备了继位的最大资本,康熙为何能继位?不是他能耐多大
-
明鑫养生|有利身体健康,产妇能吃什么水果?专家推荐产妇多吃9种水果
-
生科医学|心脏竟是只有一个面的莫比乌斯环?还有更意外的