主线程:用于客户端的连接请求操作,一旦连接建立成功,将会监听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:指定客户端连接请求缓冲队列的大小
- 服务端处理客户端连接请求是按顺序处理的,
推荐阅读
-
柔慧说情|不必拉黑,这“六个字”更管用,想从心底里放下一个人
-
吉米·巴特勒|8:00视频直播东部决赛:绿军vs热火G3 双探花生死战对巴特勒
-
合肥晚报|合肥一5岁女童坠亡,事发时独自在家,警方排除刑案可能
-
-
桐谷美玲|34岁张继科为亲妈庆生!母子五官好像复制黏贴,多次催婚求儿媳
-
-
良心之作《古穿今:本宫宅斗有绝招》,美好到叫人不忍完结
-
-
『记娱小阿琛』引领进攻型上单潮流的男人,英雄联盟:一半天使一半魔
-
-
[镁客网]京东拟在港股二次上市,最早6月挂牌、集资规模34亿美元
-
『搞笑天崖』让她干什么都行,幽默笑话:昨晚发现屋有个女贼她说只要我放过她
-
#山河在路上#发现女星颜值是肉眼可见的下降,一代不如一代,回顾TVB五代花旦
-
『伊食君』花半小时做一桌,有肉有鸡蛋,比买的丰盛多了,我家早餐不将就
-
娱乐与趣闻|75分钟输掉BO5,IG占这四点输得不亏,但国产打野全军覆没
-
-
-
『健康』农村5种野菜被誉为“妇科良药”,遇到千万别错过,让我们来看看
-
|30年前未曾发行的任天堂红白机游戏,被这个团队从21张软盘恢复了
-
篮球火火火|湖人伤病名单:4人有伤,老詹遇旧伤,卡鲁索手腕酸痛,G4赛前