主线程:用于客户端的连接请求操作,一旦连接建立成功,将会监听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:指定客户端连接请求缓冲队列的大小
- 服务端处理客户端连接请求是按顺序处理的,
推荐阅读
-
饵料|野钓调漂时到底是钓灵还是钓钝?照我说的调,你能钓得盆满钵满
-
梦见衣服被水冲走后又捞起来 梦见衣服被水冲走又捞回来周公解梦
-
罗志祥分手风波后首露面|围观吃瓜】罗志祥分手风波后首露面是怎么回事?什么情况?终于真相了
-
-
「新华网」2020年墨西哥华侨华人春节联欢晚会举行
-
『橘子皮』吃橘子扔了皮,这可太浪费了,几个小妙招谁用了都说好
-
MIUI|MIUI12与EMUI10.1尴尬了,流畅度都不如它
-
教育资源短板 弥补教育资源短板 北京新学道晋中书院新校区计划年底竣工
-
-
-
#通城快讯#就业暖民心 南通推出系列惠残政策,春风送真情
-
央广网|四川发布地质灾害气象风险3级黄色预警 影响10个县(市)
-
科技日日说 11降价900元,重新沦为“市场宠物”,有3个原因!,iPhone
-
#琳琳说历史#关羽被灭族,张飞家族安然无恙,到底有何区别?,蜀汉灭亡
-
-
-
兴人|俗语:“家有四样,家兴人旺”,哪四样?早懂少吃亏!
-
野鸡大学|光明时评:“虚假大学”难绝迹,还有解吗?
-
-