《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于多Agent的容錯(cuò)中間件失效處理系統(tǒng)的研究
基于多Agent的容錯(cuò)中間件失效處理系統(tǒng)的研究
來(lái)源:微型機(jī)與應(yīng)用2013年第17期
黃細(xì)閩,郭朝珍
(福州大學(xué) 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,福建 福州350108)
摘要: 針對(duì)敏感行業(yè)中分布式應(yīng)用的容錯(cuò)需求問(wèn)題,分析介紹Agent、多Agent系統(tǒng)和容錯(cuò)中間件技術(shù),根據(jù)Agent和中間件特性結(jié)構(gòu)上的相似性,對(duì)利用多Agent技術(shù)構(gòu)建容錯(cuò)中間件作了嘗試,并著重研究了失效檢測(cè)與恢復(fù)系統(tǒng);建立局部檢測(cè)與全局檢測(cè)互相結(jié)合的雙層失效檢測(cè)模型,提出融入定點(diǎn)恢復(fù)和異機(jī)恢復(fù)的改進(jìn)型REDO失效恢復(fù)策略;最后給出基于JADE的一個(gè)系統(tǒng)實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果顯示雙層檢測(cè)模型和改進(jìn)型REDO恢復(fù)策略是可行的、高效率的。
Abstract:
Key words :

摘  要: 針對(duì)敏感行業(yè)中分布式應(yīng)用的容錯(cuò)需求問(wèn)題,分析介紹Agent、多Agent系統(tǒng)和容錯(cuò)中間件技術(shù),根據(jù)Agent和中間件特性結(jié)構(gòu)上的相似性,對(duì)利用多Agent技術(shù)構(gòu)建容錯(cuò)中間件作了嘗試,并著重研究了失效檢測(cè)與恢復(fù)系統(tǒng);建立局部檢測(cè)與全局檢測(cè)互相結(jié)合的雙層失效檢測(cè)模型,提出融入定點(diǎn)恢復(fù)和異機(jī)恢復(fù)的改進(jìn)型REDO失效恢復(fù)策略;最后給出基于JADE的一個(gè)系統(tǒng)實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果顯示雙層檢測(cè)模型和改進(jìn)型REDO恢復(fù)策略是可行的、高效率的。
關(guān)鍵詞: 多Agent系統(tǒng)(MAS);容錯(cuò)中間件;失效檢測(cè);失效恢復(fù);JADE平臺(tái)

 容錯(cuò)中間件[1-2]是一個(gè)可為開(kāi)發(fā)者提供分布式應(yīng)用容錯(cuò)支持的開(kāi)發(fā)平臺(tái)。容錯(cuò)中間件將容錯(cuò)邏輯從應(yīng)用邏輯中分離出來(lái),為容錯(cuò)應(yīng)用開(kāi)發(fā)提供框架支持,簡(jiǎn)化業(yè)務(wù)應(yīng)用開(kāi)發(fā),同時(shí)使開(kāi)發(fā)過(guò)程變得清晰。目前,容錯(cuò)中間件的研究和實(shí)現(xiàn)主要是基于分布對(duì)象。國(guó)外主要產(chǎn)品有:基于JavaRMI的Arjuna系統(tǒng),F(xiàn)ilterFresh系統(tǒng)等;基于DCOM的COMERA系統(tǒng);基于CORBA的OGS系統(tǒng),Enteral系統(tǒng)等。國(guó)內(nèi)方面主要有國(guó)防科學(xué)技術(shù)大學(xué)研發(fā)的分布應(yīng)用容錯(cuò)計(jì)算平臺(tái)StarFT。
 中間件包括平臺(tái)功能,自身具有自治性、自主性、隔離性、社會(huì)化、激發(fā)性、主動(dòng)性、并發(fā)性、認(rèn)識(shí)能力等特性,是近似于Agent的結(jié)構(gòu),因此利用Agent來(lái)建立容錯(cuò)中間件是一個(gè)不錯(cuò)的選擇。
失效檢測(cè)[3]與恢復(fù)是實(shí)現(xiàn)容錯(cuò)的核心問(wèn)題。檢測(cè)到失效是容錯(cuò)恢復(fù)的前提,因此,失效檢測(cè)是實(shí)現(xiàn)容錯(cuò)不可或缺的一部分。失效恢復(fù)是容錯(cuò)的目標(biāo),也是容錯(cuò)技術(shù)提高系統(tǒng)效率的關(guān)鍵所在。
 本文在分析介紹Agent[4]和多Agent系統(tǒng)[5-9]之后,給出了容錯(cuò)中間件中的失效檢測(cè)模型和恢復(fù)策略,最后討論了基于JADE[10-12]的系統(tǒng)實(shí)現(xiàn)。
1 相關(guān)技術(shù)
1.1 Agent的定義及其結(jié)構(gòu)

 Agent(代理)概念起源于人工智能領(lǐng)域,是指用于模仿人類能力的自主實(shí)體,駐留在某一環(huán)境下能持續(xù)、自主地發(fā)揮作用。Agent的基本結(jié)構(gòu)如圖1所示。

 Agent一般具有自主性、反應(yīng)性、交互性、協(xié)作性、主動(dòng)性和智能性等特性。但在實(shí)際的系統(tǒng)中,Agent并不能保證具有以上的全部特性。
1.2 多Agent系統(tǒng)
 多Agent系統(tǒng)是由多個(gè)Agent組成的一個(gè)社會(huì)整體,不同的Agent可以控制或影響環(huán)境的不同部分,多個(gè)Agent可以通過(guò)Agent通信語(yǔ)言進(jìn)行交互,分工合作,實(shí)現(xiàn)更為復(fù)雜、單個(gè)Agent無(wú)法解決的問(wèn)題。多Agent系統(tǒng)可以有效地解決數(shù)據(jù)、控制具有分布性的問(wèn)題,并能提高系統(tǒng)的效率和魯棒性。
1.3 容錯(cuò)技術(shù)
 使得系統(tǒng)在部分節(jié)點(diǎn)失效或是部分對(duì)象崩潰的情況下仍能正常運(yùn)行并得到預(yù)期結(jié)果的技術(shù)稱為容錯(cuò)技術(shù)。軟件容錯(cuò)借鑒硬件容錯(cuò)的成功經(jīng)驗(yàn),經(jīng)常采用冗余技術(shù)進(jìn)行處理。軟件容錯(cuò)方法主要有錯(cuò)誤回卷恢復(fù)、恢復(fù)塊、N版本軟件。
 錯(cuò)誤回卷恢復(fù)主要分為兩大類:基于檢查點(diǎn)的錯(cuò)誤回卷恢復(fù)、基于日志的錯(cuò)誤回卷恢復(fù)?;跈z查點(diǎn)的錯(cuò)誤回卷恢復(fù)的核心思想是任務(wù)執(zhí)行過(guò)程中設(shè)置檢查點(diǎn),發(fā)現(xiàn)失效時(shí)不需要從頭開(kāi)始運(yùn)行,而是直接從最后一個(gè)成功執(zhí)行的檢查點(diǎn)往下執(zhí)行?;谌罩镜腻e(cuò)誤回卷恢復(fù)則是在判斷失效發(fā)生后,利用發(fā)生失效前最近的檢查點(diǎn)和日志信息完全重新運(yùn)行作業(yè)的過(guò)程。
恢復(fù)塊的主要思想是:系統(tǒng)被劃分成若干恢復(fù)塊,整個(gè)系統(tǒng)由這些恢復(fù)塊組成。每個(gè)塊包含一個(gè)首要執(zhí)行模塊和一些替換模塊。若首要執(zhí)行模塊輸出結(jié)果驗(yàn)收失敗,則調(diào)用第二個(gè)模塊;若再次失敗,則繼續(xù)調(diào)用另外的替換模塊。重復(fù)該操作,直到所有模塊均被調(diào)用,或超出時(shí)間限制。
    N版本軟件的方法與硬件容錯(cuò)的NMR方法類似。N(N>=2)個(gè)以不同方式實(shí)現(xiàn)的功能相同的模塊同時(shí)執(zhí)行,由表決器判定正確的結(jié)果,作為模塊的結(jié)果。
2 失效檢測(cè)
2.1 失效檢測(cè)模型

 本文設(shè)計(jì)的失效檢測(cè)系統(tǒng)主要由兩部分組成:局部檢測(cè)Agent,LDA(Local Detector Agent)和全局檢測(cè)Agent,GDA(Global Detector Agent)。LDA駐留在各節(jié)點(diǎn),負(fù)責(zé)所駐留節(jié)點(diǎn)中實(shí)體的檢測(cè)工作;GDA負(fù)責(zé)各LDA及其所駐留節(jié)點(diǎn)的檢測(cè)工作。設(shè)計(jì)的檢測(cè)模型如圖2所示。

 

 

 各部分詳細(xì)描述如下:
 檢測(cè)對(duì)象:需要進(jìn)行檢測(cè)的實(shí)體,可以是一個(gè)應(yīng)用程序?qū)ο蟆⒁部梢允且粋€(gè)進(jìn)程、甚至是一個(gè)Agent;任何檢測(cè)對(duì)象在啟動(dòng)時(shí)均需向LDA注冊(cè)。
 LDA:每個(gè)工作中的節(jié)點(diǎn)均駐留有一個(gè)專屬的LDA,負(fù)責(zé)所屬節(jié)點(diǎn)中檢測(cè)對(duì)象的檢測(cè)及在發(fā)現(xiàn)失效時(shí)給出通告;任何LDA必須成功注冊(cè)到GDA后才能開(kāi)始工作。
 GDA:整個(gè)系統(tǒng)只有一個(gè)GDA,GDA駐留在主控節(jié)點(diǎn),主要負(fù)責(zé)對(duì)各LDA的失效檢測(cè)、分類及通告的工作。
 失效處理器:接收來(lái)自LDA或GDA的失效通告,對(duì)失效進(jìn)行處理。
2.2 局部檢測(cè)Agent
 LDA必須成功注冊(cè)到GDA后才能開(kāi)始工作,若注冊(cè)失敗,允許重啟,當(dāng)重啟次數(shù)超過(guò)設(shè)定閾值(比如3次)則給出警告,提請(qǐng)系統(tǒng)管理員介入,查看是否LDA程序出現(xiàn)錯(cuò)誤。
 任何檢測(cè)對(duì)象在啟動(dòng)時(shí)都需要向該節(jié)點(diǎn)所屬LDA注冊(cè),LDA根據(jù)各檢測(cè)對(duì)象的注冊(cè)信息建立并維護(hù)檢測(cè)對(duì)象及其狀態(tài)等信息的狀態(tài)表。流程如圖3所示。
 LDA定時(shí)對(duì)狀態(tài)表中各檢測(cè)對(duì)象執(zhí)行失效檢測(cè)算法,然后更新?tīng)顟B(tài)表,并在發(fā)現(xiàn)失效對(duì)象時(shí)通告失效處理器。執(zhí)行流程如圖4所示。

 失效檢測(cè)主要有兩種模式:心跳模式,或稱“推”模式;輪詢模式,或稱“拉”模式。“推”模式的思想是:被檢測(cè)實(shí)體定時(shí)向檢測(cè)器發(fā)送心跳信息,檢測(cè)器在一段設(shè)定的時(shí)間內(nèi)沒(méi)收到心跳信息,則判定實(shí)體失效;“拉”模式則為:檢測(cè)器定時(shí)向被檢測(cè)實(shí)體發(fā)送詢問(wèn)信息,被檢測(cè)實(shí)體應(yīng)答檢測(cè)器以申明自己未失效,檢測(cè)器在發(fā)出詢問(wèn)后一段設(shè)定的時(shí)間內(nèi)沒(méi)收到應(yīng)答,則判定實(shí)體失效。本文采用的測(cè)試模式是“拉”模式,在一個(gè)檢測(cè)間隔里完成對(duì)所有檢測(cè)對(duì)象的詢問(wèn)及應(yīng)答的接收或失效的判斷。如果檢測(cè)間隔太短,將無(wú)法正確處理對(duì)所有對(duì)象的檢測(cè);而如果檢測(cè)間隔太長(zhǎng),則無(wú)法及時(shí)發(fā)現(xiàn)失效。因此,檢測(cè)間隔的設(shè)定需要一個(gè)綜合的折中考慮。
2.3 全局檢測(cè)Agent
 整個(gè)系統(tǒng)只有一個(gè)GDA,GDA駐留在主控節(jié)點(diǎn),主要負(fù)責(zé)對(duì)各LDA及其所在節(jié)點(diǎn)的失效檢測(cè)工作。如LDA維護(hù)檢測(cè)對(duì)象的狀態(tài)信息表一般,GDA根據(jù)各LDA注冊(cè)信息創(chuàng)建并維護(hù)針對(duì)LDA的狀態(tài)信息表。由于GDA與LDA一般駐留在不同節(jié)點(diǎn),檢測(cè)時(shí)需要進(jìn)行遠(yuǎn)程通信,當(dāng)發(fā)現(xiàn)LDA失效,需要進(jìn)一步識(shí)別失效類型。主要失效類型有:LDA失效;通信失效;LDA所在節(jié)點(diǎn)失效。
3 失效恢復(fù)
3.1 恢復(fù)策略

 本文主要采取的恢復(fù)策略是REDO策略,即檢測(cè)對(duì)象失效時(shí),由失效處理器根據(jù)接收到的失效通告重啟該對(duì)象。在此基礎(chǔ)上針對(duì)一些比較特殊的檢測(cè)對(duì)象,執(zhí)行更為符合其需求的恢復(fù)方法。
 對(duì)于大數(shù)據(jù)量處理的對(duì)象,其執(zhí)行可能涉及成千上萬(wàn)的數(shù)據(jù)庫(kù)記錄,如果只是簡(jiǎn)單的REDO,則已經(jīng)處理過(guò)的記錄將會(huì)全部被再次處理,造成性能的重大浪費(fèi)。因此,可以建立該對(duì)象的執(zhí)行日志,維護(hù)該對(duì)象成功處理的記錄條數(shù)或是序號(hào);當(dāng)該對(duì)象需要被恢復(fù)時(shí),根據(jù)執(zhí)行日志直接從最后成功處理的記錄往下執(zhí)行,也就是對(duì)該對(duì)象進(jìn)行定點(diǎn)恢復(fù)。采用定點(diǎn)恢復(fù)將大大的提高系統(tǒng)的性能,避免大量時(shí)間的浪費(fèi)。
 對(duì)于在同一節(jié)點(diǎn)多次失效的對(duì)象,則可以考慮在另外的節(jié)點(diǎn)重新啟動(dòng),稱為對(duì)該對(duì)象的異機(jī)恢復(fù)。
3.2 定點(diǎn)恢復(fù)、異機(jī)恢復(fù)
 定點(diǎn)恢復(fù)很重要的一個(gè)方面是恢復(fù)點(diǎn)的記錄,本文采用的是建立執(zhí)行日志的方式。對(duì)于大量數(shù)據(jù)庫(kù)記錄處理的對(duì)象,假設(shè)需要處理1 000條記錄,每10條記錄設(shè)置一個(gè)恢復(fù)點(diǎn),即當(dāng)成功執(zhí)行第10、20、30、……、1 000條記錄時(shí),執(zhí)行日志將產(chǎn)生一行日志信息表示該條記錄以及其之前的記錄已成功執(zhí)行。若對(duì)象在執(zhí)行第901至910條記錄時(shí)失效,恢復(fù)該對(duì)象時(shí)根據(jù)執(zhí)行日志最后一行信息可以知道第900條以及之前的記錄已成功執(zhí)行,于是,可以直接從第901條記錄開(kāi)始處理,而不是從第1條記錄開(kāi)始。由此可見(jiàn),運(yùn)用定點(diǎn)恢復(fù)可以避免大量無(wú)謂的時(shí)間浪費(fèi),很大程度上提高系統(tǒng)的性能。
 一個(gè)對(duì)象在同一個(gè)節(jié)點(diǎn)失效次數(shù)超過(guò)設(shè)定閾值(比如4次),無(wú)論是該節(jié)點(diǎn)機(jī)器兼容性問(wèn)題還是資源搶占問(wèn)題,單純的在本機(jī)上的REDO已經(jīng)不能解決問(wèn)題。因此,可以考慮對(duì)該對(duì)象進(jìn)行異機(jī)恢復(fù),在另一個(gè)節(jié)點(diǎn)重啟該對(duì)象。
 對(duì)于只采取REDO恢復(fù)策略的對(duì)象,只需要在選定的節(jié)點(diǎn)上啟動(dòng)該對(duì)象,并在注冊(cè)信息里修改該對(duì)象所在地址即可實(shí)現(xiàn)異機(jī)恢復(fù)。
 對(duì)于已運(yùn)用定點(diǎn)恢復(fù)策略的對(duì)象,異機(jī)恢復(fù)時(shí)可以不考慮其已執(zhí)行情況,簡(jiǎn)單地在另一個(gè)節(jié)點(diǎn)重啟;也可以結(jié)合異機(jī)恢復(fù)與定點(diǎn)恢復(fù),將該對(duì)象執(zhí)行日志復(fù)制到選定的節(jié)點(diǎn),實(shí)現(xiàn)在異機(jī)上的定點(diǎn)恢復(fù)。
4 系統(tǒng)實(shí)現(xiàn)
4.1 基于JADE的系統(tǒng)實(shí)現(xiàn)

 JADE中,任何Agent必須向AMS注冊(cè)[11]。因此,對(duì)于檢測(cè)對(duì)象是Agent的情形,其主要注冊(cè)信息可由AMS獲取,負(fù)責(zé)檢測(cè)該Agent的LDA或者GDA只需記錄該Agent的標(biāo)識(shí)及其狀態(tài)。
 系統(tǒng)實(shí)現(xiàn)的各Agent按照職能不同分別駐留在主控節(jié)點(diǎn)和各計(jì)算節(jié)點(diǎn)上。主要有駐留在主控節(jié)點(diǎn)的容錯(cuò)Agent(FTA,F(xiàn)ault Tolerant Agent)、日志收集Agent(LCA,Log Collector Agent);駐留在各計(jì)算節(jié)點(diǎn)的局部檢測(cè)Agent(LDA,Local Detector Agent)、日志Agent(LA,Log Agent)、恢復(fù)Agent(RA,Recovery Agent);檢測(cè)對(duì)象為在各計(jì)算節(jié)點(diǎn)上提供服務(wù)的計(jì)算Agent(CA,Compute Agent)。各Agent相互關(guān)系如圖5所示。

 各Agent詳細(xì)功能如下所述:
 LDA:負(fù)責(zé)CA、LA、RA的檢測(cè)工作。發(fā)現(xiàn)LA或CA失效時(shí)向RA發(fā)出本機(jī)恢復(fù)請(qǐng)求;必要時(shí)向FTA發(fā)出CA異機(jī)恢復(fù)請(qǐng)求;負(fù)責(zé)RA的本機(jī)恢復(fù)工作。(本文設(shè)定檢測(cè)間隔為1 000 ms)
FTA:負(fù)責(zé)LDA、LCA的檢測(cè)工作。發(fā)現(xiàn)LDA失效時(shí)向其所在節(jié)點(diǎn)的RA發(fā)出LDA恢復(fù)請(qǐng)求;接收來(lái)自LDA的CA異機(jī)恢復(fù)請(qǐng)求并將該請(qǐng)求轉(zhuǎn)發(fā)到合適的節(jié)點(diǎn);負(fù)責(zé)LCA的恢復(fù)工作。另外,F(xiàn)TA還負(fù)責(zé)LDA所在主機(jī)的檢測(cè)及通報(bào)工作。
 RA:接收來(lái)自LDA的本機(jī)恢復(fù)請(qǐng)求,并按照請(qǐng)求恢復(fù)本機(jī)的LA或CA;接收來(lái)自FTA的LDA恢復(fù)請(qǐng)求,并按照請(qǐng)求恢復(fù)本機(jī)上的LDA;接收來(lái)自FTA的CA異機(jī)恢復(fù)請(qǐng)求,并在本機(jī)上啟動(dòng)指定的CA,實(shí)現(xiàn)異機(jī)恢復(fù);必要時(shí)對(duì)CA進(jìn)行定點(diǎn)恢復(fù)。
 CA:計(jì)算能力提供者,屬于業(yè)務(wù)系統(tǒng),本文所設(shè)計(jì)容錯(cuò)系統(tǒng)的服務(wù)對(duì)象。
 LA:本機(jī)日志記錄器;負(fù)責(zé)本機(jī)上各Agent運(yùn)行情況的記錄,并將必要的信息發(fā)送給日志收集器LCA;負(fù)責(zé)用于定點(diǎn)恢復(fù)CA所必須的CA執(zhí)行日志的創(chuàng)建及維護(hù)。
 LCA:日志收集器;負(fù)責(zé)收集各節(jié)點(diǎn)的日志信息(CA執(zhí)行日志不在收集范圍內(nèi));負(fù)責(zé)記錄FTA的運(yùn)行情況。
 分析上述Agent詳細(xì)功能,RA即為前述檢測(cè)模型中的失效處理器(主要處理策略是REDO,即重新啟動(dòng));LDA除去本機(jī)檢測(cè)工作外,還負(fù)擔(dān)了一部分失效處理器的工作(RA的恢復(fù));FTA主要表現(xiàn)為前述模型中的全局檢測(cè)器GDA,此外,也負(fù)擔(dān)了一部分失效處理器的工作(LCA的恢復(fù);LDA恢復(fù)請(qǐng)求、CA異機(jī)恢復(fù)請(qǐng)求的轉(zhuǎn)發(fā))。
4.2 容錯(cuò)Agent
 容錯(cuò)Agent(FTA)在系統(tǒng)中起著極其重要的作用,負(fù)責(zé)全局檢測(cè)工作與恢復(fù)請(qǐng)求的調(diào)度。為檢測(cè)各LDA,F(xiàn)TA需要維護(hù)一張記錄LDA信息的狀態(tài)表。由于LDA作為一個(gè)Agent,其主要信息均可從AMS獲取,F(xiàn)TA實(shí)際需要維護(hù)的信息僅僅是LDA標(biāo)識(shí)(AID)及LDA狀態(tài)(是否正常)。本文選用HashMap<AID,Boolean>作為記錄LDA狀態(tài)信息的數(shù)據(jù)結(jié)構(gòu),key-value對(duì)分別記錄LDA標(biāo)識(shí)及LDA狀態(tài)。
定義一個(gè)TickerBehaviour負(fù)責(zé)周期性的更新LDA狀態(tài)表和LDA的失效判斷與處理工作。周期設(shè)定為1 000 ms。LDA失效判斷與處理算法如下描述:
?。?)從AMS獲取Agent描述信息AMSAgentDescription;
?。?)遍歷LDA狀態(tài)表,與AMSAgentDescription進(jìn)行比對(duì),更新?tīng)顟B(tài)表;
 (3)若所有LDA狀態(tài)均為true,則算法結(jié)束;否則,轉(zhuǎn)到(4);
 (4)對(duì)狀態(tài)為false的LDA,通過(guò)AMSAgentDescription找尋與該LDA同節(jié)點(diǎn)的恢復(fù)Agent(RA);若該RA存在,則轉(zhuǎn)到(5);若不存在,則ping該節(jié)點(diǎn)地址,然后轉(zhuǎn)到(6);
 (5)標(biāo)識(shí)失效類型為L(zhǎng)DA失效并請(qǐng)求該RA恢復(fù)其節(jié)點(diǎn)所屬LDA,然后轉(zhuǎn)到(7);
   (6)若ping該節(jié)點(diǎn)有響應(yīng),則標(biāo)識(shí)失效類型為節(jié)點(diǎn)系統(tǒng)失效并給出警告;若無(wú)響應(yīng),則標(biāo)識(shí)失效類型為節(jié)點(diǎn)主機(jī)失效并給出警告;
   (7)若全部狀態(tài)為false的LDA均處理完畢,則算法結(jié)束;否則,取下一個(gè)狀態(tài)為false的LDA,然后轉(zhuǎn)到(4)。
5 實(shí)驗(yàn)結(jié)果
    系統(tǒng)主控節(jié)點(diǎn)的計(jì)算機(jī)配置如下:Windows 7(32位)操作系統(tǒng);Intel(R)Core(TM)i3-2120 CPU@3.30 GHz;4 GB內(nèi)存。
 系統(tǒng)計(jì)算節(jié)點(diǎn)(3臺(tái))的計(jì)算機(jī)配置如下:Windows 7(32位)操作系統(tǒng);Intel(R)Core(TM)2 Quad CPU Q8400@2.66GHz 2.67GHz;4.00 GB內(nèi)存。
5.1 系統(tǒng)測(cè)試
 臺(tái)風(fēng)預(yù)報(bào)系統(tǒng)[13]中的相似路徑計(jì)算是一個(gè)分布式、多Agent的計(jì)算過(guò)程,其計(jì)算節(jié)點(diǎn)的失效將導(dǎo)致整體計(jì)算結(jié)果的不可靠,故為其提供容錯(cuò)是必要的。在此背景下,本文以在臺(tái)風(fēng)預(yù)報(bào)系統(tǒng)中提供相似路徑計(jì)算服務(wù)的計(jì)算Agent為系統(tǒng)檢測(cè)對(duì)象,對(duì)系統(tǒng)進(jìn)行功能和性能上的測(cè)試。主控和各計(jì)算節(jié)點(diǎn)啟動(dòng)、各功能Agent加載后,可在主控節(jié)點(diǎn)RMA控制界面查看詳細(xì)信息。
 Main_Container(主容器)包含維持JADE平臺(tái)功能的3個(gè)服務(wù):ams、df和rma;masterContainer(主控節(jié)點(diǎn)容器)包含3個(gè)Agent:容錯(cuò)Agent(FTA)、日志收集Agent(LCA)和主控Agent(MA),MA屬于臺(tái)風(fēng)預(yù)報(bào)系統(tǒng)的業(yè)務(wù)處理Agent,主要負(fù)責(zé)計(jì)算任務(wù)的分發(fā),不是本文研究重點(diǎn),故不進(jìn)行詳細(xì)敘述;之后是3個(gè)computeContainer(計(jì)算節(jié)點(diǎn)容器),每個(gè)computeContainer里包含有計(jì)算Agent(CA)、局部檢測(cè)Agent(LDA)、日志Agent(LA)、恢復(fù)Agent(RA)以及負(fù)載平衡Agent(LBA),LBA負(fù)責(zé)計(jì)算各計(jì)算節(jié)點(diǎn)的負(fù)載值和計(jì)算能力值,為MA分發(fā)任務(wù)和FTA申請(qǐng)異機(jī)恢復(fù)時(shí)選擇節(jié)點(diǎn)提供參考。為方便操作,特制定Agent命名規(guī)則如下:(XXXXAgent)_(IP)_(端口號(hào))。如:
recoverAgent_218.193.124.101_1013@Softlab-C-PC:1099/JADE
 其中,“@”之前為本文系統(tǒng)指定的Agent名,“@”之后則為JADE平臺(tái)自動(dòng)添加的標(biāo)識(shí)。
5.2 結(jié)論
 經(jīng)過(guò)比較大量的測(cè)試,各Agent本機(jī)恢復(fù)均可在1 s內(nèi)完成;異機(jī)恢復(fù)花費(fèi)時(shí)間較長(zhǎng),在2 s到3 s之間。系統(tǒng)功能和性能上均符合本文前述內(nèi)容的要求。由此印證本文提出的兩層失效檢測(cè)模型和改進(jìn)行的REDO恢復(fù)策略真實(shí)可行。
 Agent所表現(xiàn)出來(lái)的自主性、反應(yīng)性、交互性、協(xié)作性、主動(dòng)性和智能性等特性,為構(gòu)建容錯(cuò)中間件提供了一種新的技術(shù)途徑。采用兩層的失效檢測(cè)模型,局部檢測(cè)Agent與全局檢測(cè)Agent等多Agent分工合作,能夠較好地協(xié)作完成失效檢測(cè)的工作。定點(diǎn)恢復(fù)的采用大大的提高了系統(tǒng)的效率。基于多Agent的容錯(cuò)中間件融合了Agent技術(shù)、容錯(cuò)技術(shù)與中間件技術(shù),能夠?yàn)榉植际饺蒎e(cuò)應(yīng)用開(kāi)發(fā)提供框架支持,提供自主的、協(xié)作的失效檢測(cè)和恢復(fù)服務(wù),簡(jiǎn)化業(yè)務(wù)應(yīng)用開(kāi)發(fā)過(guò)程,提高系統(tǒng)的效率和魯棒性。
參考文獻(xiàn)
[1] 張龍,孟慶鑫.基于中間件的容錯(cuò)服務(wù)的研究[J].計(jì)算機(jī)與網(wǎng)絡(luò),2009(12):62-64.
[2] 裘方敏.分布式系統(tǒng)容錯(cuò)中間件的研究與實(shí)現(xiàn)[D].長(zhǎng)沙:中南大學(xué),2007.
[3] 雷燕,豐雁.分布式系統(tǒng)失效檢測(cè)器模型的研究[J].河南科學(xué),2011(5):586-590.
[4] 毛新軍,常志明.面向Agent的軟件設(shè)計(jì)模式[J].計(jì)算機(jī)工程與科學(xué),2011(6):72-78.
[5] TOM?魣?譒EK M. Architecture of Multi-Agent System[C]. International Conference on Emerging eLearning Technologies and Applications. High Tatras, Slovakia, 2012.
[6] Jiang Guorui, Wu Lin. Research on Method of Multi-Agent Negotiation Strategy Selection[C]. ICCGI 2010:110-115.
[7] 張偉.多Agent系統(tǒng)協(xié)商模型研究與設(shè)計(jì)[D].石家莊:河北經(jīng)貿(mào)大學(xué),2011.
[8] 王俊,鄭笛,吳泉源.一種基于Agent的多粒度負(fù)載平衡中間件[J].計(jì)算機(jī)工程與科學(xué),2007(9):143-146.
[9] SYLVAIN D, GUESSOUM Z, ZIANE M. Adaptive Replication in Fault-Tolerant Multi-Agent Systems[C]. International Conferences on Web Intelligence and Intelligent Agent Technology, 2011.
[10] 劉漢雷.基于Jade的多Agent圖像檢索系統(tǒng)[D].武漢:華中科技大學(xué),2011.
[11] 于衛(wèi)紅.基于JADE平臺(tái)的多Agent系統(tǒng)開(kāi)發(fā)技術(shù)[M].第一版.北京:國(guó)防工業(yè)出版社,2011:35-61.
[12] JADE PROGRAMMER′S GUIDE[DB/OL].http://jade.tilab.com/doc/programmersguide.pdf.
[13] 鄒宇,郭朝珍.臺(tái)風(fēng)綜合預(yù)報(bào)GDSS的研究[J].計(jì)算機(jī)與現(xiàn)代化,2010(2):11-14.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。