主线程:用于客户端的连接请求操作,一旦连接建立成功,将会监听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:指定客户端连接请求缓冲队列的大小
- 服务端处理客户端连接请求是按顺序处理的,
推荐阅读
-
-
-
北京日报|北海公园租游船方式上新了!不用排队,扫码自助“荡起双桨”
-
-
-
【大国策】两辆装甲车被炸毁,损失惨重!土耳其军队又在叙利亚遭伏击
-
百家慧|而是这三点,很多人都不知道,富翁说:发财不靠勤奋
-
-
游戏小糖妹|王者荣耀中路篇:刺客型法师沦为T2,干将莫邪重回T0法王!
-
恒大地产|下跌已近尾声,从消息面看,这些标的将成为市场热点
-
巫师|玩家手绘《巫师3》怪物插图 完整内容或要花10年
-
#老王开说#你觉得哪个戒指最讨你欢心, 测你天生注定要过哪种生活,心理测试:
-
生猪价格|2020.9.8猪价:市场压价明显,多地开始压栏!!!
-
TEC上海 | 盛夏烈日,720°VR全景助您优选各式办公空间
-
关键|《崩坏3》那些口口声声自己什么也做不了的,都成了关键存在
-
#Guiltynine#星耀说是李信·,王者荣耀最让人恶心的战士是谁?钻石说是程咬金
-
-
黄茶的保健功能五大功效养生保健,霍山黄芽保健功效介绍
-
汽行者|自主新能源车企小心被温水煮青蛙,特斯拉“绵里藏针”
-