IO模型

2次阅读

共计 588 个字符,预计需要花费 2 分钟才能阅读完成。

IO 模型

Redis 是单线程的,为什么支持高并发?node.js,nginx 也是单线程的。
除了 Redis 数据是存在内存里面的,所有操作都是内存级别的,还有其它原因导致它有如此高的性能?

多路复用(事件轮训)

多路复用是一种 IO 模型,那系统中还有哪些 IO 模式?一起来看看吧

常见的 IO 模型

同步阻塞 IO(Blocking IO)

传统 IO 模型,请求 server,如果 server 没有返回,client 会一直等待,直到超时

同步非阻塞 IO(Non-blocking IO)

请求 server,无论是否成功,server 都会立刻返回结果

IO 多路复用(IO Multiplexing)

即 Reactor 设计模式,select/epoll 的好处就在于单个 process 就可以同时处理多个网络连接的 IO。它的基本原理就是 select/epoll 这个 function 会不断的轮询所负责的所有 socket,当某个 socket 有数据到达了,就通知用户进程。
现在操作系统多路复用 API 已经不再使用 select 系统调用,而改用 epoll(Linux)和 kqueue(FressBSD 和 MacOS)

异步 IO(Asynchronous IO)

即 Proactor 设计模式,client 发起 read 操作,就可以进行其它操作,server 操作成功会通知 client

参考:https://www.cnblogs.com/findu…

正文完
 0