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

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

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

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

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

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

 

 

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

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

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

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

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

此內容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。
主站蜘蛛池模板: 国产精品亚洲一区二区在线观看 | 日韩精品专区 | 美女视频黄的全免费网站 | 成人影视大全 | 新一级毛片国语版 | 久久夜色撩人精品国产 | 欧美人与动交tv | 永久免费在线播放 | 日日操狠狠干 | 国产精品精品国产一区二区 | 好男人社区成人影院在线观看 | 欧美视频精品 | 九九性视频 | 亚洲伊人久久大香线蕉苏妲己 | 永久在线观看视频 | 日本三级免费片 | 最近免费中文字幕视频高清在线看 | 深夜福利网站在线观看 | 毛片毛多| 国产色视频网站免费观看 | 日韩午夜精品 | 欧美在线一区二区三区欧美 | 亚洲国产剧情在线 | 天天躁日日躁狠狠躁欧美日韩 | 波多野结衣中文字幕一区二区三区 | 日本欧美一区 | 男女爽爽无遮拦午夜视频 | 成人男女网18免费看 | 亚洲人成网站色7799在线观看 | 在线黄| 国产在线一区二区三区四区 | 羞羞网站在线免费观看 | 久久看免费| 蜜桃成人在线 | 在线免费观看黄色大片 | 欧美最新一区二区三区四区 | 一级片手机在线 | 香焦视频在线观看黄 | 久久成年人视频 | 欧美日本道免费一区二区三区 | 久久久久久福利 |