主线程:用于客户端的连接请求操作,一旦连接建立成功,将会监听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:指定客户端连接请求缓冲队列的大小
- 服务端处理客户端连接请求是按顺序处理的,
推荐阅读
-
-
婚礼|美国女子参加继女婚礼穿得比人家还像新娘,网友:爱抢风头的后妈
-
-
#上海出口防疫物资生产一线见闻#对每件产品一丝不苟——上海出口防疫物资生产一线见闻
-
-
网上车市|搭3.0T引擎+电动机,福特Bronco将推混动版车型!动力比牧马人强
-
职级并行即将落地,如何套改,理解不同套改结果大不同
-
铜仁易明眼镜|近视了,随便配一副眼镜就可以了吗,看清楚就行了吗
-
-
中国新闻网|日首相安倍接受体检后在私宅静养 健康状态引同僚担心
-
-
-
-
行之御风|GR Sport,GR军团扩编:丰田推出C-HR
-
太平鸟育儿经|特别是准妈咪必须要知道!,夏季坐月子容易患产后风湿
-
搞笑GIF阿钧|GIF趣图搞笑:狗子把花豹给骂晕了
-
实体清单|禁止在华投资!针对美国对中国企业展开的打压,中国采取反制手段
-
为何受到抵制,官方点名的“社区团购”,电商巨头们还不放弃?
-
问董秘|请问是公司业务的拓...,投资者提问:国务院批准新设46个城市建设跨境电子商务区
-
『美格格聊时尚』而且休闲又舒适,很时髦,街拍:打底裤不仅可以拉长腿型