Netty高性能架構模型介紹

  上一篇我們介紹了Reactor模式,本文我們就來具體分析下Netty中的架構模型到底是怎麼樣的。

Netty模型介紹

1.工作原理-簡單介紹

  Netty 主要基於主從 Reactors 多線程模型(如圖)做了一定的改進,其中主從 Reactor 多線程模型有多個 Reactor.

在這裏插入圖片描述

流程描述:

  1. BossGroup 線程維護Selector , 只關注Accecpt
  2. 當接收到Accept事件,獲取到對應的SocketChannel, 封裝成 NIOScoketChannel並註冊到Worker 線程(事件循環), 並進行維護
  3. 當Worker線程監聽到selector 中通道發生自己感興趣的事件後,就進行處理(就由handler), 注意handler 已經加入到通道

2.工作原理-進階介紹

  在上面的基礎上細化我們再看

在這裏插入圖片描述

3.工作原理-詳細介紹

  循序漸進的我們來看看最終版的原理圖

在這裏插入圖片描述

  1. Netty抽象出兩組線程池 BossGroup 專門負責接收客戶端的連接, WorkerGroup 專門負責網絡的讀寫
  2. BossGroup 和 WorkerGroup 類型都是 NioEventLoopGroup
  3. NioEventLoopGroup 相當於一個事件循環組, 這個組中含有多個事件循環 ,每一個事件循環是 NioEventLoop
  4. NioEventLoop 表示一個不斷循環的執行處理任務的線程, 每個NioEventLoop 都有一個selector , 用於監聽綁定在其上的socket的網絡通訊
  5. NioEventLoopGroup 可以有多個線程, 即可以含有多個NioEventLoop
  6. 每個Boss NioEventLoop 循環執行的步驟有3步

輪詢accept 事件
處理accept 事件 , 與client建立連接 , 生成NioScocketChannel , 並將其註冊到某個worker NIOEventLoop 上的 selector
處理任務隊列的任務 , 即 runAllTasks

  1. 每個 Worker NIOEventLoop 循環執行的步驟
    輪詢read, write 事件
    處理i/o事件, 即read , write 事件,在對應NioScocketChannel 處理
    處理任務隊列的任務 , 即 runAllTasks
  2. 每個Worker NIOEventLoop 處理業務時,會使用pipeline(管道), pipeline 中包含了 channel , 即通過pipeline 可以獲取到對應通道, 管道中維護了很多的 處理器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章