摘 要: 在Web應(yīng)用日益普及的今天,Web服務(wù)器承擔(dān)的任務(wù)越來越繁重,特別是進(jìn)行大數(shù)據(jù)量的計(jì)算時(shí),服務(wù)器的硬件資源成了計(jì)算效率的瓶頸。為了解決這一問題,結(jié)合云計(jì)算和中間件的技術(shù)特點(diǎn),提出了一種基于多Agent的云服務(wù)中間件的體系架構(gòu),該框架分為用戶接口層、SOA層和資源管理層3個(gè)層次,內(nèi)部采用多Agent技術(shù)。節(jié)點(diǎn)間通過ACL消息進(jìn)行通信,負(fù)載均衡采用靜態(tài)計(jì)算能力與動(dòng)態(tài)負(fù)載相結(jié)合,內(nèi)置的日志服務(wù)和容錯(cuò)服務(wù)保障系統(tǒng)穩(wěn)定運(yùn)行。將此框架應(yīng)用到實(shí)際Web應(yīng)用中可以大大提高Web服務(wù)器的計(jì)算效率。
關(guān)鍵詞: 云服務(wù);中間件;多Agent系統(tǒng);分布式計(jì)算;負(fù)載平衡
隨著當(dāng)今網(wǎng)絡(luò)體系和Web技術(shù)的發(fā)展,Web應(yīng)用被廣泛使用,Web服務(wù)器所承載的負(fù)荷越來越大,使得對(duì)于大數(shù)據(jù)量的計(jì)算不能及時(shí)響應(yīng)。因此,需要有一種技術(shù),不僅能將大任務(wù)分配給多臺(tái)機(jī)器共同計(jì)算,分擔(dān)服務(wù)器的工作,提高計(jì)算效率和穩(wěn)定性,還能利用閑置計(jì)算資源,避免資源浪費(fèi),這就是云計(jì)算。
云計(jì)算(Cloud Computing)[1]是一種基于互聯(lián)網(wǎng)的計(jì)算方式,通過這種方式,共享的軟硬件資源和信息可以按需提供給計(jì)算機(jī)和其他設(shè)備。
中間件(Middleware)[2]是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源。
Agent是一種在某個(gè)環(huán)境中自主行動(dòng)以實(shí)現(xiàn)其設(shè)計(jì)目標(biāo)的智能化軟件實(shí)體[3-4]。其應(yīng)用主要是以一種松散耦合的Agent網(wǎng)絡(luò),即MAS出現(xiàn),在多個(gè)Agent之間以結(jié)構(gòu)化的ACL[5](Agent Communication Language)進(jìn)行交互、協(xié)作,以完成某一項(xiàng)任務(wù)。
臺(tái)風(fēng)預(yù)報(bào)系統(tǒng)是一個(gè)典型的Web應(yīng)用,它是一個(gè)會(huì)商式的群決策支持系統(tǒng)(GDSS)[6-7],其中的專家預(yù)報(bào)路徑就涉及了大數(shù)據(jù)量計(jì)算,本文將云服務(wù)中間件的技術(shù)應(yīng)用到臺(tái)風(fēng)預(yù)報(bào)系統(tǒng)上,以提高相似路徑計(jì)算的效率。
1 云服務(wù)中間件的體系架構(gòu)
1.1 云服務(wù)中間件的工作原理
云服務(wù)中間件的設(shè)計(jì)可以將大任務(wù)分解成若干小任務(wù),再通過分配給閑置計(jì)算節(jié)點(diǎn)來分擔(dān)服務(wù)器的工作,計(jì)算結(jié)果由所有計(jì)算節(jié)點(diǎn)產(chǎn)生的子結(jié)果匯集而成。云服務(wù)中間件的工作原理如圖1所示。
用戶接口層定義了外部程序調(diào)用云服務(wù)所需的接口,請(qǐng)求端的Agent將計(jì)算任務(wù)通過接口發(fā)給云服務(wù)中間件。
SOA層管理著云服務(wù)中間件結(jié)構(gòu)所需的基本服務(wù),包括主控服務(wù)、計(jì)算服務(wù)、日志服務(wù)和容錯(cuò)服務(wù)。目錄服務(wù)是SOA層各類服務(wù)的目錄,提供查找已注冊(cè)在目錄上的服務(wù),并調(diào)用它。計(jì)算任務(wù)通過用戶接口傳進(jìn)SOA層后,被發(fā)送到目錄下的主控服務(wù)上。
資源管理層是操作計(jì)算機(jī)資源的各種Agent組成,每一種Agent負(fù)責(zé)對(duì)應(yīng)的工作。在主控服務(wù)下有一個(gè)主控Agent,帶有一個(gè)負(fù)載均衡器。計(jì)算服務(wù)下有多個(gè)計(jì)算Agent,日志服務(wù)下有多個(gè)日志Agent,有一個(gè)日志收集器和多個(gè)日志記錄器。容錯(cuò)服務(wù)下有多個(gè)容錯(cuò)Agent。主控Agent對(duì)應(yīng)一個(gè)日志收集器和一個(gè)容錯(cuò)Agent,每個(gè)計(jì)算Agent對(duì)應(yīng)一個(gè)日志記錄器和一個(gè)容錯(cuò)Agent。
主控Agent是云服務(wù)中間件的核心Agent,它管理著所有計(jì)算Agent節(jié)點(diǎn),負(fù)責(zé)接收請(qǐng)求端發(fā)來的計(jì)算任務(wù),根據(jù)業(yè)務(wù)邏輯對(duì)任務(wù)進(jìn)行分解,并通過負(fù)載均衡器將子任務(wù)分配給輕載的計(jì)算節(jié)點(diǎn)。主控Agent所帶的日志收集器Agent負(fù)責(zé)收集日志記錄器Agent發(fā)送的日志消息,記錄在平臺(tái)和日志文件中。計(jì)算Agent在云服務(wù)中間件起著重要的作用,它是計(jì)算的核心,接收來自主控Agent發(fā)來的子任務(wù),計(jì)算并返回部分結(jié)果。每個(gè)計(jì)算Agent都帶有一個(gè)日志記錄器Agent,用以記錄Agent工作的日志并轉(zhuǎn)發(fā)給日志收集器Agent。同時(shí),主控Agent和計(jì)算Agent都帶有一個(gè)容錯(cuò)Agent,容錯(cuò)Agent負(fù)責(zé)處理Agent異常并恢復(fù)出錯(cuò)的Agent。
1.3 云服務(wù)中間件的消息機(jī)制
云服務(wù)中間件是通過Agent間的發(fā)送接收消息來完成內(nèi)部通信的,ACL消息是Agent的通信語言,兩個(gè)重要的屬性分別是對(duì)象內(nèi)容和接收者,對(duì)象內(nèi)容是指發(fā)送消息的對(duì)象,可以是一個(gè)java類對(duì)象,接收者是接收Agent的ID。通信過程是:發(fā)送Agent將消息對(duì)象封裝到ACL消息中,通過send方法發(fā)送消息給指定的接收Agent;接收Agent通過receive方法接收ACL消息并解開消息對(duì)象,讀取消息內(nèi)容。通信過程如圖3所示。
消息對(duì)象是存儲(chǔ)消息內(nèi)容的對(duì)象,云服務(wù)中間件根據(jù)不同的需求定義不同的消息格式,它們共同繼承自一個(gè)消息基類,消息基類管理所有消息的類型。云服務(wù)中間件涉及的消息對(duì)象有注冊(cè)相關(guān)消息、業(yè)務(wù)相關(guān)消息、登錄相關(guān)消息、負(fù)載相關(guān)消息和日志相關(guān)消息。
2 負(fù)載均衡策略
負(fù)載平衡[8]是分布式系統(tǒng)的資源管理模塊,它的主要功能是合理和透明地在處理器之間分配系統(tǒng)負(fù)載,以達(dá)到系統(tǒng)的綜合性能最優(yōu)。負(fù)載均衡器設(shè)計(jì)的目的是在眾多閑置的計(jì)算節(jié)點(diǎn)中選擇閑置計(jì)算能力最大的作為任務(wù)分配的節(jié)點(diǎn),以達(dá)到計(jì)算效率最優(yōu)。
本文所采用的負(fù)載平衡是結(jié)合靜態(tài)計(jì)算能力和動(dòng)態(tài)負(fù)載加權(quán)組成,同時(shí)考慮了節(jié)點(diǎn)的靜態(tài)能力和動(dòng)態(tài)負(fù)載,兩者加權(quán)得出閑置計(jì)算能力,使得分配任務(wù)更合理,充分利用了計(jì)算資源。設(shè)計(jì)算節(jié)點(diǎn)為C,閑置計(jì)算能力的計(jì)算方法如式(1)所示:
Abilityfree(C)=Abilitytotal(C)×(1-LoadValue(C)/100)(1)
其中Abilitytotal(C)為計(jì)算節(jié)點(diǎn)C的全部計(jì)算能力,即靜態(tài)計(jì)算能力。LoadValue(C)為計(jì)算節(jié)點(diǎn)C的負(fù)載值,即動(dòng)態(tài)負(fù)載,單位是百分比。
(1)專家編輯方案,系統(tǒng)將預(yù)測(cè)路徑通過云服務(wù)模式交給請(qǐng)求Agent;
(2)請(qǐng)求Agent將預(yù)報(bào)路徑封裝成預(yù)報(bào)消息,發(fā)送給云服務(wù)中間件的主控Agent;
(3)主控Agent接收到預(yù)報(bào)消息后,將任務(wù)分解成若干子任務(wù),分發(fā)給計(jì)算Agent;
(4)計(jì)算Agent計(jì)算最相似歷史臺(tái)風(fēng)路徑,返回結(jié)果給主控Agent;
(5)主控Agent匯總結(jié)果,將結(jié)果封裝成結(jié)果消息發(fā)送回請(qǐng)求Agent;
(6)請(qǐng)求Agent解開結(jié)果消息,把最相似路徑在地圖上顯示給專家。
期間,請(qǐng)求Agent、計(jì)算Agent將工作日志發(fā)送給日志記錄Agent,主控Agent將工作日志發(fā)送給日志收集Agent,日志記錄Agent將接收到的日志轉(zhuǎn)發(fā)給日志收集Agent。容錯(cuò)Agent負(fù)責(zé)對(duì)主控Agent和計(jì)算Agent集群中的每個(gè)計(jì)算Agent進(jìn)行監(jiān)控。
4 實(shí)驗(yàn)結(jié)果及分析
4.1 實(shí)驗(yàn)準(zhǔn)備
將云服務(wù)中間件應(yīng)用到臺(tái)風(fēng)預(yù)報(bào)系統(tǒng)中,分別對(duì)單機(jī)和云服務(wù)兩個(gè)模式進(jìn)行實(shí)驗(yàn),測(cè)試計(jì)算時(shí)間。實(shí)驗(yàn)所用到的計(jì)算機(jī)集群有:1臺(tái)主控服務(wù)器,1臺(tái)Web服務(wù)器,若干臺(tái)計(jì)算服務(wù)器和若干臺(tái)數(shù)據(jù)庫服務(wù)器。
實(shí)驗(yàn)數(shù)據(jù)有多組,每組均來自隨機(jī)產(chǎn)生的臺(tái)風(fēng)路徑,每個(gè)臺(tái)風(fēng)的路徑點(diǎn)數(shù)為66個(gè),對(duì)不同數(shù)量臺(tái)風(fēng)的臺(tái)風(fēng)預(yù)測(cè)計(jì)算時(shí)間,對(duì)單機(jī)與云服務(wù)進(jìn)行效率比較。
4.2 實(shí)驗(yàn)結(jié)果
單機(jī)模式與云服務(wù)模式的計(jì)算的平均時(shí)間如表1所示。
從表中可以看出,云服務(wù)的整體計(jì)算性能明顯高于單機(jī),當(dāng)臺(tái)風(fēng)個(gè)數(shù)為1 200時(shí),云服務(wù)計(jì)算時(shí)間僅為單機(jī)的31.84%,速度提高了214.11%, 說明云服務(wù)中間件應(yīng)用到臺(tái)風(fēng)預(yù)報(bào)系統(tǒng)中可以大大提高Web服務(wù)器的計(jì)算效率。
4.3 結(jié)果分析
實(shí)驗(yàn)結(jié)果表明,單機(jī)與云服務(wù)下計(jì)算時(shí)間隨臺(tái)風(fēng)個(gè)數(shù)成正比,兩者的計(jì)算時(shí)間都是線性增加的。圖5為單機(jī)與云服務(wù)計(jì)算時(shí)間對(duì)比圖。從圖5可以看出,單機(jī)下的計(jì)算時(shí)間趨勢(shì)線斜率高于云服務(wù)的計(jì)算時(shí)間趨勢(shì)線,計(jì)算時(shí)間差隨著臺(tái)風(fēng)個(gè)數(shù)的增加而拉大,說明基于多Agent的云服務(wù)中間件可以大大縮短Web服務(wù)器的計(jì)算時(shí)間,提高計(jì)算效率。
本文分析了Web應(yīng)用的現(xiàn)狀和Web服務(wù)器的瓶頸問題,結(jié)合云計(jì)算和中間件技術(shù),提出了一種基于多Agent的云服務(wù)中間件的體系架構(gòu)。介紹了云服務(wù)中間件的工作原理,即將復(fù)雜的任務(wù)分解成小任務(wù),再將結(jié)果匯總。從層次上看,云服務(wù)中間件分為3個(gè)層次,分別是用戶接口層、SOA層和資源管理層。內(nèi)部的Agent使用ACL消息進(jìn)行通信,介紹了各類消息。負(fù)載均衡采用靜態(tài)計(jì)算能力與動(dòng)態(tài)負(fù)載相結(jié)合,保證了整體性能。
本文將設(shè)計(jì)的云服務(wù)中間件框架應(yīng)用到一個(gè)典型的Web應(yīng)用臺(tái)風(fēng)預(yù)報(bào)系統(tǒng)中,以實(shí)驗(yàn)數(shù)據(jù)進(jìn)行單機(jī)與云服務(wù)模式的計(jì)算時(shí)間對(duì)比,可以看到云服務(wù)中間件對(duì)提高Web服務(wù)器計(jì)算時(shí)間的作用。云服務(wù)中間件的研究是未來Web應(yīng)用的一個(gè)很有價(jià)值的應(yīng)用前景,對(duì)推動(dòng)云計(jì)算的發(fā)展有著至關(guān)重要的作用。
參考文獻(xiàn)
[1] 趙立新.云計(jì)算:信息時(shí)代的新主宰[J].科技創(chuàng)新導(dǎo)報(bào),2010(12):213-214.
[2] 吳禮裕,盧珊.中間件的研究綜述[J].科技與生活,2009(21):24-24,67.
[3] 賴如潔,曹健,李明祿,等.服務(wù)Agent的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2010,32(5):113-117.
[4] WILDE G J.The theory of risk homeostasis:implications for safety and healt[J].Risk Analysis,1982,2(4):209-225.
[5] WILDE G J.Social interaction patterns in driver behavior:an introductory review[J].Human Factors,1976,18(5):447-492.
[6] 陳偉江,郭朝珍.分布式ETL中協(xié)同機(jī)制的研究與設(shè)計(jì)[J].通信學(xué)報(bào),2006,27(11):177-182.
[7] 閆鈞華,張煥春,經(jīng)亞枝.基于Multi2agent的分布式系統(tǒng)負(fù)載平衡[J].華南理工大學(xué)學(xué)報(bào):自然科學(xué)版,2004,32(12):74-79.
[8] 陳濤,陳啟買.分布式計(jì)算機(jī)系統(tǒng)負(fù)載平衡研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006,16 (5):33-35.