Python知識分享網 - 專業(yè)的Python學習網站 學Python,上Python222
最透徹的的Netty高性能原理和框架架構解析 PDF 下載
匿名網友發(fā)布于:2024-01-06 10:01:33
(侵權舉報)
(假如點擊沒反應,多刷新兩次就OK!)

最透徹的的Netty高性能原理和框架架構解析 PDF 下載   圖1

 

 

 

資料內容:

 

 

3、JDK 原生 NIO 程序的問題
JDK 原生也有一套網絡應用程序 API,但是存在一系列問題,主要如下:
1) NIO 的類庫和 API 繁雜,使用麻煩:你需要熟練掌握 Selector、ServerSocketChannel、
SocketChannel、ByteBuffer 等。
2) 需要具備其他的額外技能做鋪墊:例如熟悉 Java 多線程編程,因為 NIO 編程涉及到
Reactor 模式,你必須對多線程和網路編程非常熟悉,才能編寫出高質量的 NIO 程序。
3) 可靠性能力補齊,開發(fā)工作量和難度都非常大:例如客戶端面臨斷連重連、網絡閃斷、
半包讀寫、失敗緩存、網絡擁塞和異常碼流的處理等等。NIO 編程的特點是功能開發(fā)相
對容易,但是可靠性能力補齊工作量和難度都非常大。
4) JDK NIO 的 Bug:例如臭名昭著的 Epoll Bug,它會導致 Selector 空輪詢,最終導致 CPU
100%。官方聲稱在 JDK 1.6 版本的 update 18 修復了該問題,但是直到 JDK 1.7 版本該
問題仍舊存在,只不過該 Bug 發(fā)生概率降低了一些而已,它并沒有被根本解決。
4、Netty 的特點
Netty 對 JDK 自帶的 NIO 的 API 進行了封裝,解決了上述問題。
Netty 的主要特點有:
1) 設計優(yōu)雅:適用于各種傳輸類型的統(tǒng)一 API 阻塞和非阻塞 Socket;基于靈活且可擴展
的事件模型,可以清晰地分離關注點;高度可定制的線程模型 - 單線程,一個或多個線
程池;真正的無連接數據報套接字支持(自 3.1 起)。
2) 使用方便:詳細記錄的 Javadoc,用戶指南和示例;沒有其他依賴項,JDK 5(Netty 3.x)
或 6(Netty 4.x)就足夠了。
3) 高性能、吞吐量更高:延遲更低;減少資源消耗;最小化不必要的內存復制。
4) 安全:完整的 SSL/TLS 和 StartTLS 支持。
5) 社區(qū)活躍、不斷更新:社區(qū)活躍,版本迭代周期短,發(fā)現的 Bug 可以被及時修復,同時,
更多的新功能會被加入。
5、Netty 常見使用場景
Netty 常見的使用場景如下:
1)互聯網行業(yè):在分布式系統(tǒng)中,各個節(jié)點之間需要遠程服務調用,高性能的 RPC 框架必
不可少,Netty 作為異步高性能的通信框架,往往作為基礎通信組件被這些 RPC 框架使用。
典型的應用有:阿里分布式服務框架 Dubbo 的 RPC 框架使用 Dubbo 協議進行節(jié)點間通信,
Dubbo 協議默認使用 Netty 作為基礎通信組件,用于實現各進程節(jié)點之間的內部通信。
2)游戲行業(yè):無論是手游服務端還是大型的網絡游戲,Java 語言得到了越來越廣泛的應用。
Netty 作為高性能的基礎通信組件,它本身提供了 TCP/UDP 和 HTTP 協議棧。
非常方便定制和開發(fā)私有協議棧,賬號登錄服務器,地圖服務器之間可以方便的通過 Netty
進行高性能的通信。
3)大數據領域:經典的 Hadoop 的高性能通信和序列化組件 Avro 的 RPC 框架,默認采用
Netty 進行跨界點通信,它的 Netty Service 基于 Netty 框架二次封裝實現。
有興趣的讀者可以了解一下目前有哪些開源項目使用了 Netty 的 Related Projects。
6、Netty 高性能設計
Netty 作為異步事件驅動的網絡,高性能之處主要來自于其 I/O 模型和線程處理模型,前者
決定如何收發(fā)數據,后者決定如何處理數據。