主线程:用于客户端的连接请求操作,一旦连接建立成功,将会监听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:指定客户端连接请求缓冲队列的大小
- 服务端处理客户端连接请求是按顺序处理的,
推荐阅读
-
烹饪|姥姥那一辈的馒头吃法,还记得吗?这么做,满满的回忆
-
-
酸奶|酸甜解腻!看剧宅家的好伴侣!今日福利|夏日的清甜记忆!一口四种享受
-
巨蟹座流星雨时间?天文现象 巨蟹座流星雨象征寓意?
-
周到|推动孵化体建设,临港新片区要这样发挥试验田作用
-
生活向前吧|心梗离世,妻子痛哭:是婆婆“害”了他!,29岁男子洞房之夜
-
中医朱医师|什么时候吃苹果最好?饭前还是饭后?不妨了解一下
-
-
『36氪』打造低代码工业应用开发平台,“摩尔元数”获数千万元A2轮融资
-
抢险|鄱阳县中洲圩遭遇超标准洪水 8000余名群众安全转移
-
-
-
-
-
快讯|硬糖王艺瑾,火箭杨超越,呼声高的女团门面:THE9孔雪儿
-
钛媒体APP中芯国际无法供货华为?官方辟谣:网传交流纪要纯属捏造丨钛快讯
-
被告人|隐瞒接触史致117户居民和17名医护人员被隔离,山西两被告获刑
-
关节|谈骨论筋|女大学生膝盖上一根韧带,竟然消失了
-
-
步步惊心|《步步惊心》12年,阿哥们变化不大,福晋退圈了4位,有的大变脸