專利名稱:一種流水線Web服務(wù)器的系統(tǒng)及其工作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)服務(wù)器,尤其涉及一種流水線Web服務(wù)器的系統(tǒng)及其工作 方法。
背景技術(shù):
近年來(lái),提高網(wǎng)絡(luò)服務(wù)器的性能已經(jīng)成為處理以網(wǎng)絡(luò)為基礎(chǔ)的服務(wù)的關(guān)鍵 問題。很多在線事務(wù)處理和分布式服務(wù)的關(guān)鍵特征開始統(tǒng)治了高性能Web服務(wù) 器的設(shè)計(jì),因?yàn)轭A(yù)料這些服務(wù)器會(huì)成為提供網(wǎng)絡(luò)為基礎(chǔ)的服務(wù)的瓶頸。為了提 高web服務(wù)器的性能有三類技術(shù)被提了出來(lái)軟件擴(kuò)展,硬件擴(kuò)展和基于簇
(cluster)的擴(kuò)展。軟件和硬件擴(kuò)展技術(shù)可增強(qiáng)單點(diǎn)服務(wù)器的性能。通常, 軟件為基礎(chǔ)的方法會(huì)盡力改進(jìn)Web服務(wù)器的緩沖(cache)命中率,從而降低 磁盤訪問延遲以滿足用戶的需求。另一方面,硬件擴(kuò)展通過(guò)向系統(tǒng)中加入更多 的處理器和內(nèi)存提供附加的計(jì)算能力。而以簇為基礎(chǔ)的方案通過(guò)利用單一域名 下的由同構(gòu)或異構(gòu)節(jié)點(diǎn)組成的機(jī)群來(lái)解決問題。這種方法被Google和e-Bay 有效地使用了 。
針對(duì)Web服務(wù)器人們已經(jīng)提出了 4種體系結(jié)構(gòu)。
第一種為MP (Multi-Process,多進(jìn)程)模型。該模型有一個(gè)進(jìn)程池,每
個(gè)進(jìn)程被用來(lái)執(zhí)行與服務(wù)一個(gè)請(qǐng)求相關(guān)的基本操作。因?yàn)槭褂昧硕噙M(jìn)程,很多 http請(qǐng)求能夠并發(fā)地被服務(wù)。Apache Web服務(wù)器當(dāng)初就采用的是MP模型。這
種模型的缺點(diǎn)是進(jìn)程間難以共享任何全局信息,例如共享的緩沖信息。與其它 模型相比, 一個(gè)MP模型的Web服務(wù)器需要更多的內(nèi)存以維持每個(gè)進(jìn)程有同等 的緩沖大小。所以,該種模型總的性能要低于其它的模型。
第二種為MT (Multi-Thread,多線程)模型。該模型很多有同一個(gè)共享 地址空間的核心線程(kernel thread)組成。每個(gè)線程處理一個(gè)客戶的請(qǐng)求, 獨(dú)立地執(zhí)行請(qǐng)求處理的步驟。這種模型的優(yōu)點(diǎn)是全部線程能夠共享任何全局信 息。特別地,全部線程共享數(shù)據(jù)緩沖。但是,不是全部操作系統(tǒng)支持核心線程,同時(shí),線程間共享數(shù)據(jù)緩沖可能導(dǎo)致很高的同步開銷。廣泛使用的Apache Web 服務(wù)器就升級(jí)到了MT模型。
第三種是SPED (Single-Process Event-Driven,單進(jìn)程事件驅(qū)動(dòng))模型。 該種模型使用非阻塞I/O操作。SPED能夠避免上下文切換和進(jìn)程/線程間的同 步開銷。這個(gè)模型已經(jīng)被Zeus Technology公司實(shí)現(xiàn)。但是,這個(gè)模型中的非 阻塞I/O操作實(shí)際上也可能阻塞,特別是在由于目前操作系統(tǒng)的限制執(zhí)行磁盤 相關(guān)的操作時(shí)。因此,對(duì)于磁盤依賴負(fù)載SPED模型沒有表現(xiàn)得比MT模型好。
第四禾中是AMPED (Asynchronous Multi—Process Event—Driven,異步多 進(jìn)程事件驅(qū)動(dòng))模型。該種模型可以減輕SPED模型的缺點(diǎn),其原型是Rice大 學(xué)的Flash服務(wù)器。它由一個(gè)主Web服務(wù)器進(jìn)程和很多主要用來(lái)處理I/O操作 的幫助線程組成。由于多個(gè)幫助者服務(wù)面向磁盤的請(qǐng)求,主Web服務(wù)器進(jìn)程就 可僅處理緩沖擊中請(qǐng)求。在該模型中,IPC (進(jìn)程間通信)和mmap (將文件或 其它對(duì)象映射進(jìn)內(nèi)存的系統(tǒng)調(diào)用)用來(lái)做信息交換。但是,這四個(gè)模型都是為 單CPU系統(tǒng)設(shè)計(jì)的,沒有考慮到硬件技術(shù)的最新發(fā)展——多核SMP和SoC技術(shù)。
近來(lái),Intel和AMD都爭(zhēng)相推出雙核甚至4核的CPU以瞄準(zhǔn)高性能服務(wù)器 市場(chǎng);同時(shí),I麗和Sony等公司聯(lián)合推出了有多達(dá)8個(gè)處理器單元的Cell芯 片,它們掀起了高性能服務(wù)器向多核/多線程技術(shù)的轉(zhuǎn)移,可以預(yù)見4核或者 8核SMP不久將推向市場(chǎng)。另一方面,隨著深亞微米技術(shù)的蓬勃發(fā)展,SoC體 系結(jié)構(gòu)在不久的將來(lái)將成為現(xiàn)實(shí),到那時(shí)擁有幾十億只晶體管的SoC將可能統(tǒng) 治高性能計(jì)算領(lǐng)域。例如,如果技術(shù)能夠降低到35nm,制造擁有多達(dá)32/64 處理器的SoC將成為可能。因此,網(wǎng)絡(luò)服務(wù)器必須采用多核SMP與SoC技術(shù)。
這就要求網(wǎng)絡(luò)服務(wù)器的體系結(jié)構(gòu)必須做出變革,以迎接新的硬件技術(shù)的發(fā)展。 為此, 一種新的Multi-Thread Pipelined (多線程流水線)Web服務(wù)器 體系結(jié)構(gòu)被提了出來(lái),它利用了MT模型的優(yōu)點(diǎn),但是通過(guò)限制進(jìn)程數(shù)量減輕 了同步的開銷。
SEDA (Staged Event Driven Architecture,分級(jí)事件驅(qū)動(dòng)架構(gòu))是加州 大學(xué)伯克利分校研究的一套優(yōu)秀的高性能互聯(lián)網(wǎng)服務(wù)器架構(gòu)模型。其設(shè)計(jì)目標(biāo) 是支持大規(guī)模并發(fā)處理、簡(jiǎn)化系統(tǒng)開發(fā)、支持處理監(jiān)測(cè)、支持系統(tǒng)資源管理。
其主要工作原理為將任務(wù)分解到不同的級(jí)(stage)中。每一級(jí)(stage)完成 一部分單獨(dú)的處理邏輯;各級(jí)之間性能隔離;獨(dú)立進(jìn)行負(fù)載調(diào)度。SEDA模型的結(jié)構(gòu)分為四個(gè)部分。
一個(gè)接受輸入的事件隊(duì)列(Event Queue)。
一個(gè)應(yīng)用開發(fā)者編寫的事件處理器(Event Handler)。
一個(gè)控制器,用于對(duì)執(zhí)行過(guò)程進(jìn)行控制,包括并發(fā)線程數(shù)量,批處理數(shù)量。
一個(gè)線程池(Thread Pool)用于并發(fā)處理。
請(qǐng)求的處理流程被劃分成5個(gè)不同的流水級(jí),接收的應(yīng)用在每一級(jí)以隊(duì)列 的形式分級(jí)執(zhí)行。每一級(jí)都可以被獨(dú)立管理,每級(jí)之間可以串行也可以并行工 作,或者兩者兼有。事件隊(duì)列使得每一級(jí)可以獨(dú)立進(jìn)行負(fù)載調(diào)度。
流水級(jí)的輸入通過(guò)事件隊(duì)列獲得。流水級(jí)的輸出會(huì)以事件形式推送到其他 流水級(jí)的事件隊(duì)列中。流水級(jí)之間的這種連接關(guān)系由應(yīng)用開發(fā)人員指定。
總的來(lái)說(shuō),SEDA架構(gòu)將應(yīng)用的整個(gè)處理過(guò)程分割為多個(gè)流水級(jí)。每個(gè)流 水級(jí)可以獨(dú)立進(jìn)行開發(fā)。同時(shí)流水級(jí)之間通過(guò)事件隊(duì)列來(lái)進(jìn)行通信,可以降低 耦合性。能夠以很小的成本來(lái)適應(yīng)將來(lái)的系統(tǒng)邏輯變化。同時(shí)系統(tǒng)提供了標(biāo)準(zhǔn) 的資源控制,使得應(yīng)用開發(fā)人員只需要專注于實(shí)現(xiàn)事件處理器的內(nèi)部邏輯。而 無(wú)須關(guān)注多線程、資源共享并且同時(shí)可以在運(yùn)行時(shí)對(duì)于每一個(gè)流水級(jí)的運(yùn)行情 況進(jìn)行監(jiān)測(cè)以及調(diào)整。
但是,以上方法存在如下局限性。
第一,事件隊(duì)列盡管減少了模塊間的耦合性,但是會(huì)降低響應(yīng)速度;
第二,沒有足夠可靠性上的隔離機(jī)制;
第三,流水級(jí)之間的不平衡性導(dǎo)致資源利用率低;
第四,流水線阻塞影響性能。
發(fā)明內(nèi)容
為了解決上述的技術(shù)問題,本發(fā)明提供了流水線Web服務(wù)器的系統(tǒng)及其工 作方法,能夠在流水線基礎(chǔ)上提高可靠性、增加資源流動(dòng)和實(shí)現(xiàn)動(dòng)態(tài)流水線。 本發(fā)明公開了一種流水線Web服務(wù)器的系統(tǒng),包括
分布式虛擬機(jī)監(jiān)控模塊,用于對(duì)所述Web服務(wù)器的部件進(jìn)行虛擬化,創(chuàng)建 多個(gè)虛擬機(jī);
所述虛擬機(jī),用于處理接收的客戶端發(fā)送的請(qǐng)求或上一流水級(jí)發(fā)送的請(qǐng) 求,在將處理結(jié)果作為一個(gè)請(qǐng)求發(fā)送給下一流水級(jí)時(shí),向Web服務(wù)器控制模塊申請(qǐng)下一流水級(jí),接收到所述Web服務(wù)器控制模塊回復(fù)后,將所述請(qǐng)求發(fā)送給 所述回復(fù)指定的下一流水級(jí)的虛擬機(jī);
所述Web服務(wù)器控制模塊,用于維護(hù)記錄可用虛擬機(jī)的虛擬機(jī)信息列表, 在接收到虛擬機(jī)發(fā)送的申請(qǐng)下一流水級(jí)的申請(qǐng)時(shí),運(yùn)用調(diào)度策略從所述虛擬機(jī) 信息列表中選擇下一流水級(jí)的虛擬機(jī),并將選擇的下一流水級(jí)的虛擬機(jī)的信息 回復(fù)給所述虛擬機(jī)。
所述虛擬機(jī)還用于在確定發(fā)送的請(qǐng)求被下一流水級(jí)處理完成時(shí),丟棄所述 請(qǐng)求。
所述虛擬機(jī)還用于周期地向所述Web服務(wù)器控制模塊發(fā)送心跳消息; 所述Web服務(wù)器控制模塊還用于當(dāng)未在預(yù)設(shè)時(shí)間內(nèi)接收到所述虛擬機(jī)的 心跳消息時(shí),將所述虛擬機(jī)從所述虛擬機(jī)信息列表中刪除。
所述虛擬機(jī)進(jìn)一步用于在接收到客戶端發(fā)送的請(qǐng)求時(shí),解析出URL,判斷 所述虛擬機(jī)的全局緩沖中是否有所述請(qǐng)求對(duì)應(yīng)的表項(xiàng),如果是,則獲取文件并 將文件發(fā)送給所述客戶端,否則,向所述Web服務(wù)器控制模塊申請(qǐng)下一流水級(jí), 接收到所述Web服務(wù)器控制模塊回復(fù)后,以所述URL為處理結(jié)果,將所述URL
作為一個(gè)請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水級(jí)的虛擬機(jī);在接收到所述請(qǐng)求 對(duì)應(yīng)的http響應(yīng)后,將所述響應(yīng)發(fā)送給所述客戶端。
所述虛擬機(jī)在獲取文件并將文件發(fā)送給所述客戶端時(shí)進(jìn)一步用于判斷所 述文件是否在所述虛擬機(jī)內(nèi),如果是,則將所述文件發(fā)送給所述客戶端;否則, 建立同所述文件所在虛擬機(jī)間的連接,將所述文件取回到所述虛擬機(jī),將所述 文件發(fā)送給所述客戶端。
所述虛擬機(jī)進(jìn)一步用于在接收到上一流水級(jí)發(fā)送的URL時(shí),解析URL,獲 得對(duì)應(yīng)的文件路徑,向所述Web服務(wù)器控制模塊申請(qǐng)下一流水級(jí),接收到所述 Web服務(wù)器控制模塊回復(fù)后,以所述文件路徑為處理結(jié)果,將所述文件路徑作 為一個(gè)請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水級(jí)的虛擬機(jī)。
所述虛擬機(jī)進(jìn)一步用于在接收到上一流水級(jí)發(fā)送的文件路徑時(shí),讀取所述 文件,將文件發(fā)送給接收對(duì)應(yīng)客戶端請(qǐng)求的虛擬機(jī)。
所述虛擬機(jī)還用于在接收到上一流水級(jí)的請(qǐng)求時(shí),回復(fù)第一確認(rèn)消息;在 接收到向下一流水級(jí)發(fā)送請(qǐng)求對(duì)應(yīng)的第一確認(rèn)消息或作為流水線最后一流水 級(jí)處理完成后,向上一流水級(jí)發(fā)送第二確認(rèn)消息;
9所述虛擬機(jī)在確定發(fā)送的請(qǐng)求被下一流水級(jí)執(zhí)行完成時(shí)進(jìn)一步用于在接 收到發(fā)送請(qǐng)求對(duì)應(yīng)的第二確認(rèn)消息時(shí),確定發(fā)送的請(qǐng)求被下一流水級(jí)處理完 成。
所述Web服務(wù)器控制模塊進(jìn)一步包括資源管理模塊、系統(tǒng)可用性模塊、 資源策略模塊;
所述資源管理模塊,用于向所述資源策略模塊提供虛擬機(jī)信息; 所述系統(tǒng)可用性模塊,用于維護(hù)記錄可用虛擬機(jī)的虛擬機(jī)信息列表; 所述資源策略模塊,用于根據(jù)所述虛擬機(jī)信息確定調(diào)度策略,在接收到所
述申請(qǐng)時(shí),運(yùn)用所述調(diào)度策略從所述虛擬機(jī)信息列表中選擇下一流水級(jí)的虛擬
機(jī),并回復(fù)所述虛擬機(jī)。
所述Web服務(wù)器控制模塊進(jìn)一步包括輔助模塊、系統(tǒng)可用性模塊、資源
策略模塊;
所述輔助模塊,用于向所述資源策略模塊提供緩沖信息; 所述系統(tǒng)可用性模塊,用于維護(hù)記錄可用虛擬機(jī)的虛擬機(jī)信息列表; 所述資源策略模塊,用于根據(jù)所述緩沖信息確定調(diào)度策略,在接收到所述 虛擬機(jī)發(fā)送的申請(qǐng)下一流水級(jí)的申請(qǐng)時(shí),運(yùn)用所述調(diào)度策略從所述虛擬機(jī)信息 列表中選擇下一流水級(jí)的虛擬機(jī),并回復(fù)所述虛擬機(jī)。
本發(fā)明還公開了一種流水線Web服務(wù)器的工作方法,包括 歩驟l,對(duì)所述Web服務(wù)器的部件進(jìn)行虛擬化,創(chuàng)建多個(gè)虛擬機(jī); 步驟2,虛擬機(jī)處理接收到的的客戶端發(fā)送的請(qǐng)求或上一流水級(jí)發(fā)送的請(qǐng) 求,如果需要將處理結(jié)果作為一個(gè)請(qǐng)求發(fā)送給下一流水級(jí),則向Web服務(wù)器控 制模塊申請(qǐng)下一流水級(jí);Web服務(wù)器控制模塊運(yùn)用調(diào)度策略從維護(hù)的虛擬機(jī)信 息列表中選擇下一流水級(jí)的虛擬機(jī),并將選擇的下一流水級(jí)的虛擬機(jī)的信息回 復(fù)給所述虛擬機(jī);所述虛擬機(jī)將所述請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水級(jí)的 虛擬機(jī)。
所述步驟2還包括
步驟121,所述虛擬機(jī)在確定發(fā)送的請(qǐng)求被下一流水級(jí)處理完成時(shí),丟棄 所述請(qǐng)求。
所述步驟1后還包括
步驟131,所述虛擬機(jī)周期地向所述Web服務(wù)器控制模塊發(fā)送心跳消息;步驟132,所述Web服務(wù)器控制模塊未在預(yù)設(shè)時(shí)間內(nèi)接收到所述虛擬機(jī)的 心跳消息后,將所述虛擬機(jī)從所述虛擬機(jī)信息列表中刪除。
所述步驟2進(jìn)一步包括
步驟141,在接收到客戶端發(fā)送的請(qǐng)求時(shí),解析出URL,判斷所述虛擬機(jī) 的全局緩沖中是否有所述請(qǐng)求對(duì)應(yīng)的表項(xiàng),如果是,執(zhí)行步驟142,否則執(zhí)行 步驟143;
步驟142,獲取文件并將所述文件發(fā)送給所述客戶端,
步驟143,向所述Web服務(wù)器控制模塊申請(qǐng)下一流水級(jí),Web服務(wù)器控制 模塊運(yùn)用調(diào)度策略從維護(hù)的虛擬機(jī)信息列表中選擇下一流水級(jí)的虛擬機(jī),并將 選擇的下一流水級(jí)的虛擬機(jī)的信息回復(fù)給所述虛擬機(jī),所述虛擬機(jī)以所述URL 為處理結(jié)果,將所述URL作為一個(gè)請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水級(jí)的虛 擬機(jī)。
所述歩驟142進(jìn)一步包括
歩驟151,判斷所述文件是否在所述虛擬機(jī)內(nèi),如果是,則執(zhí)行步驟152, 否則,執(zhí)行步驟153;
步驟152,將所述文件發(fā)送給所述客戶端;
步驟153,建立同所述文件所在虛擬機(jī)間的連接,將所述文件取回到所述 虛擬機(jī),將所述文件發(fā)送給所述客戶端。 所述步驟143后還包括
歩驟161,第二流水級(jí)的虛擬機(jī)在接收到URL,解析URL,獲得對(duì)應(yīng)的文 件路徑,向所述Web服務(wù)器控制模塊申請(qǐng)下一流水級(jí),Web服務(wù)器控制模塊運(yùn) 用調(diào)度策略從維護(hù)的虛擬機(jī)信息列表中選擇下一流水級(jí)的虛擬機(jī),并將選擇的 下一流水級(jí)的虛擬機(jī)的信息回復(fù)給所述虛擬機(jī),所述虛擬機(jī)以所述文件路徑為 處理結(jié)果,將所述文件路徑作為一個(gè)請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水級(jí)的 虛擬機(jī)。
所述步驟161后還包括
步驟171,第三流水級(jí)的虛擬機(jī)接收到上一流水級(jí)發(fā)送的文件路徑,讀取 所述文件,將讀取的文件發(fā)送給接收對(duì)應(yīng)客戶端請(qǐng)求的虛擬機(jī)。
所述步驟171后還包括接收客戶端請(qǐng)求的虛擬機(jī)接收到客戶端的請(qǐng)求對(duì) 應(yīng)的http響應(yīng)后,將所述響應(yīng)發(fā)送給所述客戶端。所述步驟2還包括,所述虛擬機(jī)在接收到上一流水級(jí)的請(qǐng)求時(shí),回復(fù)第一
確認(rèn)消息;在接收到發(fā)送請(qǐng)求對(duì)應(yīng)的第一確認(rèn)消息或作為流水線最后一流水級(jí) 執(zhí)行完成處理后,向上一流水級(jí)發(fā)送第二確認(rèn)消息;
所述步驟121進(jìn)一步為在接收到發(fā)送請(qǐng)求對(duì)應(yīng)的第二確認(rèn)消息時(shí),丟棄所 述請(qǐng)求。
所述調(diào)度策略基于虛擬機(jī)信息或緩沖信息。
本發(fā)明的有益效果在于,通過(guò)資源的動(dòng)態(tài)遷移可以更好地實(shí)現(xiàn)負(fù)載平衡、 提高資源利用率、進(jìn)行管理配置并且節(jié)能省電;由于各個(gè)流水級(jí)的虛擬機(jī)之間 對(duì)資源的需求在時(shí)空上不同,虛擬機(jī)之間的資源劃分可以超越操作系統(tǒng)對(duì)于進(jìn) 程或線程對(duì)資源的流動(dòng)的限制并且能夠硬件復(fù)用和資源動(dòng)態(tài)調(diào)度,實(shí)現(xiàn)了高
吞吐量、高可靠性和高資源利用率。
圖1是本發(fā)明流水線Web服務(wù)器的系統(tǒng)結(jié)構(gòu)圖2是請(qǐng)求進(jìn)入服務(wù)器的實(shí)施流程圖3是連接可靠性工作流示意圖4是本發(fā)明流水線Web服務(wù)器的工作方法的流程圖。
具體實(shí)施例方式
下面結(jié)合附圖,對(duì)本發(fā)明做進(jìn)一步的詳細(xì)描述。
本發(fā)明流水線劃分為多個(gè)流水級(jí),從而可以提高系統(tǒng)整體吞吐量。每一個(gè) 流水級(jí)都在虛擬機(jī)上執(zhí)行,采用動(dòng)態(tài)流水線,利用基于虛擬機(jī)的資源動(dòng)態(tài)流動(dòng), 從而可以提高資源利用率。
本發(fā)明流水線Web服務(wù)器的系統(tǒng)結(jié)構(gòu)如圖1所示。
Web服務(wù)器包括分布式虛擬機(jī)監(jiān)控模塊101、 Web服務(wù)器控制模塊102、 虛擬機(jī)103。
分布式虛擬機(jī)監(jiān)控模塊101 (DV薩),用于對(duì)所述Web服務(wù)器的部件進(jìn)行 虛擬化,創(chuàng)建多個(gè)虛擬機(jī)103。
分布式虛擬機(jī)監(jiān)控模塊101是Web服務(wù)器的基礎(chǔ)模塊,提供分布資源如 CPU、內(nèi)存、磁盤、網(wǎng)卡等部件的虛擬化,建立統(tǒng)一的資源空間及能力空間,創(chuàng)建和管理虛擬機(jī)103。從而實(shí)現(xiàn)計(jì)算資源在部件級(jí)的虛擬化,進(jìn)而實(shí)現(xiàn)資源
和能力在虛擬機(jī)103間的流動(dòng),在Web服務(wù)器內(nèi)的流動(dòng);對(duì)于Web服務(wù)器提供 各流水級(jí)虛擬機(jī)103以及提供虛擬機(jī)103相關(guān)信息的接口, Web服務(wù)器控制模 塊102能夠利用上述接口重啟虛擬機(jī)103,與虛擬機(jī)103建立連接獲得虛擬機(jī)
,自
I R尼、o
Web服務(wù)器控制模塊102,用于維護(hù)記錄可用虛擬機(jī)103的虛擬機(jī)信息列 表,在接收到虛擬機(jī)103發(fā)送的申請(qǐng)時(shí),運(yùn)用調(diào)度策略從虛擬機(jī)信息列表中選 擇下一流水級(jí)的虛擬機(jī),并回復(fù)該虛擬機(jī)103。
Web服務(wù)器控制模塊102,通過(guò)接收虛擬機(jī)103的啟動(dòng)和可用信息,檢測(cè) 虛擬機(jī)故障,維護(hù)可用的虛擬機(jī)信息列表;根據(jù)虛擬機(jī)103發(fā)來(lái)的請(qǐng)求下一流 水級(jí)的虛擬機(jī)的申請(qǐng),運(yùn)用調(diào)度策略,選擇可用的下一流水級(jí)虛擬機(jī),將其返 回給請(qǐng)求的虛擬機(jī)103。
Web服務(wù)器控制模塊102包括資源管理模塊121、系統(tǒng)可用性模塊122、 輔助模塊123、資源策略模塊124。
資源管理模塊121,用于向資源策略模塊124提供虛擬機(jī)信息。
資源管理模塊121中包括有虛擬機(jī)信息列表。
系統(tǒng)可用性模塊122,用于維護(hù)記錄可用虛擬機(jī)的虛擬機(jī)信息列表。 系統(tǒng)可用性模塊122保證系統(tǒng)中虛擬機(jī)的可用性,當(dāng)檢測(cè)到虛擬機(jī)103
故障時(shí),通知分布式虛擬機(jī)監(jiān)控模塊101重啟該虛擬機(jī)103。
系統(tǒng)可用性模塊122保證系統(tǒng)中各級(jí)服務(wù)的可用性,當(dāng)檢測(cè)到錯(cuò)誤時(shí),重
啟服務(wù)或者虛擬機(jī)103來(lái)保證系統(tǒng)的服務(wù)可用性;在新建立的虛擬機(jī)103加入
到系統(tǒng)中之前,需經(jīng)過(guò)該模塊的檢測(cè),確認(rèn)可用后才能加到系統(tǒng)的虛擬機(jī)信息
列表中。
輔助模塊123,用于向資源策略模塊124提供緩沖信息; 輔助模塊123記錄緩沖的相關(guān)信息,以實(shí)現(xiàn)協(xié)同緩沖相關(guān)的策略。 資源策略模塊124,用于根據(jù)虛擬機(jī)信息和/或緩沖信息確定調(diào)度策略,
在接收到虛擬機(jī)103的申請(qǐng)時(shí),運(yùn)用調(diào)度策略從虛擬機(jī)信息列表中選擇下一流
水級(jí)的虛擬機(jī),并回復(fù)該虛擬機(jī)103。
虛擬機(jī)103,用于處理接收的客戶端發(fā)送的請(qǐng)求或上一流水級(jí)發(fā)送的請(qǐng)
求,在將處理結(jié)果作為一個(gè)請(qǐng)求發(fā)送給下一流水級(jí)時(shí),向Web服務(wù)器控制模塊102申請(qǐng)下一流水級(jí),接收到Web服務(wù)器控制模塊102回復(fù)后,將請(qǐng)求發(fā)送給
回復(fù)指定的下一流水級(jí)的虛擬機(jī)。
虛擬機(jī)103還要定期向Web服務(wù)器控制模塊102發(fā)送心跳消息,以表明自
己可用。
虛擬機(jī)103的啟動(dòng)過(guò)程如下。
步驟l,當(dāng)虛擬機(jī)103啟動(dòng)時(shí),將自身信息告訴Web服務(wù)器控制模塊102。 步驟2, Web服務(wù)器控制模塊102將該虛擬機(jī)103的信息添加到虛擬機(jī)信 息列表中。
步驟3,該虛擬機(jī)103將Web服務(wù)器控制模塊102中已有的虛擬機(jī)信息信
息列表下載到本地。
步驟4,當(dāng)該虛擬機(jī)103自身初始化完成時(shí),向Web服務(wù)器控制模塊102 發(fā)送自身上線信息,即表示該虛擬機(jī)103可用。
步驟5, Web服務(wù)器控制模塊102收到虛擬機(jī)103的上線消息后,將其標(biāo)
識(shí)設(shè)為可用。
步驟6, Web服務(wù)器控制模塊102將該虛擬機(jī)103的可用信息記錄到虛擬 機(jī)信息列表,并告訴虛擬機(jī)信息列表中其它虛擬機(jī)103該虛擬機(jī)103可用。
當(dāng)請(qǐng)求進(jìn)入服務(wù)器時(shí),其具體實(shí)施過(guò)程如圖2所述。 步驟S201,第一流水級(jí)的虛擬機(jī)103接收從客戶端發(fā)來(lái)的請(qǐng)求,讀進(jìn)請(qǐng) 求,將請(qǐng)求解析為URL。
客戶端發(fā)送的請(qǐng)求及虛擬機(jī)發(fā)送的請(qǐng)求以數(shù)據(jù)包的形式。
在本級(jí)的全局緩沖中尋找是否有請(qǐng)求對(duì)應(yīng)的表項(xiàng),若存在且文件在本地, 則將文件直接回傳給客戶端;若存在但不在本地,則根據(jù)本級(jí)虛擬機(jī)103與文 件所在虛擬機(jī)103的連接,將文件取回本地并回傳給客戶端;若沒有對(duì)應(yīng)的表 項(xiàng),則向Web服務(wù)器控制模塊102中的資源策略模塊124申請(qǐng)下一流水級(jí)。
步驟S202,資源策略模塊124根據(jù)調(diào)度策略選擇下一流水級(jí),然后將選 擇的下一級(jí)流水傳給申請(qǐng)的第一流水級(jí)的虛擬機(jī)103。
步驟S203,第一流水級(jí)的虛擬機(jī)103根據(jù)收到的資源策略模塊124傳回 的有關(guān)下一流水級(jí)的信息,用持久連接與下一流水級(jí)進(jìn)行通信,URL為第一流 水級(jí)的虛擬機(jī)103的處理結(jié)果,將URL作為一個(gè)請(qǐng)求傳遞到第二流水級(jí)的虛擬 機(jī)103。
14步驟S204,第二流水級(jí)虛擬機(jī)103接收第一流水級(jí)發(fā)送來(lái)的URL,對(duì)URL 進(jìn)行解析,得到對(duì)應(yīng)的文件路徑,并向資源策略模塊124申請(qǐng)下一流水級(jí)的虛 擬機(jī)103。
步驟S205,資源策略模塊124根據(jù)調(diào)度策略選擇下一流水級(jí)的虛擬機(jī)103, 然后將選擇的下一流水級(jí)的虛擬機(jī)103傳給請(qǐng)求的第二流水級(jí)的虛擬機(jī)103。
步驟S206,第二流水級(jí)的虛擬機(jī)103根據(jù)收到的資源策略模塊124傳回 的有關(guān)下一流水級(jí)的信息,用持久連接與下一流水級(jí)的虛擬機(jī)103進(jìn)行通信, 文件路徑為第二流水級(jí)虛擬機(jī)103的處理結(jié)果,將文件路徑作為一個(gè)請(qǐng)求傳遞 到第三流水級(jí)的虛擬機(jī)103。
步驟S207,第三流水級(jí)的虛擬機(jī)103接收來(lái)自第二流水級(jí)的文件路徑, 讀取磁盤獲得文件,并且根據(jù)請(qǐng)求的源,將讀取的文件發(fā)回給對(duì)應(yīng)的第一流水 級(jí)的虛擬機(jī)103。
步驟S208,第一流水級(jí)的虛擬機(jī)103接收來(lái)自第三流水級(jí)發(fā)回來(lái)的已經(jīng) 得到的http響應(yīng),將該http響應(yīng)跟連接進(jìn)行映射,發(fā)送給對(duì)應(yīng)的連接的客戶
丄山順。
在選擇下一流水級(jí)虛擬機(jī)103時(shí),所使用的調(diào)度策略可以基于虛擬機(jī)信 息,也可以基于協(xié)同緩沖信息,或者基于虛擬機(jī)信息和協(xié)同緩沖信息?;谏?述動(dòng)態(tài)的選擇,可以避免流水線造成的阻塞,并且可以根據(jù)虛擬機(jī)上的資源信 息進(jìn)行資源流動(dòng),從而更好的實(shí)現(xiàn)負(fù)載均衡和資源分配,提高資源利用率。
圖3為連接可靠性工作流示意圖。
實(shí)現(xiàn)連接處理的可靠性保證的基于用戶層ACK實(shí)施方式如下 使用兩個(gè)ACK。 ACK-I,作為下一級(jí)流水收到請(qǐng)求的確認(rèn);ACK-II,作為 通知上級(jí)流水可以丟掉包的確認(rèn)。 步驟S301,請(qǐng)求進(jìn)入系統(tǒng)。
歩驟S302,第一流水級(jí)虛擬機(jī)103執(zhí)行結(jié)束時(shí),由Web服務(wù)器控制模塊 102利用調(diào)度策略選擇下一流水級(jí)虛擬機(jī),將請(qǐng)求發(fā)送至進(jìn)入第二流水級(jí)的處 理隊(duì)列,同時(shí)將其掛在第一流水級(jí)的等待ACK-I隊(duì)列中。
步驟S303,當(dāng)?shù)诙魉?jí)的虛擬機(jī)103接受到該請(qǐng)求時(shí),向第一流水級(jí) 的虛擬機(jī)103發(fā)送ACK-I,表示已經(jīng)收到;當(dāng)?shù)谝涣魉?jí)的虛擬機(jī)103收到第 二流水級(jí)的虛擬機(jī)103發(fā)來(lái)的ACK-1時(shí),將掛在等待ACK-I隊(duì)列中的請(qǐng)求掛在等待ACK-II隊(duì)列中。
步驟S304,第二流水級(jí)的虛擬機(jī)103執(zhí)行結(jié)束時(shí),由Web服務(wù)器控制模 塊102利用調(diào)度策略選擇下一級(jí)虛擬機(jī),將請(qǐng)求發(fā)送至進(jìn)入第三流水級(jí)的處理 隊(duì)列,同時(shí)將其掛在第二流水級(jí)的等待ACK-I隊(duì)列中。
步驟S305,當(dāng)?shù)谌魉?jí)的虛擬機(jī)103接收到該請(qǐng)求時(shí),向第二流水級(jí) 的虛擬機(jī)103發(fā)送ACK-I,表示已經(jīng)收到;當(dāng)?shù)诙魉?jí)的虛擬機(jī)103收到第 三流水級(jí)的虛擬機(jī)103發(fā)來(lái)的ACK-I時(shí),將掛在等待ACK-I隊(duì)列中的請(qǐng)求掛在 等待ACK-II隊(duì)列中。
步驟S306,第二流水級(jí)的虛擬機(jī)103向第一流水級(jí)的虛擬機(jī)103發(fā)送 ACK-II,表明經(jīng)第二流水級(jí)處理的請(qǐng)求已成功發(fā)送到第三流水級(jí)進(jìn)行處理,第 一流水級(jí)的虛擬機(jī)103收到第二流水級(jí)的虛擬機(jī)103發(fā)來(lái)的ACK-II后,將掛 在ACK-II隊(duì)列中對(duì)應(yīng)的請(qǐng)求刪除。
步驟S307,第三流水級(jí)的虛擬機(jī)103將文件發(fā)送給接收該請(qǐng)求的第一流 水級(jí)的虛擬機(jī)103。
歩驟S308,第三流水級(jí)的虛擬機(jī)103向第二流水級(jí)的虛擬機(jī)103發(fā)送 ACK-II,表明經(jīng)第三流水級(jí)處理的請(qǐng)求已成功發(fā)送到第四流水級(jí)進(jìn)行處理,第 二流水級(jí)的虛擬機(jī)103收到第三流水級(jí)的虛擬機(jī)103發(fā)來(lái)的ACK-II后,將掛 在ACK-II隊(duì)列中對(duì)應(yīng)的請(qǐng)求刪除。
基于心跳機(jī)制的應(yīng)用可靠性保障的具體實(shí)施方式
如下。
每個(gè)虛擬機(jī)103定期向Web服務(wù)器控制模塊102發(fā)送心跳消息,Web服務(wù) 器控制模塊102從而可以知道哪些虛擬機(jī)103可用。當(dāng)Web服務(wù)器控制模塊 102檢測(cè)到一段時(shí)間內(nèi)沒有收到某個(gè)虛擬機(jī)103的心跳消息,則認(rèn)為該虛擬機(jī) 103出現(xiàn)故障,則將該虛擬機(jī)103置為不可用,同時(shí)將該消息通知虛擬機(jī)信息 列表中其它的虛擬機(jī)103。其它虛擬機(jī)103收到該消息后,將本地關(guān)于故障虛 擬機(jī)103的信息全部刪除。
本發(fā)明流水線Web服務(wù)器的工作方法流程圖如圖4所示。
步驟S401,對(duì)所述Web服務(wù)器的部件進(jìn)行虛擬化,創(chuàng)建虛擬機(jī)。
步驟S402,虛擬機(jī)處理接收到的的客戶端發(fā)送的請(qǐng)求或上一流水級(jí)發(fā)送 的請(qǐng)求,如果需要將處理結(jié)果作為一個(gè)請(qǐng)求發(fā)送給下一流水級(jí),則向Web服務(wù) 器控制模塊申請(qǐng)下一流水級(jí);Web服務(wù)器控制模塊運(yùn)用調(diào)度策略從維護(hù)的虛擬機(jī)信息列表中選擇下一流水級(jí)的虛擬機(jī),并將選擇的下一流水級(jí)的虛擬機(jī)的信 息回復(fù)給所述虛擬機(jī);所述虛擬機(jī)將所述請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水 級(jí)的虛擬機(jī)。
步驟S402還包括虛擬機(jī)在確定發(fā)送的請(qǐng)求被下一流水級(jí)處理完成時(shí),
丟棄所述請(qǐng)求。
步驟S401后還包括
步驟411,所述虛擬機(jī)周期地向所述Web服務(wù)器控制模塊發(fā)送心跳消息; 步驟412,所述Web服務(wù)器控制模塊未在預(yù)設(shè)時(shí)間內(nèi)接收到所述虛擬機(jī)的 心跳消息后,將所述虛擬機(jī)從所述虛擬機(jī)信息列表中刪除。 步驟S402進(jìn)一歩包括
步驟421,在第一流水級(jí)虛擬機(jī)接收到客戶端發(fā)送的請(qǐng)求時(shí),解析出URL, 判斷所述虛擬機(jī)的全局緩沖中是否有所述請(qǐng)求對(duì)應(yīng)的表項(xiàng),如果是,執(zhí)行步驟 422,否則執(zhí)行步驟423。
步驟422,獲取文件并將所述文件發(fā)送給所述客戶端。
所述步驟422進(jìn)一步為判斷所述文件是否在所述虛擬機(jī)內(nèi),如果是,則將 所述文件發(fā)送給所述客戶端;否則,建立同所述文件所在虛擬機(jī)間的連接,將 所述文件取回到所述虛擬機(jī),將所述文件發(fā)送給所述客戶端。
步驟423,向所述Web服務(wù)器控制模塊申請(qǐng)下一流水級(jí),Web服務(wù)器控制
模塊運(yùn)用調(diào)度策略從維護(hù)的虛擬機(jī)信息列表中選擇下一流水級(jí)的虛擬機(jī),并將 選擇的下一流水級(jí)的虛擬機(jī)的信息回復(fù)給所述虛擬機(jī),所述虛擬機(jī)以URL為處 理結(jié)果,將所述URL作為一個(gè)請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水級(jí)的虛擬 機(jī)。
步驟424,第二流水級(jí)的虛擬機(jī)在接收到URL,解析URL,獲得對(duì)應(yīng)的文 件路徑,向所述Web服務(wù)器控制模塊申請(qǐng)下一流水級(jí),Web服務(wù)器控制模塊運(yùn) 用調(diào)度策略從維護(hù)的虛擬機(jī)信息列表中選擇下一流水級(jí)的虛擬機(jī),并將選擇的 下一流水級(jí)的虛擬機(jī)的信息回復(fù)給所述虛擬機(jī),所述虛擬機(jī)以文件路徑為處理 結(jié)果,將所述文件路徑作為一個(gè)請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水級(jí)的虛擬 機(jī)。
步驟425,第三流水級(jí)的虛擬機(jī)接收到上一流水級(jí)發(fā)送的文件路徑,讀取 所述文件,將讀取的文件發(fā)送給第一流水級(jí)的虛擬機(jī)。步驟426,第一流水級(jí)的虛擬機(jī)接收到客戶端的請(qǐng)求對(duì)應(yīng)的http響應(yīng)后, 將所述響應(yīng)發(fā)送給所述客戶端。
所述步驟S402還包括,所述虛擬機(jī)在接收到上一流水級(jí)的請(qǐng)求時(shí),回復(fù) 第一確認(rèn)消息;在接收到發(fā)送請(qǐng)求對(duì)應(yīng)的第一確認(rèn)消息或作為流水線最后一流 水級(jí)執(zhí)行完成處理后,向上一流水級(jí)發(fā)送第二確認(rèn)消息;在接收到發(fā)送請(qǐng)求對(duì) 應(yīng)的第二確認(rèn)消息時(shí),丟棄所述請(qǐng)求。
所述調(diào)度策略基于虛擬機(jī)信息或緩沖信息;或者,調(diào)度策略基于虛擬機(jī)信 息和緩沖信息。
本領(lǐng)域的技術(shù)人員在不脫離權(quán)利要求書確定的本發(fā)明的精神和范圍的條 件下,還可以對(duì)以上內(nèi)容進(jìn)行各種各樣的修改。因此本發(fā)明的范圍并不僅限于 以上的說(shuō)明,而是由權(quán)利要求書的范圍來(lái)確定的。
權(quán)利要求
1. 一種流水線Web服務(wù)器的系統(tǒng),其特征在于,包括分布式虛擬機(jī)監(jiān)控模塊,用于對(duì)所述Web服務(wù)器的部件進(jìn)行虛擬化,創(chuàng)建多個(gè)虛擬機(jī);所述虛擬機(jī),用于處理接收的客戶端發(fā)送的請(qǐng)求或上一流水級(jí)發(fā)送的請(qǐng)求,在將處理結(jié)果作為一個(gè)請(qǐng)求發(fā)送給下一流水級(jí)時(shí),向Web服務(wù)器控制模塊申請(qǐng)下一流水級(jí),接收到所述Web服務(wù)器控制模塊回復(fù)后,將所述請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水級(jí)的虛擬機(jī);所述Web服務(wù)器控制模塊,用于維護(hù)記錄可用虛擬機(jī)的虛擬機(jī)信息列表,在接收到虛擬機(jī)發(fā)送的申請(qǐng)下一流水級(jí)的申請(qǐng)時(shí),運(yùn)用調(diào)度策略從所述虛擬機(jī)信息列表中選擇下一流水級(jí)的虛擬機(jī),并將選擇的下一流水級(jí)的虛擬機(jī)的信息回復(fù)給所述虛擬機(jī)。
2. 如權(quán)利要求l所述的流水線Web服務(wù)器的系統(tǒng),其特征在于,所述虛擬機(jī)還用于在確定發(fā)送的請(qǐng)求被下一流水級(jí)處理完成時(shí),丟棄所述請(qǐng)求。
3. 如權(quán)利要求1所述的流水線Web服務(wù)器的系統(tǒng),其特征在于, 所述虛擬機(jī)還用于周期地向所述Web服務(wù)器控制模塊發(fā)送心跳消息; 所述Web服務(wù)器控制模塊還用于當(dāng)未在預(yù)設(shè)時(shí)間內(nèi)接收到所述虛擬機(jī)的心跳消息時(shí),將所述虛擬機(jī)從所述虛擬機(jī)信息列表中刪除。
4. 如權(quán)利要求l所述的流水線Web服務(wù)器的系統(tǒng),其特征在于, 所述虛擬機(jī)進(jìn)一歩用于在接收到客戶端發(fā)送的請(qǐng)求時(shí),解析出URL,判斷所述虛擬機(jī)的全局緩沖中是否有所述請(qǐng)求對(duì)應(yīng)的表項(xiàng),如果是,則獲取文件并 將文件發(fā)送給所述客戶端,否則,向所述Web服務(wù)器控制模塊申請(qǐng)下一流水級(jí), 接收到所述Web服務(wù)器控制模塊回復(fù)后,以所述URL為處理結(jié)果,將所述URL 作為一個(gè)請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水級(jí)的虛擬機(jī);在接收到所述請(qǐng)求 對(duì)應(yīng)的http響應(yīng)后,將所述響應(yīng)發(fā)送給所述客戶端。
5. 如權(quán)利要求4所述的流水線Web服務(wù)器的系統(tǒng),其特征在于, 所述虛擬機(jī)在獲取文件并將文件發(fā)送給所述客戶端時(shí)進(jìn)一步用于判斷所述文件是否在所述虛擬機(jī)內(nèi),如果是,則將所述文件發(fā)送給所述客戶端;否則, 建立同所述文件所在虛擬機(jī)間的連接,將所述文件取回到所述虛擬機(jī),將所述文件發(fā)送給所述客戶端。
6. 如權(quán)利要求4所述的流水線Web服務(wù)器的系統(tǒng),其特征在于, 所述虛擬機(jī)進(jìn)一步用于在接收到上一流水級(jí)發(fā)送的URL時(shí),解析URL,獲得對(duì)應(yīng)的文件路徑,向所述Web服務(wù)器控制模塊申請(qǐng)下一流水級(jí),接收到所述 Web服務(wù)器控制模塊回復(fù)后,以所述文件路徑為處理結(jié)果,將所述文件路徑作 為 一個(gè)請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水級(jí)的虛擬機(jī)。
7. 如權(quán)利要求6所述的流水線Web服務(wù)器的系統(tǒng),其特征在于,所述虛擬機(jī)進(jìn)一步用于在接收到上一流水級(jí)發(fā)送的文件路徑時(shí),讀取所述文件,將文 件發(fā)送給接收對(duì)應(yīng)客戶端請(qǐng)求的虛擬機(jī)。
8. 如權(quán)利要求2所述的流水線Web服務(wù)器的系統(tǒng),其特征在于,所述虛擬機(jī)還用于在接收到上一流水級(jí)的請(qǐng)求時(shí),回復(fù)第一確認(rèn)消息;在 接收到向下一流水級(jí)發(fā)送請(qǐng)求對(duì)應(yīng)的第一確認(rèn)消息或作為流水線最后一流水 級(jí)處理完成后,向上一流水級(jí)發(fā)送第二確認(rèn)消息;所述虛擬機(jī)在確定發(fā)送的請(qǐng)求被下一流水級(jí)執(zhí)行完成時(shí)進(jìn)一步用于在接 收到發(fā)送請(qǐng)求對(duì)應(yīng)的第二確認(rèn)消息時(shí),確定發(fā)送的請(qǐng)求被下一流水級(jí)處理完 成。
9. 如權(quán)利要求l所述的流水線Web服務(wù)器的系統(tǒng),其特征在于, 所述Web服務(wù)器控制模塊進(jìn)一歩包括資源管理模塊、系統(tǒng)可用性模塊、資源策略模塊;所述資源管理模塊,用于向所述資源策略模塊提供虛擬機(jī)信息; 所述系統(tǒng)可用性模塊,用于維護(hù)記錄可用虛擬機(jī)的虛擬機(jī)信息列表; 所述資源策略模塊,用于根據(jù)所述虛擬機(jī)信息確定調(diào)度策略,在接收到所述申請(qǐng)時(shí),運(yùn)用所述調(diào)度策略從所述虛擬機(jī)信息列表中選擇下一流水級(jí)的虛擬機(jī),并回復(fù)所述虛擬機(jī)。
10. 如權(quán)利要求l所述的流水線Web服務(wù)器的系統(tǒng),其特征在于,所述Web服務(wù)器控制模塊進(jìn)一步包括輔助模塊、系統(tǒng)可用性模塊、資源 策略模塊;所述輔助模塊,用于向所述資源策略模塊提供緩沖信息; 所述系統(tǒng)可用性模塊,用于維護(hù)記錄可用虛擬機(jī)的虛擬機(jī)信息列表; 所述資源策略模塊,用于根據(jù)所述緩沖信息確定調(diào)度策略,在接收到所述虛擬機(jī)發(fā)送的申請(qǐng)下一流水級(jí)的申請(qǐng)時(shí),運(yùn)用所述調(diào)度策略從所述虛擬機(jī)信息 列表中選擇下一流水級(jí)的虛擬機(jī),并回復(fù)所述虛擬機(jī)。
11. 一種流水線Web服務(wù)器的工作方法,其特征在于,包括 步驟l,對(duì)所述Web服務(wù)器的部件進(jìn)行虛擬化,創(chuàng)建多個(gè)虛擬機(jī);步驟2,虛擬機(jī)處理接收到的的客戶端發(fā)送的請(qǐng)求或上一流水級(jí)發(fā)送的請(qǐng) 求,如果需要將處理結(jié)果作為一個(gè)請(qǐng)求發(fā)送給下一流水級(jí),則向Web服務(wù)器控 制模塊申請(qǐng)下一流水級(jí);Web服務(wù)器控制模塊運(yùn)用調(diào)度策略從維護(hù)的虛擬機(jī)信 息列表中選擇下一流水級(jí)的虛擬機(jī),并將選擇的下一流水級(jí)的虛擬機(jī)的信息回 復(fù)給所述虛擬機(jī);所述虛擬機(jī)將所述請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水級(jí)的 虛擬機(jī)。
12. 如權(quán)利要求ll所述的流水線Web服務(wù)器的工作方法,其特征在于, 所述歩驟2還包括步驟121,所述虛擬機(jī)在確定發(fā)送的請(qǐng)求被下一流水級(jí)處理完成時(shí),丟棄 所述請(qǐng)求。
13. 如權(quán)利要求11所述的流水線Web服務(wù)器的工作方法,其特征在于, 所述歩驟1后還包括步驟131,所述虛擬機(jī)周期地向所述Web服務(wù)器控制模塊發(fā)送心跳消息; 歩驟132,所述Web服務(wù)器控制模塊未在預(yù)設(shè)時(shí)間內(nèi)接收到所述虛擬機(jī)的心跳消息后,將所述虛擬機(jī)從所述虛擬機(jī)信息列表中刪除。
14. 如權(quán)利要求ll所述的流水線Web服務(wù)器的工作方法,其特征在于, 所述步驟2進(jìn)一步包括步驟141,在接收到客戶端發(fā)送的請(qǐng)求時(shí),解析出URL,判斷所述虛擬機(jī) 的全局緩沖中是否有所述請(qǐng)求對(duì)應(yīng)的表項(xiàng),如果是,執(zhí)行步驟142,否則執(zhí)行 步驟143;步驟142,獲取文件并將所述文件發(fā)送給所述客戶端,步驟143,向所述Web服務(wù)器控制模塊申請(qǐng)下一流水級(jí),Web服務(wù)器控制 模塊運(yùn)用調(diào)度策略從維護(hù)的虛擬機(jī)信息列表中選擇下一流水級(jí)的虛擬機(jī),并將 選擇的下一流水級(jí)的虛擬機(jī)的信息回復(fù)給所述虛擬機(jī),所述虛擬機(jī)以所述URL 為處理結(jié)果,將所述URL作為一個(gè)請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水級(jí)的虛 擬機(jī)。
15. 如權(quán)利要求14所述的流水線Web服務(wù)器的工作方法,其特征在于, 所述步驟142進(jìn)一步包括步驟151,判斷所述文件是否在所述虛擬機(jī)內(nèi),如果是,則執(zhí)行步驟152, 否則,執(zhí)行步驟153;步驟152,將所述文件發(fā)送給所述客戶端;步驟153,建立同所述文件所在虛擬機(jī)間的連接,將所述文件取回到所述 虛擬機(jī),將所述文件發(fā)送給所述客戶端。
16. 如權(quán)利要求14所述的流水線Web服務(wù)器的工作方法,其特征在于, 所述步驟143后還包括步驟161,第二流水級(jí)的虛擬機(jī)在接收到URL,解析URL,獲得對(duì)應(yīng)的文 件路徑,向所述Web服務(wù)器控制模塊申請(qǐng)下一流水級(jí),Web服務(wù)器控制模塊運(yùn) 用調(diào)度策略從維護(hù)的虛擬機(jī)信息列表中選擇下一流水級(jí)的虛擬機(jī),并將選擇的 下一流水級(jí)的虛擬機(jī)的信息回復(fù)給所述虛擬機(jī),所述虛擬機(jī)以所述文件路徑為 處理結(jié)果,將所述文件路徑作為一個(gè)請(qǐng)求發(fā)送給所述回復(fù)指定的下一流水級(jí)的 虛擬機(jī)。
17. 如權(quán)利要求16所述的流水線Web服務(wù)器的工作方法,其特征在于, 所述歩驟161后還包括步驟171,第三流水級(jí)的虛擬機(jī)接收到上一流水級(jí)發(fā)送的文件路徑,讀取 所述文件,將讀取的文件發(fā)送給接收對(duì)應(yīng)客戶端請(qǐng)求的虛擬機(jī)。
18. 如權(quán)利要求17所述的流水線Web服務(wù)器的工作方法,其特征在于, 所述步驟171后還包括接收客戶端請(qǐng)求的虛擬機(jī)接收到客戶端的請(qǐng)求對(duì)應(yīng)的http響應(yīng)后,將所述響應(yīng)發(fā)送給所述客戶端。
19. 如權(quán)利要求12所述的流水線Web服務(wù)器的工作方法,其特征在于, 所述步驟2還包括,所述虛擬機(jī)在接收到上一流水級(jí)的請(qǐng)求時(shí),回復(fù)第一確認(rèn)消息;在接收到發(fā)送請(qǐng)求對(duì)應(yīng)的第一確認(rèn)消息或作為流水線最后一流水級(jí) 執(zhí)行完成處理后,向上一流水級(jí)發(fā)送第二確認(rèn)消息;所述步驟121進(jìn)一步為在接收到發(fā)送請(qǐng)求對(duì)應(yīng)的第二確認(rèn)消息時(shí),丟棄所 述請(qǐng)求。
20. 如權(quán)利要求ll所述的流水線Web服務(wù)器的工作方法,其特征在于, 所述調(diào)度策略基于虛擬機(jī)信息或緩沖信息。
全文摘要
本發(fā)明涉及一種流水線Web服務(wù)器的系統(tǒng)及其工作方法,系統(tǒng)包括分布式虛擬機(jī)監(jiān)控模塊,用于對(duì)Web服務(wù)器的部件進(jìn)行虛擬化,創(chuàng)建多個(gè)虛擬機(jī);虛擬機(jī),用于處理接收的客戶端發(fā)送的請(qǐng)求或上一流水級(jí)發(fā)送的請(qǐng)求,在將處理結(jié)果作為一個(gè)請(qǐng)求發(fā)送給下一流水級(jí)時(shí),向Web服務(wù)器控制模塊申請(qǐng)下一流水級(jí),接收到Web服務(wù)器控制模塊回復(fù)后,將請(qǐng)求發(fā)送給回復(fù)指定的下一流水級(jí)的虛擬機(jī);Web服務(wù)器控制模塊,用于維護(hù)記錄可用虛擬機(jī)的虛擬機(jī)信息列表,在接收到申請(qǐng)時(shí),運(yùn)用調(diào)度策略從虛擬機(jī)信息列表中選擇下一流水級(jí)的虛擬機(jī),并回復(fù)虛擬機(jī)。本發(fā)明能夠在流水線基礎(chǔ)上提高可靠性、增加資源流動(dòng)和實(shí)現(xiàn)動(dòng)態(tài)流水線。
文檔編號(hào)H04L29/08GK101448027SQ200810247388
公開日2009年6月3日 申請(qǐng)日期2008年12月29日 優(yōu)先權(quán)日2008年12月29日
發(fā)明者孫毓忠, 張玉放, 王若倪 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所