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...異步

相關文章
相關標籤/搜索