netty的介紹
-
Netty 是由 JBOSS 提供的一個 Java 開源框架,現為 Github上的獨立項目。
-
Netty 是一個異步的、基於事件驅動的網絡應用框架,用以快速開發高性能、高可靠性的網絡 IO 程序。
-
Netty主要針對在TCP協議下,面向Clients端的高並發應用,或者Peer-to-Peer場景下的大量數據持續傳輸的應用。
-
Netty本質是一個NIO框架,適用於服務器通訊相關的多種應用場景
-
要透徹理解Netty , 需要先學習 NIO , 這樣我們才能閱讀 Netty 的源碼。
netty 總體架構
Netty架構分析
Netty 采用了比較典型的三層網絡架構進行設計,邏輯架構圖如下所示:

-
Reactor 通信調度層,它由一系列輔助類完成,包括 Reactor 線程 NioEventLoop 以及其父類、NioSocketChannel/NioServerSocketChannel 以及其父類、ByteBuffer 以及由其衍生出來的各種 Buffer、Unsafe 以及其衍生出的各種內部類等。該層的主要職責就是監聽網絡的讀寫和連接操作,負責將網絡層的數據讀取到內存緩沖區中,然后觸發各種網絡事件,例如連接創建、連接激活、讀事件、寫事件等等,將這些事件觸發到 PipeLine 中,由 PipeLine 充當的職責鏈來進行后續的處理。
-
職責鏈 PipeLine,它負責事件在職責鏈中的有序傳播,同時負責動態的 編排職責鏈,職責鏈可以選擇監聽和處理自己關心的事件,它可以攔截處理和向 后/向前傳播事件,不同的應用的 Handler 節點的功能也不同,通常情況下,往往會開發編解碼 Handler 用於消息的編解碼,它可以將外部的協議消息轉換成內部的 POJO 對象,這樣上層業務側只需要關心處理業務邏輯即可,不需要感知底層 的協議差異和線程模型差異,實現了架構層面的分層隔離。
-
業務邏輯處理層,可以分為兩類:
3.1. 純粹的業務邏輯處理,例如訂單處理。
3.2. 應用層協議管理,例如HTTP協議、FTP協議等。
netty的應用場景
- 互聯網行業
- 游戲行業
- 大數據行業
- 其它開源項目使用netty
IDEA 搭建 netty 應用工程
1、創建maven項目

2、添加 netty 依賴

<!-- https://mvnrepository.com/artifact/io.netty/netty-all -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.52.Final</version>
</dependency>