详解netty 线程模型及EventLoop
一、线程模型
linux下网络并发线程模型主要有下面五种
1、apache模型:
为每一种连接分配一个进程。主机分配给每个连接的时间和空间代价大,并且随着连接的增多,进程间切换开销也增长了,很难应对大量的客户并发连接。
2、TPC模型(Thread per connection):
每个线程对应一个连接。比apache模型好,但是还是存在性能开销大的问题。
3、select模型:I/O多路复用
1、每个连接对应一个文件描述符。select模型受限域FD_SETSIZE 即进程最大打开的描述符数。一般为1024个
2、select 每次都会扫描一个文件描述符的集合,集合越大扫描的效率越低。
3、内核到用户空间,会发生文件的拷贝
4、poll模型:I/O多路复用
1、poll模型解决了最大文件描述符的问题,但是依然存在扫描效率和内存拷贝的问题
5、epoll模型:I/O多路复用
1、无文件描述符大小的限制仅与内存大小相关
2、epoll返回时已经明确直到时哪个socket 已经有准备好的读写事件,避免了像select模型那样的扫描问题
3、内核到用户空间采用共享内存方式,实现了零拷贝
二、netty的线程模型
netty可以支持单线程、多线程、主从多线程模型。
- reactor单线程模型的示意图如下:

本文深入探讨了Netty的线程模型,包括单线程、多线程和主从多线程模型,以及EventLoop如何高效处理I/O事件。对比了apache、TPC、select、poll和epoll模型,阐述了Netty线程模型的优势。
最低0.47元/天 解锁文章

403

被折叠的 条评论
为什么被折叠?



