乐趣区

IO模型

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…

退出移动版