Reactor模型學習

一淳附、背景

對于應用服務器议慰,CPU的處理速度是要遠遠快于IO速度的,如果CPU為了IO操作而阻塞顯然是不劃算的奴曙。

處理方式一:分為多進程或者線程去進行處理别凹。缺點:增加一些進程切換的開銷。

處理方式二:事件驅動(或者叫回調的方式)洽糟,應用業(yè)務向一個中間人注冊一個回調(event handler)炉菲,當IO就緒后,就這個中間人產生一個事件坤溃,并通知此handler進行處理拍霜。

Reactor為事件驅動中的中間人,它接受所有handler的注冊薪介,并負責檢查操作系統(tǒng)O是否就緒祠饺,在就緒后就調用指定handler進行處理。它是一個不斷等待和循環(huán)的單獨進程(線程)汁政。

關于NIO中的Reactor模式道偷,請參考Doug Lea的《Scalable IO in Java》


二记劈、Reactor的幾種模式

在web服務中勺鸦,很多都涉及基本的操作:read request、decode request目木、process service换途、encod reply、send reply等刽射。

1 單線程模式

這是最簡單的單Reactor單線程模型怀跛。Reactor線程是個多面手,負責多路分離套接字柄冲,Accept新連接吻谋,并分派請求到處理器鏈中。該模型適用于處理器鏈中業(yè)務處理組件能快速完成的場景现横。不過這種單線程模型不能充分利用多核資源漓拾,所以實際使用的不多。


2 多線程模式(單Reactor)

該模型在事件處理器(Handler)鏈部分采用了多線程(線程池)戒祠,也是后端程序常用的模型骇两。

3 多線程模式(主從Reactor)

比起第二種模型,它是將Reactor分成兩部分姜盈,mainReactor負責監(jiān)聽并accept新連接低千,然后將建立的socket通過多路復用器(Acceptor)分派給subReactor。subReactor負責多路分離已連接的socket,讀寫網絡數據示血;業(yè)務處理功能棋傍,其交給worker線程池完成。通常难审,subReactor個數上可與CPU個數等同瘫拣。(主Reactor用于響應連接請求,從Reactor用于處理IO操作請求8婧啊)

好處:因為subReactor也會執(zhí)行一些比較耗時的IO操作麸拄,例如消息的讀寫,使用多個線程去執(zhí)行黔姜,則更加有利于發(fā)揮CPU的運算能力拢切,減少IO等待時間。


參考:

http://blog.csdn.net/u013074465/article/details/46276967

http://www.reibang.com/p/2461535c38f3

https://github.com/code4craft/netty-learning/blob/master/posts/ch4-reactor.md

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末秆吵,一起剝皮案震驚了整個濱河市失球,隨后出現的幾起案子,更是在濱河造成了極大的恐慌帮毁,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件豺撑,死亡現場離奇詭異烈疚,居然都是意外死亡,警方通過查閱死者的電腦和手機聪轿,發(fā)現死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門爷肝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人陆错,你說我怎么就攤上這事灯抛。” “怎么了音瓷?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵对嚼,是天一觀的道長。 經常有香客問我绳慎,道長纵竖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任杏愤,我火速辦了婚禮靡砌,結果婚禮上,老公的妹妹穿的比我還像新娘珊楼。我一直安慰自己通殃,他們只是感情好,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布厕宗。 她就那樣靜靜地躺著画舌,像睡著了一般堕担。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上骗炉,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天照宝,我揣著相機與錄音,去河邊找鬼句葵。 笑死厕鹃,一個胖子當著我的面吹牛,可吹牛的內容都是我干的乍丈。 我是一名探鬼主播剂碴,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼轻专!你這毒婦竟也來了忆矛?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤请垛,失蹤者是張志新(化名)和其女友劉穎催训,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體宗收,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡漫拭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了混稽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片采驻。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖匈勋,靈堂內的尸體忽然破棺而出礼旅,到底是詐尸還是另有隱情,我是刑警寧澤洽洁,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布痘系,位于F島的核電站,受9級特大地震影響饿自,放射性物質發(fā)生泄漏碎浇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一璃俗、第九天 我趴在偏房一處隱蔽的房頂上張望奴璃。 院中可真熱鬧,春花似錦城豁、人聲如沸苟穆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雳旅。三九已至跟磨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間攒盈,已是汗流浹背抵拘。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留型豁,地道東北人僵蛛。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像迎变,于是被迫代替她去往敵國和親充尉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容