• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            那誰(shuí)的技術(shù)博客

            感興趣領(lǐng)域:高性能服務(wù)器編程,存儲(chǔ),算法,Linux內(nèi)核
            隨筆 - 210, 文章 - 0, 評(píng)論 - 1183, 引用 - 0
            數(shù)據(jù)加載中……

            從半同步-半異步模式談服務(wù)器的設(shè)計(jì)

            半同步-半異步模式,最早應(yīng)該是由ACE的作者提出,原文在這里.

            簡(jiǎn)而言之,所謂的半同步半異步模式分為三個(gè)組成模塊:同步處理模塊,隊(duì)列模塊,異步處理模塊.三個(gè)模塊之間的交互關(guān)系如圖:


            (注:上圖出自這里)
            幾個(gè)模塊的之間的交互為:異步模塊接收可能會(huì)異步到來(lái)的各種事件(I/O,信號(hào)等),然后將它們放入隊(duì)列中,而同步模塊一般只有一種動(dòng)作,就是不停的從隊(duì)列中取出消息進(jìn)行處理.

            半同步-半異步模式的出現(xiàn)是為了給服務(wù)器的功能進(jìn)行劃分,盡可能將的可能阻塞的操作放在同步模塊中,這樣不會(huì)影響到異步模塊的處理.
            舉個(gè)例子說(shuō)明.
            假設(shè)現(xiàn)在有一個(gè)服務(wù)器,在接收完客戶端請(qǐng)求之后會(huì)去數(shù)據(jù)庫(kù)查詢,這個(gè)查詢可能會(huì)很慢.這時(shí),如果還是采用的把接收客戶端的連接和處理客戶端的請(qǐng)求(在這里這個(gè)處理就是查詢數(shù)據(jù)庫(kù))放在一個(gè)模塊中來(lái)處理,很可能將會(huì)有很多連接的處理響應(yīng)非常慢.
            此時(shí),考慮使用半同步半異步的模式,開(kāi)一個(gè)進(jìn)程,使用多路復(fù)用IO(如epoll/select)等監(jiān)聽(tīng)客戶端的連接,接收到新的連接請(qǐng)求之后就將這些請(qǐng)求存放到通過(guò)某種IPC方式實(shí)現(xiàn)的消息隊(duì)列中,同時(shí),還有N個(gè)處理進(jìn)程,它們所做的工作就是不停的從消息隊(duì)列中取出消息進(jìn)行處理.這樣的劃分,將接收客戶端請(qǐng)求和處理客戶端請(qǐng)求劃分為不同的模塊,相互之間的通過(guò)IPC進(jìn)行通訊,將對(duì)彼此功能的影響限制到最小.

            然后,不是每種請(qǐng)求下都適合使用半同步半異步模式的.

            我之前深入閱讀過(guò)ligty的代碼,它的設(shè)計(jì)是monitor+worker多進(jìn)程 + 多路復(fù)用IO + 狀態(tài)機(jī)的架構(gòu).也就是說(shuō),每個(gè)worker進(jìn)程負(fù)責(zé)接收客戶端連接和處理客戶端連接的全過(guò)程,每個(gè)過(guò)程都會(huì)記錄一個(gè)狀態(tài),比如現(xiàn)在在接收包頭,如果這次的接收不是因?yàn)檫B接關(guān)閉的原因?qū)е碌慕邮斟e(cuò)誤,那么就將這個(gè)客戶端的fd放入多路復(fù)用IO中,等待著下一次根據(jù)這次保存的狀態(tài)進(jìn)入狀態(tài)機(jī)中進(jìn)行處理.

            簡(jiǎn)單的說(shuō),在ligty中,一個(gè)worker子進(jìn)程全權(quán)負(fù)責(zé)了接收和處理的全過(guò)程,并沒(méi)有按照上面半同步半異步的劃分來(lái)設(shè)計(jì).

            再后來(lái),我大概看過(guò)一些nginx的代碼,細(xì)節(jié)之處可能不一樣,但是就服務(wù)器總體的架構(gòu)而言,是與ligty的設(shè)計(jì)差不多的.

            這兩個(gè)服務(wù)器是目前比較快的web服務(wù)器了,沒(méi)有采用多么復(fù)雜的模式.

            那么為什么對(duì)于web服務(wù)器而言,不需要使用半同步半異步也可以達(dá)到非常高的效率呢?我想,這與服務(wù)器的業(yè)務(wù)有關(guān).對(duì)于web服務(wù)器而言,大部分的時(shí)間都花在了IO處理上,比如監(jiān)聽(tīng)服務(wù)器端口,接收客戶端連接,根據(jù)客戶端的請(qǐng)求發(fā)送文本文件內(nèi)容到客戶端去,這里的操作,基本上沒(méi)有太可能會(huì)造成阻塞的地方,也就是說(shuō),處理完成一個(gè)客戶端請(qǐng)求的全過(guò)程對(duì)web服務(wù)器而言是非常快的.

            所以,要回答這個(gè)問(wèn)題,需要看具體的業(yè)務(wù)需求.打個(gè)比方,如果處理一個(gè)客戶端請(qǐng)求需要10s,那么完全有一個(gè)模塊全部處理不是一個(gè)很好的設(shè)計(jì);反之,如果處理一個(gè)請(qǐng)求只需要10ms,而進(jìn)程/線程間的切換就需要1s了,還將模塊進(jìn)行劃分就不必了.

            另外,回到半同步半異步模式的具體實(shí)現(xiàn)上,可以使用線程或者進(jìn)程,而隊(duì)列層則可以使用不同的IPC方式,有很多關(guān)于多線程多進(jìn)程孰優(yōu)孰劣的爭(zhēng)論,由于我沒(méi)有太多多線程的編程經(jīng)驗(yàn),也就不在這里進(jìn)一步說(shuō)明了.

            posted on 2009-11-22 14:51 那誰(shuí) 閱讀(11671) 評(píng)論(9)  編輯 收藏 引用 所屬分類: 服務(wù)器設(shè)計(jì)

            評(píng)論

            # re: 從半同步-半異步模式談服務(wù)器的設(shè)計(jì)  回復(fù)  更多評(píng)論   

            名稱很?chē)樔?
            但是機(jī)制很常見(jiàn),估計(jì)很多人都有意無(wú)意的用過(guò)
            也就是快速響應(yīng)慢慢處理
            2009-11-23 09:24 | LOGOS

            # re: 從半同步-半異步模式談服務(wù)器的設(shè)計(jì)[未登錄](méi)  回復(fù)  更多評(píng)論   

            ACE里面就有吧
            2009-12-10 21:28 | li

            # re: 從半同步-半異步模式談服務(wù)器的設(shè)計(jì)  回復(fù)  更多評(píng)論   

            When you are in uncomfortable position and have got no cash to move out from that, you will have to receive the <a href="http://lowest-rate-loans.com/topics/home-loans">home loans</a>. Just because that will help you unquestionably. I take term loan every time I need and feel OK because of this.
            2010-06-01 20:07 | DeliaRoberts

            # re: 從半同步-半異步模式談服務(wù)器的設(shè)計(jì)  回復(fù)  更多評(píng)論   

            This can be the really good favour for the dissertation writing service to use your superior thought just about this topic for the legal dissertation composing. So, all the students will have got an opportunity to order the premium level thesis.
            2010-06-15 11:41 | dissertation

            # re: 從半同步-半異步模式談服務(wù)器的設(shè)計(jì)  回復(fù)  更多評(píng)論   

            People will have more knowledge just about this post, if buy custom essay papers and written essay at the essay writing service!
            2010-06-17 21:12 | Buy essay

            # re: 從半同步-半異步模式談服務(wù)器的設(shè)計(jì)  回復(fù)  更多評(píng)論   

            Good students would not have difficulties with their sports essay paper composing, just because the custom papers writing corporations can sell essays of premium quality.
            2010-08-05 10:05 | dance essays

            # re: 從半同步-半異步模式談服務(wù)器的設(shè)計(jì)  回復(fù)  更多評(píng)論   

            The day before yesterday I used to be disappointed just because of my critical essay writing task. Nevertheless, my father told to look for experienced custom writing service. Hence, I did it and reached a top of my career.
            2010-10-07 12:12 | online essays

            # re: 從半同步-半異步模式談服務(wù)器的設(shè)計(jì)  回復(fù)  更多評(píng)論   

            學(xué)習(xí)服務(wù)器的一些代碼模式。
            2015-06-26 13:03 | 王小亮
            久久乐国产综合亚洲精品| 久久久久久久久久久久中文字幕 | 国内精品久久久久久久涩爱| 久久久久久久精品成人热色戒| 久久人妻少妇嫩草AV蜜桃| 色综合久久88色综合天天| 久久―日本道色综合久久| 蜜桃麻豆www久久| 91精品无码久久久久久五月天 | 免费观看久久精彩视频| 国产精品99久久不卡| 无码人妻少妇久久中文字幕| 亚洲色欲久久久久综合网| 久久笫一福利免费导航| 亚洲精品国精品久久99热一| 久久午夜电影网| 深夜久久AAAAA级毛片免费看 | 久久婷婷国产剧情内射白浆| 久久久久久久久久久精品尤物| 午夜欧美精品久久久久久久| 精品久久777| 久久一本综合| 人妻无码αv中文字幕久久| 日韩欧美亚洲综合久久影院d3| 久久亚洲天堂| 国产精品久久久久影院嫩草| 久久本道久久综合伊人| 国产亚洲精品久久久久秋霞| 91久久成人免费| 久久综合九色综合网站| 精品免费久久久久国产一区| 色综合久久无码五十路人妻| 国产精品青草久久久久福利99 | 久久综合日本熟妇| 国产精品美女久久久久| 亚洲欧洲精品成人久久曰影片| 久久精品国产免费| 99久久香蕉国产线看观香| 久久综合丝袜日本网| 99久久夜色精品国产网站| 久久www免费人成精品香蕉|