Netty 概念梳理(未完待續(xù))

目標
網(wǎng)絡(luò)通信領(lǐng)域知識九杂、技能的提升
方便后續(xù)項目Netty實戰(zhàn)

主要學習內(nèi)容

  1. 概念
  2. 源碼
  3. 黑科技
  4. ByteBuf todo

1、Netty概念梳理

1.1EventLoopGroup 口叙、 EventLoopChannel 的關(guān)系

image.png
  • Channel 是 Java NIO 的一個基本構(gòu)造。A nexus to a network socket or a component which is capable of I/O operations such as read, write, connect, and bind.
  • EventLoop 本身只由一個線程驅(qū)動站削,其處理了一個 Channel 的所有 I/O 事件攘蔽,并且在該
    EventLoop 的整個生命周期內(nèi)都不會改變。
  • EventLoopGroup 包含一個或者多個 EventLoop;
    注意政模,在這種設(shè)計中岗宣,一個給定 Channel 的 I/O 操作都是由相同的 Thread 執(zhí)行的,實際
    上消除了對于同步的需要淋样。

1.2ChannelHandler 耗式、 ChannelPipelineChannelHandlerContext的關(guān)系

image.png
  • Netty 的主要組件是 ChannelHandler,用于實現(xiàn)所有處理入站和出站數(shù)據(jù)的應用程序邏輯趁猴。ChannelHandler的方法對應一個事件刊咳。
  • ChannelPipeline 提供了 ChannelHandler 鏈的容器。
  • 當 ChannelHandler 被添加到 ChannelPipeline 時儡司,它將會被分配一個 ChannelHandlerContext娱挨,其代表了 ChannelHandler 和 ChannelPipeline 之間的綁定。雖然這個對象可以被用于獲取底層的 Channel捕犬,但是它主要還是被用于寫出站數(shù)據(jù)跷坝。
  • ChannelHandler 的事件方法都有一個 ChannelHandlerContext參數(shù)。通過使用作為參數(shù)傳遞到每個方法的 ChannelHandlerContext或听,事件可以被傳遞給當前ChannelHandler 鏈中的下一個 ChannelHandler探孝。
  • 在Netty中笋婿,有兩種發(fā)送消息的方式誉裆。你可以直接寫到Channel中,也可以 寫到和Channel- Handler 相關(guān)聯(lián)的 ChannelHandlerContext 對象中缸濒。前一種方式將會導致消息從 Channel- Pipeline 的尾端開始流動足丢,而后者將導致消息從 ChannelPipeline 中的下一個 Channel- Handler 開始流動粱腻。

1.3主要ChannelHandler及主要事件

image.png

1.4 ChannelPipeline

1.5 ChannelHandlerContext

1.6 EventLoop

Executor的執(zhí)行邏輯


image.png

為了解決上述問題,Netty 采用了串行化設(shè)計理念斩跌,從消息的讀取绍些、編碼以及后續(xù) Handler 的執(zhí)行,始終都由 IO 線程 NioEventLoop 負責耀鸦,這就意外著整個流程不會進行線程上下文的切換柬批,數(shù)據(jù)也不會面臨被并發(fā)修改的風險,

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末袖订,一起剝皮案震驚了整個濱河市氮帐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洛姑,老刑警劉巖上沐,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異楞艾,居然都是意外死亡参咙,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門硫眯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蕴侧,“玉大人,你說我怎么就攤上這事舟铜「暧” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵谆刨,是天一觀的道長塘娶。 經(jīng)常有香客問我,道長痊夭,這世上最難降的妖魔是什么刁岸? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮她我,結(jié)果婚禮上虹曙,老公的妹妹穿的比我還像新娘。我一直安慰自己番舆,他們只是感情好酝碳,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恨狈,像睡著了一般疏哗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上禾怠,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天返奉,我揣著相機與錄音贝搁,去河邊找鬼。 笑死芽偏,一個胖子當著我的面吹牛雷逆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播污尉,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼膀哲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了被碗?” 一聲冷哼從身側(cè)響起等太,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛮放,沒想到半個月后缩抡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡包颁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年瞻想,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娩嚼。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡蘑险,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出岳悟,到底是詐尸還是另有隱情佃迄,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布贵少,位于F島的核電站呵俏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏滔灶。R本人自食惡果不足惜普碎,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望录平。 院中可真熱鬧麻车,春花似錦、人聲如沸斗这。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽表箭。三九已至赁咙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背序目。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留伯襟,地道東北人猿涨。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像姆怪,于是被迫代替她去往敵國和親叛赚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

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