第 4 章 Netty 概述

4.1 原生 NIO 存在的問題

  1. NIO 的類庫和 API 繁雜,使用麻煩:需要熟練掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。

  2. 需要具備其他的額外技能:要熟悉 Java 多線程編程,因爲 NIO 編程涉及到 Reactor 模式,你必須對多線程和網絡編程非常熟悉,才能編寫出高質量的 NIO 程序。

  3. 開發工作量和難度都非常大:例如客戶端面臨斷連重連、網絡閃斷、半包讀寫、失敗緩存、網絡擁塞和異常流的處理等等。

  4. JDK NIO 的 Bug:例如臭名昭著的 Epoll Bug,它會導致 Selector 空輪詢,最終導致 CPU 100%。直到 JDK 1.7版本該問題仍舊存在,沒有被根本解決

4.2 Netty 官網說明

官網:https://netty.io/
Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients
在這裏插入圖片描述
Netty 是由 JBOSS 提供的一個 Java 開源框架。Netty 提供異步的、基於事件驅動的網絡應用程序框架,用以快速開發高性能、高可靠性的網絡 IO 程序

Netty 可以幫助你快速、簡單的開發出一個網絡應用,相當於簡化和流程化了 NIO 的開發過程

Netty 是目前最流行的 NIO 框架,Netty 在互聯網領域、大數據分佈式計算領域、遊戲行業、通信行業等獲得了廣泛的應用,知名的 Elasticsearch 、Dubbo 框架內部都採用了 Netty

4.3 Netty 的優點

Netty 對 JDK 自帶的 NIO 的 API 進行了封裝,解決了上述問題。

  1. 設計優雅:適用於各種傳輸類型的統一 API 阻塞和非阻塞 Socket;基於靈活且可擴展的事件模型,可以清晰地分離關注點;高度可定製的線程模型 - 單線程,一個或多個線程池.

  2. 使用方便:詳細記錄的 Javadoc,用戶指南和示例;沒有其他依賴項,JDK 5(Netty 3.x)或 6(Netty 4.x)就足夠了。

  3. 高性能、吞吐量更高:延遲更低;減少資源消耗;最小化不必要的內存複製。

  4. 安全:完整的 SSL/TLS 和 StartTLS 支持。

  5. 社區活躍、不斷更新:社區活躍,版本迭代週期短,發現的 Bug 可以被及時修復,同時,更多的新功能會被加入

4.4 Netty 版本說明

  1. netty 版本分爲 netty3.x 和 netty4.x、netty5.x

  2. 因爲 Netty5 出現重大 bug,已經被官網廢棄了,目前推薦使用的是 Netty4.x 的穩定版本

  3. 目前在官網可下載的版本 netty3.x netty4.0.x 和 netty4.1.x

  4. 在本套課程中,我們講解 Netty4.1.x 版本

  5. netty 下載地址: https://bintray.com/netty/downloads/netty/
    在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章