測試技術(shù)老大應(yīng)該有的修養(yǎng)

前兩篇文章我們用面向?qū)ο?/a>的思想,分析了一個操作系統(tǒng)的基本構(gòu)成和設(shè)計思路檀夹。今天我們繼續(xù)來聊Web和應(yīng)用服務(wù)器的設(shè)計筋粗,聊一下怎么高效的利用網(wǎng)絡(luò)IO和CPU資源。

 Socket對象

  上一篇我們聊到击胜,操作系統(tǒng)通過核心表中的對象來管理網(wǎng)絡(luò)IO亏狰,這個對象就是Socket類。我們來看一下整個讀取和發(fā)送數(shù)據(jù)的過程偶摔。

  我們把Socket對象比作快遞公司,他幫助大家收發(fā)各種快件促脉。Socket的IP辰斋、端口號和進程ID等信息就是貨物的具體地址。當(dāng)我們寄送快遞的時候瘸味,快遞員上門取貨宫仗,但是他不會直接送往目的地,而是先送往中轉(zhuǎn)站旁仿。為什么要這么做藕夫,因為把發(fā)往同一個地點的貨物合并發(fā)送,當(dāng)然效率更高枯冈。Socket發(fā)送數(shù)據(jù)也是如此毅贮,他會先將數(shù)據(jù)發(fā)送到緩沖區(qū)中,然后再一起發(fā)送尘奏。

  同樣滩褥,收快遞的時候,貨物也會先發(fā)送到配送點炫加,然后再由快遞員送貨上門瑰煎。Socket接收數(shù)據(jù)也是如此,會先存在緩沖區(qū)中俗孝。我們上一篇聊過酒甸,核心對象的數(shù)據(jù)是存在核心態(tài)地址空間中,用戶進程是沒法直接讀取的赋铝。我們需要把數(shù)據(jù)從核心態(tài)拷貝到用戶態(tài)插勤,才可以訪問。

 高效Socket讀取

  Socket的讀取和寫入默認都是同步的過程,對用戶線程來說就是阻塞的饮六。發(fā)送數(shù)據(jù)的情況還好其垄,不會等待多久;讀取數(shù)據(jù)就比較尷尬卤橄,因為我們不知道對方什么時候會發(fā)送數(shù)據(jù)绿满,也就不知道要等多久;對一個高性能的Web或者應(yīng)用服務(wù)器來說窟扑,解決這個問題就是最重要的喇颁。下面我們看看對這塊的解決方案是怎么演化的。

 同步阻塞模型

  最簡單的方式就是同步阻塞式讀取嚎货。對應(yīng)到服務(wù)器設(shè)計上橘霎,每來一個網(wǎng)絡(luò)請求,我們就生成一個線程來服務(wù)殖属。沒有請求數(shù)據(jù)的時候姐叁,這個線程就阻塞著。這就是同步阻塞模型洗显。

  同步阻塞模型最大的問題就是外潜,沒有數(shù)據(jù)的時候也要無謂的等待。這種設(shè)計的確會浪費線程和Socket資源挠唆,但是這種模型足夠簡單处窥,開發(fā)容易。如果并發(fā)量并不大的情況玄组,可以考慮采用滔驾。

同步非阻塞模型

  我們改進一下,在讀取數(shù)據(jù)之前俄讹,先檢測一下哆致,如果這時沒有數(shù)據(jù),就先去干點別的颅悉。這就是同步非阻塞模型沽瞭。

  采用這個模型,只需要Socket讀取數(shù)據(jù)的時候設(shè)置成非阻塞就可以剩瓶。但是這種模型缺點也很大驹溃,每個用戶線程總要輪詢?nèi)z測,如果一直沒有數(shù)據(jù)延曙,就白白浪費了計算資源豌鹤。

多路復(fù)用模型

再優(yōu)化一下,如果我們只用一個線程去做所有Socket的檢測工作枝缔,當(dāng)真正有數(shù)據(jù)到達的時候布疙,再提醒用戶線程去處理蚊惯。這樣就很好的解決了同步非阻塞模型的缺點。這就是多路復(fù)用模型灵临。Linux的epoll就是這樣的方式截型。

  這里我們要考慮一點,多路復(fù)用模型只有一個線程做檢測工作儒溉,增加了服務(wù)器處理請求的能力宦焦,但是如果并發(fā)量并不大的時候,其實性能并沒有提高顿涣。

  異步模型

前面所說的各種模型波闹,都需要我們自己做大量的工作。有沒有一種方式涛碑,讓操作系統(tǒng)把全部工作承包了呢精堕。當(dāng)然是有的。操作系統(tǒng)來監(jiān)聽Socket蒲障,當(dāng)有數(shù)據(jù)到來時歹篓,讀取這個數(shù)據(jù),拷貝數(shù)據(jù)到用戶態(tài)進程空間揉阎,完成這一切工作后滋捶,再來告知我們。這就是異步模型余黎,Windows操作系統(tǒng)的完成端口模式就是這樣的方式。

總結(jié)一下载萌,對服務(wù)器設(shè)計來說惧财,高效管理網(wǎng)絡(luò)IO和CPU資源很重要,我們聊了4種不同的模型設(shè)計扭仁。

?

?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垮衷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子乖坠,更是在濱河造成了極大的恐慌搀突,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,294評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熊泵,死亡現(xiàn)場離奇詭異仰迁,居然都是意外死亡,警方通過查閱死者的電腦和手機顽分,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評論 3 385
  • 文/潘曉璐 我一進店門徐许,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卒蘸,你說我怎么就攤上這事雌隅。” “怎么了?”我有些...
    開封第一講書人閱讀 157,790評論 0 348
  • 文/不壞的土叔 我叫張陵恰起,是天一觀的道長修械。 經(jīng)常有香客問我,道長检盼,這世上最難降的妖魔是什么肯污? 我笑而不...
    開封第一講書人閱讀 56,595評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮梯皿,結(jié)果婚禮上仇箱,老公的妹妹穿的比我還像新娘。我一直安慰自己东羹,他們只是感情好剂桥,可當(dāng)我...
    茶點故事閱讀 65,718評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著属提,像睡著了一般权逗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冤议,一...
    開封第一講書人閱讀 49,906評論 1 290
  • 那天斟薇,我揣著相機與錄音,去河邊找鬼恕酸。 笑死堪滨,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蕊温。 我是一名探鬼主播袱箱,決...
    沈念sama閱讀 39,053評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼义矛!你這毒婦竟也來了发笔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,797評論 0 268
  • 序言:老撾萬榮一對情侶失蹤凉翻,失蹤者是張志新(化名)和其女友劉穎了讨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體制轰,經(jīng)...
    沈念sama閱讀 44,250評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡前计,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,570評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了艇挨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片残炮。...
    茶點故事閱讀 38,711評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缩滨,靈堂內(nèi)的尸體忽然破棺而出势就,到底是詐尸還是另有隱情泉瞻,我是刑警寧澤,帶...
    沈念sama閱讀 34,388評論 4 332
  • 正文 年R本政府宣布苞冯,位于F島的核電站袖牙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏舅锄。R本人自食惡果不足惜鞭达,卻給世界環(huán)境...
    茶點故事閱讀 40,018評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望皇忿。 院中可真熱鬧畴蹭,春花似錦、人聲如沸鳍烁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幔荒。三九已至糊闽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間爹梁,已是汗流浹背右犹。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姚垃,地道東北人念链。 一個月前我還...
    沈念sama閱讀 46,461評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像积糯,于是被迫代替她去往敵國和親钓账。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,595評論 2 350

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

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 29,340評論 8 265
  • 1.感恩自己調(diào)整心態(tài)絮宁,此刻已經(jīng)滿血復(fù)活了。全身充滿了能量服协,這種滿足感很好绍昂,精神可佳。 2.感恩自己的規(guī)劃偿荷。打造一個...
    安好生活家閱讀 156評論 0 0
  • 一說起古裝電影窘游,腦海里第一個冒出來的必定是李安的《臥虎藏龍》,然后是王晶等人執(zhí)導(dǎo)的香港早期古龍電影……那些刀光劍影...
    小言可可_KarryOn閱讀 217評論 0 0
  • 我承認自己是一個并不熱衷寫作的人跳纳,也不擅長寫作忍饰,簡書卸了又裝,感覺還是應(yīng)該留下來寺庄。記錄些東西艾蓝,畢竟自己是漢語言文...
    嘻錦閱讀 180評論 1 4
  • 看了《輸贏》這本商戰(zhàn)小說后才發(fā)現(xiàn)力崇,銷售可以做成釜底抽薪,銷售團隊可以強大到天衣無縫赢织。人際關(guān)系也可以復(fù)雜成超乎想象亮靴。...