1. 程式人生 > >BIO,NIO,AIO及netty的介紹

BIO,NIO,AIO及netty的介紹

同步阻塞io(BIO)、偽非同步io、非阻塞io(NIO)、非同步io(AIO)的概念及區別?

BIO:同步阻塞式IO,伺服器端與客戶端通過三次握手後建立連線,連線成功,雙方通過I/O進行同步阻塞式通訊。

弊端:1,讀和寫操作是同步阻塞的,任何一端出現網路效能問題,都會影響另一方。2,一個鏈路建立一個執行緒,無法滿足高併發,高效能需求。

偽非同步IO:為了解決同步阻塞式IO一個鏈路建立一個執行緒的弊端,出現了偽非同步IO,偽非同步IO其實就是通過執行緒池/佇列來處理多個客戶端的接入,通過執行緒池可以靈活的調配執行緒資源,設定執行緒最大值,防止海量併發接入導致執行緒耗盡。

弊端:1,讀和寫操作是同步阻塞的,任何一端出現網路效能問題,都會影響另一方

非阻塞IO:nio類庫是jdk1.4中引入的,它彌補了同步阻塞IO的不足,它在Java提供了高速的,面向塊的I/O。同步阻塞IO是以流的方式處理資料,而NIO是以塊的方式處理資料。面向流的I/O通常比較慢, 按塊處理資料比按(流式的)位元組處理資料要快得多。

AIO:非同步非阻塞I/O,NIO2的非同步套接字通道時真正的非同步非阻塞I/O,它對應unix網路驅動中的事件驅動I/O,它不需要通過多路複用器對註冊的通道進行輪詢操作即可實現非同步讀寫,簡化了NIO程式設計模型。

Nio有哪些框架?

Netty,Mina,Grizzly

為什麼選擇netty?

Netty 是業界最流行的NIO框架之一,它的健壯性,效能,可定製性,可擴充套件性在同類框架中都是屈指一數的,並且它已經得到很多商用專案的驗證。

Netty優點有哪些?

API使用簡單,開發門檻低。

功能強大,預置多種編解碼器,支援多種主流協議。

定製能力強,可以通過channelhandler對通訊框架進行靈活的擴充套件。

效能好。

社群活躍,版本迭代週期短。

經歷了大規模的商業專案的驗證。在網際網路,大資料,網路遊戲,企業應用,電信軟體等眾多行業得到成功商用,證明了它完全可以滿足不同行業的商業應用。