5種IO模型和5種通訊模式

來源:互聯網
上載者:User

作業系統的五種通訊模型

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操作函數
有興趣的可以去看看NIO
4、訊號驅動I/O 首先我們允許套介面進行訊號驅動I/O,並安裝一個訊號處理函數,進程繼續運行並不阻塞。當資料準備好時,進程會收到一個SIGIO訊號,可以在訊號處理函數中調用I/O操作函數處理資料

5、非同步I/O模型

當一個非同步程序呼叫發出後,調用者不能立刻得到結果。實際處理這個調用的組件在完成後,通過狀態、通知和回調來通知調用者的輸入輸出操作

介面調用的五種通訊模式
1、同步點對點服務模式
就是我們常見的發出http請求,等待服務端返回介面,在這個過程中請求發出後一直在等待著結果,所以說是同步

    

2、非同步點對點訊息模式1

用戶端發出請求後,程式繼續執行,當伺服器處理完成時,通過回呼函數通知程式


3、非同步點對點訊息模式2

增加了中間代理,如cdn、nginx等,加快伺服器的應答



4、非同步廣播訊息模式

基於訊息訂閱分發,將不同訊息分給不同的伺服器執行,也是一種分布式叢集處理的一種思想,zookeeper就是這種方式


5、去中心化分布式式

去掉ESB匯流排的控制,從而去掉系統中樞單點效能的瓶頸,而且後方單點伺服器形成一個新活力的網路,形成一個無狀態的系統



啦啦啦。。。。。。。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.