1.為什么選擇Netty
需要了解了Socket通信(IO/NIO/AIO)編程,對於通信模型已經有了一個基本的認識。,果想把這些真正的用於實際工作中,那么還需要不斷的完善、擴展和優化。比如經典的TCP讀包寫包問題,或者是數據接收的大小,實際的通信處理與應答的處理邏輯等等一些細節問題需要認真的去思考,而這些都需要大量的時間和經歷,以及豐富的經驗。所以想學好Socket通信不是件容易事,那么接下來就來學習一下新的技術Netty,為什么會選擇Netty?因為它簡單!使用Netty不必編寫復雜的邏輯代碼去實現通信,再也不需要去考慮性能問題,不需要考慮編碼問題,半包讀寫等問題。強大的Netty已經幫我們實現好了,我們只需要使用即可。
Netty是最流行的NIO框架,它的健壯性、功能、性能、可定制性和可擴展性在同類框架都是首屈一指的。它已經得到成百上千的商業/商用項目驗證,如Hadoop的RPC框架Avro、RocketMQ以及主流的分布式通信框架Dubbox等等。
2.Netty簡介
Netty是基於Java NIO client-server的網絡應用框架,使用Netty可以快速開發網絡應用,例如服務器和客戶端協議。Netty提供了一種新的方式來開發網絡應用程序,這種新的方式使它很容易使用和具有很強的擴展性。Netty的內部實現是很復雜的,但是Netty提供了簡單易用的API從網絡處理代碼中解耦業務邏輯。Netty是完全基於NIO實現的,所以整個Netty都是異步的。
網絡應用程序通常需要有較高的可擴展性,無論是Netty還是其他的基於Java Nio的框架,都會提供可擴展性的解決方案。Netty中一個關鍵組成部分是它的異步特性,本片文章將討論同步(阻塞)和異步(非阻塞)的IO來說明為什么使用異步代碼解決擴展性問題以及如何使用異步。
總結:
1) Netty 是由 JBOSS 提供的一個 Java 開源框架, 現為 Github 上的獨立項目。
2) Netty 是一個異步的、 基於事件驅動的網絡應用框架, 用以快速開發高性能、 高可靠性的網絡 IO 程序。
3) Netty 主要針對在 TCP 協議下, 面向 Clients 端的高並發應用, 或者 Peer-to-Peer 場景下的大量數據持續傳輸的
應用。
4) Netty 本質是一個 NIO 框架, 適用於服務器通訊相關的多種應用場景。
5) 要透徹理解 Netty , 需要先學習 NIO , 這樣我們才能閱讀 Netty 的源碼。
3 Netty 的應用場景
3.1互聯網行業
1) 互聯網行業: 在分布式系統中, 各個節點之間需要遠程服務調用, 高性能的 RPC 框架必不可少, Netty 作為
異步高性能的通信框架, 往往作為基礎通信組件被這些 RPC 框架使用。
2) 典型的應用有: 阿里分布式服務框架 Dubbo 的 RPC 框架使用 Dubbo 協議進行節點間通信, Dubbo 協議默
認使用 Netty 作為基礎通信組件, 用於實現各進程節點之間的內部通信
3.2游戲行業
1) 無論是手游服務端還是大型的網絡游戲, Java 語言得到了越來越廣泛的應用
2) Netty 作為高性能的基礎通信組件, 提供了 TCP/UDP 和 HTTP 協議棧, 方便定制和開發私有協議棧, 賬號登
錄服務器
3) 地圖服務器之間可以方便的通過 Netty 進行高性能的通信
3.3大數據領域
1) 經典的 Hadoop 的高性能通信和序列化組件 Avro 的 RPC 框架, 默認采用 Netty 進行跨界點通信
2) 它的 Netty Service 基於 Netty 框架二次封裝實現。
3.4其它開源項目使用到 Netty
網址: https://netty.io/wiki/related-projects.html
學習資料