主线程:用于客户端的连接请求操作,一旦连接建立成功,将会监听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:指定客户端连接请求缓冲队列的大小
- 服务端处理客户端连接请求是按顺序处理的,
推荐阅读
-
-
-
科技説説説|从高端市场跌到中端市场,网友:终于等到了!,从5488降至3428
-
-
第一次提问:我住在大学6人宿舍,我把自己的小地方好好按照我的方式收拾了一次,舍友有些不认可,咋办
-
娱乐圈快看|小露香肩秀完美侧颜,五官精致宛如芭比娃娃,Baby拍时尚大片
-
人到中年越没钱,越不要深交这三种小人,小人只会背叛你,利用你
-
「」上网课,学生的家境被“一览无余”,网友:没有对比就没有伤害
-
地球|印度将成人口第一大国 红利还是陷阱?近17亿人口 风险和压力激增
-
「」为啥强悍如老鹰都不敢碰喜鹊?老鹰:不是不想碰,躲都来不及
-
-
【移动支付】马云也没料到!支付宝不知不觉中,摧毁了一个存在千年之久的行业
-
股票|江南化工:拟发行股份购买北方特种能源集团所持的民用爆破业务子公司股权
-
-
国际狗仔■地铁内人员大量聚集,俄罗斯电子通行证审查首日状况:交通拥堵
-
第一财经|一文读懂公募REITs业务配套文件说了什么
-
中国|无道失德 千夫所指——看清美“三无”政客真面目系列评论之三
-
游侠网|预计9月17日发货,魔兽桌游《小小魔兽世界》开启预购
-
二狗聊科技▲江淮玩起能量转化物尽其用,汽车尾气=电能?
-