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 |