主线程:用于客户端的连接请求操作,一旦连接建立成功,将会监听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:指定客户端连接请求缓冲队列的大小
- 服务端处理客户端连接请求是按顺序处理的,
推荐阅读
-
赵旭日|大连平恒大赢鲁能不是蒙的!赵旭日全场硬撑,贝尼特斯却不敢调整
-
汽车棒棒堂TB|续航加速均提升、安全性更高,比亚迪唐升级刀片电池!将8月上市
-
-
『海报新闻』莘县徐庄镇:以不破楼兰终不还的斗志 坚决打赢脱贫攻坚战
-
新华社|科学家发明一种可以清除污染水中砷元素的系统
-
孙青霞|用心服务美名扬,【锦旗背后的故事】——拾金不昧品德高
-
会火意外暴露办公室很破旧,还在央视主持?劳春燕为《东方时空》庆生
-
酷玩电竞君:原因引起网友热议,都要怪IG太猛?,LPL官方决定调整比赛时间
-
-
工人|声动梁尘,与众不同|《杀马特我爱你》《黄河尕谣》双片放映
-
-
-
神鸟知讯资讯站|母亲状告旅馆老板和农药商贩:要为女儿讨个公道,女儿喝农药去世
-
-
有三种植物最适合室内展示 有三种植物最适合室内展示的是什么
-
屈臣氏|美容界评选被低估的10款护肤品 价格低效果好 用过的都说好
-
微信|脸书换Logo了!大家最关心的居然它是长得像微信视频号
-
[小米辣]高考在即,考生饮食很重要,不仅要吃好,还得有营养,家长需知道
-
-
辛德蕾拉|67亿美元5G大单!韩国史上最大的电信设备出口合同诞生