主线程:用于客户端的连接请求操作,一旦连接建立成功,将会监听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|爱了,《快乐大本营》主持人吴昕在《乘风破浪的姐姐》中大放光彩
-
浣熊|老挝人将迎首条高速路,160万辆摩托车却被挡在闸外,网友炸锅了
-
人工智能|科学家培育出新型人类大脑:学习速度甩出人工智能几条街
-
赵云|刘备为何认为赵云这个人不可以委以重任?道理很简单
-
我国成年人超3成患有牙本质敏感 专家教你6招防治措施
-
-
聚富财经|13.5亿人受益,医保又有重要通知,关系到每一个参保人,
-
大河报|河南男子十一堵在高速拍361张照举报,警方:36辆车违法
-
天然堂|中年逆袭典范闫妮,亲身经历表明:中年女性变美就靠这三点!
-
-
蓝猪坊|想吃面包又怕胖?低脂面包了解一下,吃起来妥妥没负担
-
-
吴彦祖|4位中年男明星素颜照:吴彦祖被嘲“油腻大叔”,胡歌最令人意外
-
-
[王源]王源山区钓鱼,却不露正脸,粉丝感叹美爆了!
-
学搭配爱时尚|洗面奶哪个牌子好用 推荐口碑超高的十款洗面奶
-
-