I/O多路复用
Laiyong Wang Lv5
  1. 什么是IO多路复用?
  • IO 多路复用是一种同步IO模型,实现一个线程可以监视多个文件句柄;
  • 一旦某个文件句柄就绪,就能够通知应用程序进行相应的读写操作;
  • 没有文件句柄就绪就会阻塞应用程序,交出CPU。
  1. Nginx的IO模型
    Nginx 支持多种并发模型,并发模型的具体实现根据系统平台而有所不同。
    在支持多种并发模型的平台上,nginx 自动选择最高效的模型。但我们也可以使用 use 指令在配置文件中显式地定义某个并发模型

  2. Redis IO多路复用技术
    redis 4.0 之后包含多线程,基本用于异步删除
    redis 是一个单线程却性能非常好的内存数据库, 主要用来作为缓存系统。 redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量

  3. 为什么 Redis 中要使用 I/O 多路复用这种技术呢?
    Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回,这会导致某一文件的 I/O 阻塞导致整个进程无法对其它客户提供服务,而 I/O 多路复用 就是为了解决这个问题而出现的。
    redis的io模型主要是基于epoll实现的,不过它也提供了 select和kqueue的实现,默认采用epoll。

  4. select poll epoll 的对比
    upload successful

  5. 为什么有io多路复用机制
    没有IO多路复用机制时,有BIO(同步阻塞)、NIO(同步非阻塞)两种实现方式
    BIO : 单线程时,无法处理并发
    NIO : 每次轮询所有 fd (包括没有发生读写实际的 fd)会很浪费 CPU

  6. io 多路复用的三种方式
    fd全称“File descriptor”,中文名为“文件描述符”,它是内核为了高效管理这些已经被打开的文件所创建的一种索引

问题7及之后的所有答案参考链接
https://juejin.cn/post/6882984260672847879
8. select 函数及缺点

  1. poll 函数及缺点

  2. epoll 函数及缺点

  3. epoll LT 和 ET 的区别

  4. epoll 的应用