5種IO模型和5種通訊模式
作業系統的五種通訊模型
1、阻塞I/O
就是我們常見的socket,監聽埠收到訊息進行處理,並把結果返回給客戶端
執行I/O操作完成前會一直進行等待,不會將控制權交給程式。套接字預設為阻塞模式
應用程式呼叫一個IO函式,導致應用程式阻塞,等待資料準備好。 如果資料沒有準備好,一直等待….資料準備好了,從核心拷貝到使用者空間,IO函式返回成功指示,程式繼續執行
2、非阻塞I/O
非阻塞IO通過程式反覆呼叫IO函式,與阻塞不同的是,呼叫IO函式後,核心會立刻返回一個錯誤的介面,該程式會不斷去呼叫查詢結果的函式recv(),直到收到正確的結果,在這個過程中程式是阻塞的
非阻塞模式套接字與阻塞模式套接字相比,不容易使用。使用非阻塞模式套接字,需要編寫更多的程式碼,但是,非阻塞套接字在控制建立的多個連線,在資料的收發量不均,時間不定時,明顯具有優勢
3、I/O複用模型
主要是select和epoll;對一個IO埠,兩次呼叫,兩次返回,比阻塞IO並沒有什麼優越性;關鍵是能實現同時對多個IO埠進行監聽;
I/O複用模型會用到select、poll、epoll函式,這幾個函式也會使程式阻塞,但是和阻塞I/O所不同的的,這兩個函式可以同時阻塞多個I/O操作。而且可以同時對多個讀操作,多個寫操作的I/O函式進行檢測,直到有資料可讀或可寫時,才真正呼叫I/O操作函式
I/O複用模型會用到select、poll、epoll函式,這幾個函式也會使程式阻塞,但是和阻塞I/O所不同的的,這兩個函式可以同時阻塞多個I/O操作。而且可以同時對多個讀操作,多個寫操作的I/O函式進行檢測,直到有資料可讀或可寫時,才真正呼叫I/O操作函式
有興趣的可以去看看NIO
4、訊號驅動I/O
首先我們允許套介面進行訊號驅動I/O,並安裝一個訊號處理函式,程式繼續執行並不阻塞。當資料準備好時,程式會收到一個SIGIO訊號,可以在訊號處理函式中呼叫I/O操作函式處理資料
5、非同步I/O模型
當一個非同步過程呼叫發出後,呼叫者不能立刻得到結果。實際處理這個呼叫的部件在完成後,通過狀態、通知和回撥來通知呼叫者的輸入輸出操作
介面呼叫的五種通訊模式
1、同步點對點服務模式
就是我們常見的發出http請求,等待服務端返回介面,在這個過程中請求發出後一直在等待著結果,所以說是同步
2、非同步點對點訊息模式1
客戶端發出請求後,程式繼續執行,當伺服器處理完成時,通過回撥函式通知程式
3、非同步點對點訊息模式2
增加了中間代理,如cdn、nginx等,加快伺服器的應答
4、非同步廣播訊息模式
基於訊息訂閱分發,將不同訊息分給不同的伺服器執行,也是一種分散式叢集處理的一種思想,zookeeper就是這種方式
5、去中心化分散式式
去掉ESB匯流排的控制,從而去掉系統中樞單點效能的瓶頸,而且後方單點伺服器形成一個新活力的網路,形成一個無狀態的系統
啦啦啦。。。。。。。
相關文章
- 【OS】5種網路IO模型模型
- 一頓飯的事兒,搞懂Linux5種IO模型Linux模型
- IO通訊模型(二)同步非阻塞模式NIO(NonBlocking IO)模型模式BloC
- (四)五種IO模型模型
- 五種IO模型介紹和對比模型
- 【IO】Linux下的五種IO模型Linux模型
- 五種網路io模型模型
- 圖解四種 IO 模型圖解模型
- 五種傳統IO模型模型
- gRPC(2):四種基本通訊模式RPC模式
- Kotlin下的5種單例模式Kotlin單例模式
- 單例模式:5種實現方式單例模式
- 理解兩種變數模型和三種傳參模式變數模型模式
- IO通訊模型(三)多路複用IO模型
- Python 5種方法實現單例模式Python單例模式
- 【網路IO系列】IO的五種模型,BIO、NIO、AIO、IO多路複用、 訊號驅動IO模型AI
- 你應該知道的 5 種 TypeScript設計模式TypeScript設計模式
- Vue中元件通訊的幾種方法(Vue3的7種和Vue2的12種元件通訊)Vue元件
- 5G訊息的三種型別型別
- Java3種IO模型,一次搞懂!Java模型
- 今天我們來聊Java IO模型,BIO、NIO、AIO三種常見IO模型Java模型AI
- CSS 5種佈局方案CSS
- 連RabbitMQ的5種核心訊息模式都不懂,也敢說自己會用訊息佇列!MQ模式佇列
- TCPIP vs OSI模型:網路通訊的兩種參考模型有哪些不同?TCP模型
- Kafka中避免重複訊息的5種有效方法Kafka
- 用通俗易懂的方式講IO的五種模型模型
- RPC設計應該使用哪種網路IO模型?RPC模型
- vue通訊的N種方式Vue
- vue 6種通訊總結Vue
- 《戰地5》多人模式試玩:傘兵的一萬種死法模式
- Python 操作 MySQL 的5種方式PythonMySql
- 資訊保安最常見的5種主要威脅詳解!
- Linux下的5種I/O模型與3組I/O複用Linux模型
- 程式間的幾種通訊方式
- C#winform和php通訊的一種方式request payloadC#ORMPHP
- python中5種執行緒鎖Python執行緒
- Java中建立物件的5種方式Java物件
- 為什麼Event Sourcing是一種微服務通訊反模式 - Oliver Libutzki微服務模式
- socket.IO通訊