NETTY框架核心模塊概述

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


netty.png

  傳輸模塊。傳輸模塊對應的是io.netty.channels包下面實現(xiàn)的的類tcp協(xié)議的channel類秽荤,channel類提供組合java 對應的channel和從java channel讀寫數(shù)據(jù)的功能甜奄,注冊IO線程,引用channePipeline三類主要功能窃款。channel是連接的抽象贺嫂,其是將java channel, 線程,pipeline三則相結(jié)合的關鍵所在雁乡。
  核心模塊第喳。核心模塊在源代碼中對應channelPipeline所管理的東西。byteBuffer提供了數(shù)據(jù)緩存和傳輸?shù)臋C制踱稍,同意交互api定義了channel,pipeline,handler,context的統(tǒng)一接口曲饱,事件機制是handler之間,handler與channel之間交互的機制珠月。
  協(xié)議支持扩淀。本質(zhì)上都是handler, 在netty中,協(xié)議就是一堆handler的有序組合啤挎。tls, 壓縮解壓驻谆,解碼編碼等等,本質(zhì)上都是對底層channel數(shù)據(jù)流的粘包/拆包操作庆聘。
  該圖只是邏輯上的核心模塊劃分, 從閱讀源代碼的角度來講胜臊,我個人認為有如下核心模塊。
  netty引擎模塊伙判,包含bootstrap, NioEventLoop, NioEventLoopGroup等相關類象对。bootstrap負責啟動程序,創(chuàng)建channel, 初始化配置channel; eventLoop相關類負責利用selector監(jiān)控所注冊的channel, 發(fā)起channel的讀和寫宴抚,是真正的netty引擎勒魔,同事eventLoop還負責netty task/scheduedTask的執(zhí)行甫煞。
  channel模塊。包含各種協(xié)議的channel, channelPipeline相關類冠绢,channel中包含對應的unsafe,該類中實現(xiàn)了真正對channel的操作抚吠;channelpipeline組織和管理channel上的所有handler,是責任鏈模式的經(jīng)典實現(xiàn)。
  handler模塊.這個模塊是對應應用層協(xié)議的實現(xiàn)弟胀,包含tls, http等協(xié)議的解析楷力,該模塊的代碼可以看一些通用的協(xié)議和基礎handler.
netty系列的文章將逐步介紹:

  • netty的入口--bootstrap
  • netty的發(fā)動機--NioEventLoop/NioEventLoopGroup
  • TCP的channel--NioSocketChannel/NioServerSocketChannel
  • 責任鏈模式--channelPipeline
  • netty的數(shù)據(jù)緩存--byteBuffer
  • netty的future/listener回調(diào)模式
  • netty的連接池
  • netty安全--TLS
  • http協(xié)議解析
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市邮利,隨后出現(xiàn)的幾起案子弥雹,更是在濱河造成了極大的恐慌垃帅,老刑警劉巖延届,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贸诚,居然都是意外死亡方庭,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門酱固,熙熙樓的掌柜王于貴愁眉苦臉地迎上來械念,“玉大人,你說我怎么就攤上這事运悲×浼酰” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵班眯,是天一觀的道長希停。 經(jīng)常有香客問我,道長署隘,這世上最難降的妖魔是什么宠能? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮磁餐,結(jié)果婚禮上违崇,老公的妹妹穿的比我還像新娘。我一直安慰自己诊霹,他們只是感情好羞延,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脾还,像睡著了一般肴楷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荠呐,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天赛蔫,我揣著相機與錄音砂客,去河邊找鬼。 笑死呵恢,一個胖子當著我的面吹牛鞠值,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播渗钉,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼彤恶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鳄橘?” 一聲冷哼從身側(cè)響起声离,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘫怜,沒想到半個月后术徊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡鲸湃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年赠涮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暗挑。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡笋除,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炸裆,到底是詐尸還是另有隱情垃它,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布烹看,位于F島的核電站国拇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏听系。R本人自食惡果不足惜贝奇,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望靠胜。 院中可真熱鬧掉瞳,春花似錦、人聲如沸浪漠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽址愿。三九已至该镣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間响谓,已是汗流浹背损合。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工省艳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嫁审。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓跋炕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親律适。 傳聞我的和親對象是個殘疾皇子辐烂,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

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