天天看點

(二)Netty之IO模型

IO模型

  1. I/O模型的簡單了解: 就是用什麼樣的通道進行資料的發送和接收,很大程度上決定了程式通信的性能
  2. JAVA共支援三種網絡程式設計模型IO模式:BIO、NIO、AIO
  3. JAVA BIO:同步并阻塞(傳統阻塞型),伺服器實作模式為一個請求連接配接一個線程,即用戶端有連接配接請求時伺服器端就需要啟動一個線程進行處理,如果這個連接配接補做任何事情會造成不必要的線程開銷
  4. JAVA NIO:同步非阻塞,伺服器實作模式為一個線程處理多個請求(連接配接),即用戶端發送的連接配接請求都會注冊到多路複用器上,多路複用器輪詢到連接配接有I/O請求就進行處理
  5. JAVA AIO(NIO 2):異步非阻塞,AIO引入異步通道的概念,采用了Proactor模式,簡化了程式編寫,有效的請求才啟動線程,它的特點是先由作業系統完成後才通知服務端程式啟動線程去處理,一般适用于連接配接數較多且連接配接時間較長的應用

BIO與NIO簡單示意圖

(二)Netty之IO模型

BIO、NIO、AIP适用場景分析

  1. BIO方式适用于連接配接數目比較小且固定的架構,這種方式對伺服器資源要求比較高,并發局限于應用中,JDK1.4以前的唯一選擇,但程式簡單易了解
  2. NIO方式适用于連接配接數目多且連接配接比較短(輕操作)的架構,比如聊天伺服器,彈幕系統,伺服器間通訊等。程式設計比較複雜,JDK1.4開始支援
  3. AIO方式使用于連接配接數目多且連接配接比較長(重操作)的架構,比如相冊伺服器,充分調用OS參與并發操作,程式設計比較複雜,JDK7開始支援