基於NIO的Netty網路架構

來源:互聯網
上載者:User

標籤:軟體   log   actor通訊   啟用   線程   連網   傳輸   主從   無法   

     Netty是一個高效能、非同步事件驅動的NIO架構,它提供了對TCP、UDP和檔案傳輸的支援,Netty的所有IO操作都是非同步非阻塞的,通過Future-Listener機制,使用者可以方便的主動擷取或者通過通知機制獲得IO操作結果。

Netty的優點有:

a、功能豐富,內建了多種資料編解碼功能、支援多種網路通訊協定。

b、高效能,通過與其它主流NIO網路架構對比,它的綜合效能最佳。

c、可擴充性好,可通過它提供的ChannelHandler組件對網路通訊方面進行靈活擴充。

d、易用性,API使用簡單。

e、經過了許多商業應用的考驗,在互連網、網路遊戲、大資料、電信軟體等眾多行業得到成功商用。

Netty採用了典型的三層網路架構進行設計,邏輯架構圖如下:

第一層:Reactor通訊調度層。該層的主要職責就是監聽網路的串連和讀寫操作,負責將網路層的資料讀取到記憶體緩衝區中,然後觸發各種網路事件,例如串連建立、串連啟用、讀事件、寫事件等,將這些事件觸發到Pipeline中,再由Pipeline充當的職責鏈來進行後續的處理。

 

第二層:職責鏈Pipeline層。負責事件在職責鏈中有序的向前(後)傳播,同時負責動態編排職責鏈。Pipeline可以選擇監聽和處理自己關心的事件。

 

第三層:商務邏輯處理層,一般可分為兩類:a. 純粹的商務邏輯處理,例如日誌、訂單處理。b. 應用程式層協議管理,例如HTTP(S)協議、FTP協議等。

 

我們都知道影響網路服務通訊效能的主要因素有:網路I/O模型、線程(進程)調度模型和資料序列化方式。

在網路I/O模型方面,Netty採用基於非阻塞I/O的實現,底層依賴的是JDKNIO架構的Selector。

線上程調度模型方面,Netty採用Reactor執行緒模式。常用的Reactor執行緒模式有三種,分別是:

a、Reactor單執行緒模式:Reactor單執行緒模式,指的是所有的I/O操作都在同一個NIO線程上面完成。對於一些小容量應用情境,可以使用單執行緒模式。

b、Reactor多執行緒模式:Rector多執行緒模式與單執行緒模式最大的區別就是有一組NIO線程處理I/O操作。主要用於高並發、大業務量情境。

c、主從Reactor多執行緒模式:主從Reactor執行緒模式的特點是服務端用於接收用戶端串連的不再是一個單獨的NIO線程,而是一個獨立的NIO線程池。利用主從NIO執行緒模式,可以解決一個服務端監聽線程無法有效處理所有用戶端串連的效能不足問題。Netty執行緒模式並非固定不變的,它可以支援三種Reactor執行緒模式。

在資料序列化方面,影響序列化效能的主要因素有:

a、序列化後的碼流大小(網路頻寬佔用)。

b、序列化和還原序列化操作的效能(CPU資源佔用)。

c、並發調用時的效能表現:穩定性、線性增長等。

Netty預設提供了對GoogleProtobuf二進位序列化架構的支援,但通過擴充Netty的編解碼介面,可以實現其它的高效能序列化架構,例如Avro、Thrift的壓縮二進位編解碼架構。

 

基於NIO的Netty網路架構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.