主线程:用于客户端的连接请求操作,一旦连接建立成功,将会监听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:指定客户端连接请求缓冲队列的大小
- 服务端处理客户端连接请求是按顺序处理的,
推荐阅读
-
代价|英国决定停止在5G建设中使用华为 承认将为此付出20亿英镑经济代价
-
新氧App|浪姐最大遗珠!54岁还有马甲线蜜蜂腰的女明星,张雨绮见了都叫姐……
-
萌萌小潼|宾汉姆且追且赶,2020斯诺克世锦赛8强赛:马克威廉姆斯准星依旧
-
王者荣耀上王者▲属于大型生存游戏的“回光返照”,游戏太火也成了麻烦
-
老年人健康|老人身上的味道不好闻?罪魁祸首可能是经常做这3件事,别不重视
-
-
-
-
-
钱江晚报|直播杭州|甜蜜蜜,“今天起,工资卡就交给你了”,婚姻登记处,男生这句话好实在
-
动漫汪星人|吃了一口蓉姐姐的玻璃渣,秦时明月田言突然放“刀片”
-
-
华为|沉浸式体验!全新华为FreeBuds 4无线耳机登场:奥运观赛最佳伴侣
-
购房|快评丨房管干部勾结中介造假购房资格,这样“硬过”就是“胡来”
-
-
华为|腾讯正式宣布,苹果“喜从天降”!iPhone12有救了!
-
海棠口宋式茶几,简谈中式古典园林建筑在古典家具中的应用
-
22省份一季度GDP:湖北增速第一,7省跑赢全国 22省份一季度GDP:7省跑赢全国
-
-
央视新闻|世卫组织:新冠疫情仍构成“国际关注的突发公共卫生事件”