主线程:用于客户端的连接请求操作,一旦连接建立成功,将会监听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:指定客户端连接请求缓冲队列的大小
- 服务端处理客户端连接请求是按顺序处理的,
推荐阅读
-
楚天都市报|十年走出10家上市公司,5家独角兽,453家光谷瞪羚企业去年总收入高达208亿元
-
-
英特尔微星推出搭载第十代英特尔处理器的台式机和显示器新产品
-
-
-
属狗|11月起,鲤鱼跃龙门,好运相随,诸事顺心,让人羡慕的3个星座
-
大众|70年前的大众面包车“T1”复活!大众ID.Buzz国内首发:酷似小巴车
-
-
【懒人生活】穿出洒脱个性,街拍:打底裤小姐姐彰显柔美气息
-
错过|粉蒸肉简单美味又经典,这季节最好吃的配菜可不要错过了
-
湖北明年将通车一条350时速高铁, 全长399公里, 为最美高铁线路
-
-
-
新冠疫苗|超三分一美国人称即使免费也不接种新冠疫苗,非白人群体尤其抗拒
-
宇思轩|美女一袭纯白色的裙装,清新减龄又大方,路人街拍
-
小米MIUI系统目前最发烧的4大功能更新、适配情况汇总
-
-
儿童护理阿曼|孕妈身体有这3种感觉,或许是胎宝饿了发出的“抗议”,怀孕期间
-
小小白说历史 却因年少轻狂,英年早逝,他明明是秦国君主
-