1. 程式人生 > >002——Netty之Netty介紹

002——Netty之Netty介紹

Netty出現背景

  • Java NIO難用
  • 據說存在bug
  • 業界其他NIO框架不成熟

Netty主要解決兩個相應關注領域

  • (1)非同步和事件驅動的實現。
  • (2)一組設計模式,將應用邏輯與網路層解耦。

特性

  • 統一API,適用於不同協議
  • 基於靈活、可擴充套件的事件驅動模型
  • 高度可定製的執行緒模型
  • 更好的吞吐量,低延遲
  • 儘量減少不必要的記憶體拷貝

高效能

  • 同步非阻塞,基於Reactor模型實現
  • TCP接收和傳送緩衝區使用直接記憶體代替堆記憶體
  • 通過記憶體池迴圈利用ByteBuf,避免頻繁建立和銷燬帶來的效能損耗

邏輯架構

image

Reactor通訊排程層

主要職責:該層的主要職責是監聽網路的讀寫和連線操作,負責將網路層的資料讀取到記憶體緩衝區中,然後觸發各種網路事件,例如連線建立、連線啟用、讀事件、寫事件等等。將這些事件觸發到PipeLine中,由PipeLine管理的職責鏈來後續進行處理。

PipeLine

PipeLine是職責鏈ChannelPipeLine,它負責事件在職責鏈中的有序傳播,同時負責動態的編排職責鏈。職責鏈可以選擇監聽和處理自己關心的事件,它可以攔截處理和向後/向前傳播事件。