网络演变过程
linux内核演变:
1、壅闭IO(BIO)
实现
- 简朴的c/s模子,通常一个client分配一个线程处理处罚(可以利用队列+线程池优化模子)
缺点
- 并发数量少(线程有限)
- 线程上下文切换影响性能(可用线程池缓解)
2、非壅闭IO(NIO)
实现
BIO和NIO的区别在于内核中数据尚未停其时:
- 壅闭IO不停处于壅闭状态,直到数据停当并从内核态拷贝到用户态后返回
- 非壅闭IO直接返回用户态EWOULDBLOCK错误
改进后
可以在一个线程中管理多个client
设置非壅闭IO
- socket方法创建时间第二个参数type设置SOCK_NONBLOCK
- fcntl方法第三个参数设置O_NONBLOCK
缺点
必要不绝轮训扣问内核数据是否停当,涉及到很多无效的体系调用(system call)
3、IO多路复用第一版(select/poll)
题目点
非壅闭socket不知道什么时间有数据,以是必要自动扣问。
改进
- 每个client都要扣问 —> 批量扣问(体系调用次数 O(n) —> O(1))
- 从自动扣问变成等候关照(体系调用次数降落)
缺点
- 每次查询都会把多个client从用户态拷贝到内核态。(管理百万级别及以上的时间会带来很大开销)
- 处理处罚有相应的client的时间要遍历全部client判定是否有相应。(暗昧关照)
4、IO多路复用第二版(epoll)
改进:
- 监听fd每次全量维护 —> 监听fd初始化 + 增量维护
- 暗昧关照 —> 明确关照(内部利用停当列表)
5、信号驱动IO
区别
无需进程自动去check生动的socket,把查抄工作交给内核。
缺点
当有大量IO利用时,信号较多,SIGIO处理处罚函数不能及时处理处罚大概导致信号队列溢出,而且内核空间与用户空间的频仍信号交互性能也较低。
6、异步IO(AIO)
区别
- epoll(同步非壅闭IO)封装了一个异步事故的关照机制,不负责IO读写利用
- iocp(异步IO)封装了异步的消息事故的关照机制,同时封装了部分IO利用
iocp将吸收发送等io利用也封装到了内核中,对处理处罚大量短毗连比力高效。
linux也有AIO,如gcc AIO、libaio等。
流程如下:
小总结
经典网络模子
1、单Reactor单线程
界说:单线程紧张针对IO利用而言,I/O中的accept()、read()、write()都是在一个线程完成的。
题目:
- IO利用和业务逻辑处理处罚利用在一个线程上,大大低沉了I/O哀求的处理处罚服从。
- 无法充实利用和发挥多核 CPU 的性能。
- 可靠性题目,线程不测制止,大概进入死循环,会导致整个体系通讯模块不可用,不能吸收和处理处罚外部消息,造成节点故障。
经典实现
redis:
利用单Reactor单线程,在6.0版本前,核心业务部分利用单线程。官方数据:10万QPS。
6.0版本之后多线程处理处罚网络数据的读写和协议的分析,单线程实行下令。QPS还能进步1~2倍。
为什么用单线程
- 抛开恒久化不谈,Redis是纯内存利用,实行速率非常快,它的性能瓶颈是网络延伸而不是实行速率,因此多线程并不会带来巨大的性能提拔。
- 多线程会导致过多的上下文切换,带来不须要的开销。
- 引入多线程碰面临线程安全题目
单线程的缺点:次序实行影响后续事故
2、单Reactor线程池
改进:引入了线程池,用来专门处理处罚业务逻辑利用,提拔I/O相应速率,利用多 CPU 的处理处罚本事。
题目:
- 多线程数据共享和访问比力复杂。
- 管理百万级毗连、高并发大数据量时,单个Reactor线程仍然会服从比力低下。
3、多Reactor多线程(多进程)
改进:扩展了Reactor。引入多个Reactor。也称为主从布局。父线程和子线程的职责明确。
扩展Reactor可以是多线程也可以是多进程。
方式资源分配经典实现多线程线程之间如果涉及资源竞争的话,必要通过锁来包管同步netty、memcached等多进程必要进程间通讯nginx等4、Proactor
对比Reactor:
- Proactor 在处理处罚高耗时 IO 时的性能要高于 Reactor,但对于低耗时 IO 的实行服从提拔并不显着
- Proactor 的异步性使其并发处理处罚本事要强于 Reactor
- Proactor 的实现逻辑复杂,编码资本较 Reactor 要高很多
- Proactor 的异步高度依靠于利用体系对于异步的支持。若利用体系对异步的支持欠好,Proactor 的性能还不如 Reactor
- Reactor 是同步非壅闭网络模子,Proactor 是异步非壅闭网络模子
题目:Linux 对 AIO支持的不太友爱
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |