1. 程式人生 > >IO流 - IO通訊(BIO & 偽非同步IO & NIO & AIO)

IO流 - IO通訊(BIO & 偽非同步IO & NIO & AIO)

1、BIO 服務端一個執行緒會負責一個連線,進行請求的處理和響應,比較明顯,當客戶端比較多的時候,服務端的執行緒可能就不夠了,這時候對應的請求就沒法及時處理了 

客戶端個數:服務端處理執行緒個數=1:1

IO型別:阻塞同步

API使用難度:簡單

除錯難度:簡單

可靠性:比較差

吞吐量:低

 

2、偽非同步IO 服務端會維護一個執行緒池來處理請求端的請求,也比較明顯,當客戶端的請求比較多的時候,執行緒池的執行緒也是不夠的,此時也會出現請求處理阻塞的情況

客戶端個數:服務端處理執行緒個數=m:n

IO型別:阻塞同步

API使用難度:簡單

除錯難度:簡單

可靠性:比較差

吞吐量:中

 

3、NIO 這個是當前比較牛逼的技術了,服務端通過快取區、通道、多路複用等技術,允許客戶端的請求成千上萬,讀寫都首先通過快取區來承接,然後通過通道來傳輸資訊,通過多路複用器輪詢通道,看看是否存在讀或者寫時間,然後再進行處理,大大提升了IO處理的效能和穩定性

客戶端個數:服務端處理執行緒個數=m:1

IO型別:非阻塞同步

API使用難度:非常複雜,所以,給了Netty機會

除錯難度:複雜

可靠性:比較高

吞吐量:高

 

4、AIO

非同步IO,簡化了NIO的通訊模型

客戶端個數:服務端處理執行緒個數=m:0

IO型別:非阻塞非同步

API使用難度:複雜

除錯難度:複雜

可靠性:比較高

吞吐量:高