DAY18:Netty介紹

最近兩周要做一個app內的答題遊戲,決定採用Netty來解決雙向實時通信的問題,今天先簡單了解一下,明天正式開擼!

以下摘自百度百科:

Netty是由JBOSS提供的一個java開源框架。Netty提供非同步的、事件驅動的網路應用程序框架和工具,用以快速開發高性能、高可靠性的網路伺服器和客戶端程序。

也就是說,Netty 是一個基於NIO的客戶、伺服器端編程框架,使用Netty 可以確保你快速和簡單的開發出一個網路應用,例如實現了某種協議的客戶,服務端應用。Netty相當簡化和流線化了網路應用的編程開發過程,例如,TCP和UDP的socket服務開發。

「快速」和「簡單」並不用產生維護性或性能上的問題。Netty 是一個吸收了多種協議的實現經驗,這些協議包括FTP,SMTP,HTTP,各種二進位,文本協議,並經過相當精心設計的項目,最終,Netty 成功的找到了一種方式,在保證易於開發的同時還保證了其應用的性能,穩定性和伸縮性。

設計

針對多種傳輸類型的統一介面 - 阻塞和非阻塞

簡單但更強大的線程模型

真正的無連接的數據報套接字支持

鏈接邏輯支持復用

易用性

大量的 Javadoc 和 代碼實例

除了在 JDK 1.6 + 額外的限制。(一些特徵是只支持在Java 1.7 +。可選的功能可能有額外的限制。)

性能

比核心 Java API 更好的吞吐量,較低的延時

資源消耗更少,這個得益於共享池和重用

減少內存拷貝

健壯性

消除由於慢,快,或重載連接產生的 OutOfMemoryError

消除經常發現在 NIO 在高速網路中的應用中的不公平的讀/寫比

安全

完整的 SSL / TLS 和 StartTLS 的支持

行在受限的環境例如 Applet 或 OSGI

社區

發布的更早和更頻繁

社區驅動

新特性

處理大容量數據流更簡單

處理協議編碼和單元測試更簡單

I/O超時和idle狀態檢測

應用程序的關閉更簡單,更安全

更可靠的OutOfMemoryError預防

新的傳輸方式

1、基於BIO和NIO的UDP傳輸

2、本地傳輸(又名 in-VM傳輸)

3、HTTP通道,可繞過防火牆

新的編碼器

1、HTTP客戶端和伺服器端

2、用於實現各種專有協議的工具


推薦閱讀:

Netty的Reactor線程組中的每個Reactor線程處理網路I/O為什麼一定要串列化,並行化不是更能提高系統吞吐量嗎?
如何評價《Netty實戰》這本書?
關於應用層解決拆包粘包問題?
為什麼nio效率會比bio高?
Executor

TAG:Netty | SpringBoot | Socket |