Netty 提供非同步的、事件驅動的網路應用程式框架和工具,用以快速開發高性能、高可靠性的網路伺服器和客戶端程式 本文對Netty做了一個總體概覽 ...
Netty 是什麼
Netty 提供非同步的、事件驅動的網路應用程式框架和工具,用以快速開發高性能、高可靠性的網路伺服器和客戶端程式
Netty 架構圖
為什麼選擇Netty
通過對Netty的分析,我們將它的優點總結如下:
1) API使用簡單,開發門檻低;
2) 功能強大,預置了多種編解碼功能,支持多種主流協議;
3) 定製能力強,可以通過ChannelHandler對通信框架進行靈活的擴展;
4) 性能高,通過與其它業界主流的NIO框架對比,Netty的綜合性能最優;
5) 成熟、穩定,Netty修複了已經發現的所有JDK NIO BUG,業務開發人員不需要再為NIO的BUG而煩惱;
6) 社區活躍,版本迭代周期短,發現的BUG可以被及時修複,同時,更多的新功能會被加入;
7) 經歷了大規模的商業應用考驗,質量已經得到驗證。在互聯網、大數據、網路游戲、企業應用、電信軟體等眾多行業得到成功商用,證明瞭它可以完全滿足不同行業的商業應用。
Netty的特性
設計
–統一的API,適用於丌同的協議(阻塞和非阻塞)
–基於靈活、可擴展的事件驅動模型
–高度可定製的線程模型
–可靠的無連接數據Socket支持(UDP)
性能
–更好的吞吐量,低延遲
–更省資源
–儘量減少丌必要的記憶體拷貝
安全
–完整的SSL/ TLS和STARTTLS的支持
–能在Applet不谷歌Android的限制環境運行良好
健壯性
–不再因過快、過慢或超負載連接導致OutOfMemoryError
–不再有在高速網路環境下NIO讀寫頻率不一致的問題
易用
–完善的Java doc,用戶指南和樣例
–簡潔簡單
–僅依賴於JDK1.5
Netty數據流分析
伺服器啟動
伺服器主通道監聽
伺服器子通道開通
客戶端啟動
客戶端主通道監聽
客戶端子通道開通
框架比較
Netty VS Mina
Netty基於Pipeline處理,Mina基於Filter過濾
Netty的事件驅動模型具有更好的擴展性和易用性
Https,SSL,PB,RSTP,Text &Binary等協議支持
Netty中UDP傳輸有更好的支持
官方測試Netty比Mina性能更好