IO流 - IO通訊(BIO & 偽非同步IO & NIO & AIO)
阿新 • • 發佈:2018-12-26
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使用難度:複雜
除錯難度:複雜
可靠性:比較高
吞吐量:高