netty實戰 netty介紹和應用場景


netty高性能淺析

netty的介紹

  1. Netty 是由 JBOSS 提供的一個 Java 開源框架,現為 Github上的獨立項目

  2. Netty 是一個異步的、基於事件驅動的網絡應用框架,用以快速開發高性能、高可靠性的網絡 IO 程序。

  3. Netty主要針對在TCP協議下,面向Clients端的高並發應用,或者Peer-to-Peer場景下的大量數據持續傳輸的應用。

  4. Netty本質是一個NIO框架,適用於服務器通訊相關的多種應用場景

  5. 要透徹理解Netty , 需要先學習 NIO , 這樣我們才能閱讀 Netty 的源碼。

netty 總體架構

img

Netty架構分析

Netty 采用了比較典型的三層網絡架構進行設計,邏輯架構圖如下所示:

img
  1. Reactor 通信調度層,它由一系列輔助類完成,包括 Reactor 線程 NioEventLoop 以及其父類、NioSocketChannel/NioServerSocketChannel 以及其父類、ByteBuffer 以及由其衍生出來的各種 Buffer、Unsafe 以及其衍生出的各種內部類等。該層的主要職責就是監聽網絡的讀寫和連接操作負責將網絡層的數據讀取到內存緩沖區中,然后觸發各種網絡事件,例如連接創建、連接激活、讀事件、寫事件等等,將這些事件觸發到 PipeLine 中,由 PipeLine 充當的職責鏈來進行后續的處理。

  2. 職責鏈 PipeLine,它負責事件在職責鏈中的有序傳播,同時負責動態的 編排職責鏈,職責鏈可以選擇監聽和處理自己關心的事件,它可以攔截處理和向 后/向前傳播事件,不同的應用的 Handler 節點的功能也不同,通常情況下,往往會開發編解碼 Handler 用於消息的編解碼,它可以將外部的協議消息轉換成內部的 POJO 對象,這樣上層業務側只需要關心處理業務邏輯即可,不需要感知底層 的協議差異和線程模型差異,實現了架構層面的分層隔離。

  3. 業務邏輯處理層,可以分為兩類:

    3.1. 純粹的業務邏輯處理,例如訂單處理。

    3.2. 應用層協議管理,例如HTTP協議、FTP協議等。

netty的應用場景

  • 互聯網行業
  • 游戲行業
  • 大數據行業
  • 其它開源項目使用netty

IDEA 搭建 netty 應用工程

1、創建maven項目

image-20201011205734183

2、添加 netty 依賴

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

3、開發 Netty 服務端

4、開發 Netty 客戶端

5、測試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM