IO模型

IO模型

Redis是单线程的,为何支持高并发?node.js,nginx也是单线程的。
除了Redis数据是存在内存里面的,全部操做都是内存级别的,还有其它缘由致使它有如此高的性能?html

多路复用(事件轮训)

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

常见的IO模型

同步阻塞IO(Blocking IO)

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

同步非阻塞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...异步

相关文章
相关标签/搜索