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/findumars/p/6361627.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章