NETTY框架核心模塊概述

netty是一個NIO通信框架,但是要用好netty,需要深入理解JAVA IO, NIO以及netty NIO框架的實現方式,本文簡單描述netty的核心模塊。如下圖(來自netty.io首頁)所示,netty包含三個模塊:傳輸服務,支持的協議和核心模塊,我們結合4.1.14.final源代碼介紹三個模塊。


netty.png

  傳輸模塊。傳輸模塊對應的是io.netty.channels包下面實現的的類tcp協議的channel類,channel類提供組合java 對應的channel和從java channel讀寫數據的功能,注冊IO線程,引用channePipeline三類主要功能。channel是連接的抽象,其是將java channel, 線程,pipeline三則相結合的關鍵所在。
  核心模塊。核心模塊在源代碼中對應channelPipeline所管理的東西。byteBuffer提供了數據緩存和傳輸的機制,同意交互api定義了channel,pipeline,handler,context的統一接口,事件機制是handler之間,handler與channel之間交互的機制。
  協議支持。本質上都是handler, 在netty中,協議就是一堆handler的有序組合。tls, 壓縮解壓,解碼編碼等等,本質上都是對底層channel數據流的粘包/拆包操作。
  該圖只是邏輯上的核心模塊劃分, 從閱讀源代碼的角度來講,我個人認為有如下核心模塊。
  netty引擎模塊,包含bootstrap, NioEventLoop, NioEventLoopGroup等相關類。bootstrap負責啟動程序,創建channel, 初始化配置channel; eventLoop相關類負責利用selector監控所注冊的channel, 發起channel的讀和寫,是真正的netty引擎,同事eventLoop還負責netty task/scheduedTask的執行。
  channel模塊。包含各種協議的channel, channelPipeline相關類,channel中包含對應的unsafe,該類中實現了真正對channel的操作;channelpipeline組織和管理channel上的所有handler,是責任鏈模式的經典實現。
  handler模塊.這個模塊是對應應用層協議的實現,包含tls, http等協議的解析,該模塊的代碼可以看一些通用的協議和基礎handler.
netty系列的文章將逐步介紹:

  • netty的入口--bootstrap
  • netty的發動機--NioEventLoop/NioEventLoopGroup
  • TCP的channel--NioSocketChannel/NioServerSocketChannel
  • 責任鏈模式--channelPipeline
  • netty的數據緩存--byteBuffer
  • netty的future/listener回調模式
  • netty的連接池
  • netty安全--TLS
  • http協議解析
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前奏 https://tech.meituan.com/2016/11/04/nio.html 綜述 netty通...
    jiangmo閱讀 5,900評論 0 13
  • netty常用API學習 netty簡介 Netty是基于Java NIO的網絡應用框架. Netty是一個NIO...
    花丶小偉閱讀 6,039評論 0 20
  • Netty是一個高性能事件驅動的異步的非堵塞的IO(NIO)框架,用于建立TCP等底層的連接,基于Netty可以建...
    我是解憂鴨鋪鴨閱讀 1,339評論 0 2
  • 前言 問題 現如今我們使用通用的應用程序或者類庫來實現系統之間地互相訪問。例如,我們經常使用一個HTTP客戶端來從...
    Kohler閱讀 783評論 0 2
  • 1、Netty基礎入門 Netty是由JBOSS提供的一個java開源框架。Netty提供異步的、事件驅動的網絡應...
    我是嘻哈大哥閱讀 4,703評論 0 31