美文网首页
异步I/O笔记

异步I/O笔记

作者: SeanKChan | 来源:发表于2015-12-18 14:29 被阅读0次

1.为什么要异步I/O

Node既可以作为服务器端去处理客户端带来的大量并发请求,也能作为客户端对网络中的各个应用进行并发请求。--

在B/S模型中,如果网页临时需要获取一个网络资源,通过异步的方式获取服务端的资源,在下载资源的期间,用户交互都不会处于等待状态。但是前端获取资源的速度也取决于后端的响应速度。随着WebApp不断膨胀,数据也会分布式到多台服务器上,分布式将会是常态,这也会放大异步和同步性能上的差异。

不同的I/O类型及其对应的开销

I/O类型 花费的CPU时钟周期
cpu一级缓存 3
cpu二级缓存 14
内存 250
硬盘 41000000
网络 240000000

I/O是昂贵的,分布式I/O是更昂贵的。只有后端能够快速的响应资源,才能让前段的体验更好。

2.资源分配

通常计算机在运行的过程对组件进行了抽象,分为I/O设备和计算设备。
多线程的代价在于创建线程和执行线程上下文切换的开销较大。另外,在复杂的业务中,多线程编程经常面临锁、状态同步等问题,优势是在多核CPU上能够有效提升CPU的利用率。
单线程同步编程缺点在于性能,任意一个略慢的任务都会导致后续执行代码被阻塞,在计算机资源中,通常I/O与CPU计算之间是可以并行进行的,但是同步编程会让后续任务等待,造成资源不能更好地利用。
异步I/O就是期望I/O的调用不会阻塞后续运算,将原有等待I/O的这段时间分配给其余的业务去执行。

3.异步I/O实现

操作系统对计算机进行了抽象,将所有输入输出设备抽象为文件。内核在进行文件I/O操作时,通过文件描述符进行管理,而文件描述符类似于应用程序和系统内核之间的凭证。应用程序如果需要进行I/O调用,需要先打开文件描述符,然后再根据文件描述符去实现文件的读写。此处非阻塞I/O与阻塞I/O的区别在于阻塞I/O完成整个获取数据的过程,而非阻塞I/O则不带数据直接返回,要获取数据,还需要通过文件描述符再次获取。
非阻塞I/O返回之后,CPU的时间片可以处理其他事务,由于完整的I/O并没有完成,应用程序需要重复调用I/O操作来确认是否完成。这种重复调用操作判断是否完成的技术叫轮询

相关文章

  • 异步I/O笔记

    1.为什么要异步I/O Node既可以作为服务器端去处理客户端带来的大量并发请求,也能作为客户端对网络中的各个应用...

  • NIO-异步IO

    异步I/O Github Demo 连网是学习异步 I/O 的很好基础,而异步 I/O 对于在 Java 语言中执...

  • Lesson03

    异步式I/O与事件紧密结合 同步式I/O与异步式I/O的区别

  • Node 简介

    Node的特点 Node的特点有:异步I/O、事件与回调函数、单线程、跨平台 异步I/O 在Node中,异步I/O...

  • nodejs笔记-异步I/O

    1.为什么要使用异步I/O 1.1 用户体验 浏览器中的Javascripts是在单线程上执行的,并且和UI渲染公...

  • Linux 网络编程之 I/O 模型

    I/O 模型大致分为 5 类:同步阻塞 I/O,同步非阻塞 I/O,异步 I/O,I/O 复用,信号驱动。 阻塞 ...

  • 五种I/O模型(转自园博园)

    .1 五种I/O模型 1)阻塞I/O 2)非阻塞I/O 3)I/O复用 4)事件(信号)驱动I/O 5)异步I/...

  • Linux I/O模型的前世今生

    Linux I/O模型 阻塞式I/O模型 非阻塞式I/O模型 I/O复用式模型 信号驱动式I/O模型 异步I/O模...

  • Socket

    一、I/O 模型阻塞式 I/O非阻塞式 I/OI/O 复用信号驱动 I/O异步 I/O五大 I/O 模型比较 二、...

  • 大厂求职必看!Tomcat线程模型—全网最清晰的讲解!

    UNIX系统的I/O模型 同步阻塞I/O、同步非阻塞I/O、I/O多路复用、信号驱动I/O和异步I/O。 什么是 ...

网友评论

      本文标题:异步I/O笔记

      本文链接:https://www.haomeiwen.com/subject/oqyphttx.html