摘? 要: 針對Web服務(wù)組合環(huán)境對失效檢測方法進行研究,設(shè)計主從式失效檢測器和失效檢測算法并對其進行分析,,為Web服務(wù)組合監(jiān)測提供有效的手段,,實驗?zāi)M表明,,該算法能有效降低錯誤率,,提高系統(tǒng)可用性,。
??? 關(guān)鍵詞: 失效檢測器;Web服務(wù)組合;失效檢測算法
?
通過Web服務(wù)組合來動態(tài)生成新的應(yīng)用系統(tǒng),,以滿足企業(yè)的動態(tài)需求,,已成為Web服務(wù)技術(shù)不斷向前發(fā)展的技術(shù)動力和研究熱點,。但是在非可靠異構(gòu),、分布式自治和快速變化發(fā)展的網(wǎng)絡(luò)環(huán)境中,Web服務(wù)組合運行可能會受到網(wǎng)絡(luò)失效,、通信模式變化,、基礎(chǔ)設(shè)施變更等多種問題的影響,這都將影響所提供的服務(wù)質(zhì)量,。復(fù)雜的網(wǎng)絡(luò)環(huán)境,、難以預(yù)測的各類故障以及無法確定的功能變化使得業(yè)務(wù)流程的功能與服務(wù)質(zhì)量均難以得到保障,導(dǎo)致服務(wù)組合提供者可能由此失去客戶的信任,,因此,,Web服務(wù)組合的失效檢測研究十分重要,。失效檢測器是軟件系統(tǒng)可靠性保障的基本技術(shù),其性能的好壞直接影響到系統(tǒng)容錯的能力,,而失效檢測器的核心就是失效檢測算法,。Web服務(wù)組合的失效檢測是指Web服務(wù)組合在運行階段的失效檢測[1]。
當前服務(wù)組合的容錯研究主要集中在標準協(xié)議的擴展,、成分服務(wù)的容錯以及Web服務(wù)組合容錯平臺等幾個方面,。參考文獻[2]將監(jiān)測及檢測服務(wù)結(jié)合到面向服務(wù)架構(gòu)QoS管理中,通過監(jiān)測服務(wù)反饋的信息,,診斷服務(wù)能夠檢測狀態(tài)的變化,,并利用一種基于圖模型的方法對狀態(tài)變化原因進行推斷。參考文獻[3]提出了一種基于模型的Web服務(wù)組合故障診斷方法,,該方法向服務(wù)組合中的每個服務(wù)增加一個局部診斷器,,并為整個組合服務(wù)設(shè)置一個全局診斷器,全局診斷器與局部診斷器進行協(xié)作,,并推斷Web服務(wù)組合發(fā)生故障的原因,。參考文獻[4]提出了一種基于反射技術(shù)的Web服務(wù)失效處理方法,通過在Web服務(wù)請求者和服務(wù)提供者配置反射層,,使之檢測到造成服務(wù)失效的各種狀態(tài),,調(diào)整Web服務(wù)的內(nèi)部結(jié)構(gòu)和運行狀態(tài),使得Web服務(wù)適應(yīng)環(huán)境的變化,,以提高Web服務(wù)的適應(yīng)性和健壯性,。Marin[5]等人提出了適應(yīng)網(wǎng)絡(luò)狀況變化的失效檢測方法,適應(yīng)性失效檢測方法在一定程度上提高了失效檢測器的檢測準確度,,但是由于沒有考慮網(wǎng)絡(luò)丟包的影響,,不能有效地減少由于網(wǎng)絡(luò)丟包而產(chǎn)生的誤判,影響了適應(yīng)性失效檢測器的檢測服務(wù)質(zhì)量,。
1 失效檢測及其基本模型
失效檢測(failure detection)是Web服務(wù)組合系統(tǒng)可靠性保障的基本技術(shù),,它對運行時系統(tǒng)的存活狀態(tài)進行檢測。提供失效檢測功能的組件稱為失效檢測器FD(failure detector)[6],,失效檢測器是失效恢復(fù),、動態(tài)重啟、可靠性通信,、集群管理等功能的基礎(chǔ),。在Web服務(wù)組合中需要提供良好的失效檢測機制來及時檢測服務(wù)器以及其中服務(wù)組件和應(yīng)用組件的失效情況,從而提高系統(tǒng)的可靠性和可用性,。
失效檢測一般采用超時機制實現(xiàn),,即通過被檢測對象在規(guī)定時間內(nèi)有無應(yīng)答來判斷失效,有兩種最基本的檢測方法:心跳策略和輪詢檢測方法。下面分別對它們進行介紹,。
心跳策略:由被檢測進程按照一定的時間時隔定期地向失效檢測器發(fā)送心跳信息“I am alive”,,通告它們依然存活。如果失效檢測器超過某一期限沒有收到心跳消息,,失效檢測器則認為其失效,。該模式被檢測對象向失效檢測器“推”(push)失效事件,我們也稱為“推”模式,,其消息交換如圖1所示,。
輪詢檢測:失效檢測器q定時發(fā)送查詢消息“Are you alive?”,檢查被檢測對象p的狀態(tài),,被檢測對象p收到查詢消息后返回應(yīng)答消息“I am alive!”,,如果失效檢測器超過一定時間間隔沒有收到應(yīng)答消息,則認為被檢測對象失效,。該模式失效檢測器從被檢測對象中“拉”(pull)失效事件,,我們又稱之為“拉”模式,其消息交換如圖2所示,。
??? 兩種檢測模型各有優(yōu)劣,。pull模型需要失效檢測器發(fā)送查詢消息,并等待被檢測對象返回應(yīng)答,,這樣導(dǎo)致失效檢測時間較長,;同時,由于失效檢測器發(fā)送消息,,被檢測對象返回消息導(dǎo)致同樣的性能需要兩倍數(shù)量的消息數(shù)目。然而,,pull模型是一種主動檢測方式,,可以只在需要的時候才發(fā)起檢測,而且,,使用pull模型可以保證每個檢測消息及其延時對檢測結(jié)果的影響是獨立的,。
2 主從式失效檢測算法
??? 算法基本思想:在主失效檢測器中,每個被檢測進程周期性地向主失效檢測進程發(fā)送不同序號的心跳消息,,心跳消息的序號總是遞增的,。主失效檢測器對收到的心跳消息的歷史紀錄作統(tǒng)計、分析,,并計算出下一個心跳消息到達的時間上限,,如果超過等待時限未收到心跳消息,系統(tǒng)自動啟動從失效檢測器,。從失效檢測進程主動發(fā)送問詢消息給被檢測進程,,如果收到對被檢測進程的應(yīng)答消息,則認為被檢測進程正常,,返回主失效檢測器,;否則認為被檢測進程失效,。
2.1 主失效檢測算法基本思想
??? 主失效檢測算法中,采用心跳策略,。被檢測進程p每間隔ti周期性地向推失效檢測器進程q發(fā)送消息mpi(i為檢測消息的序號),;進程q負責接收消息。進程q收到消息之后,,首先將消息mpi的接收消息時間(Tcurrent-f)保存到滑動窗口W中,。當進程q超過E(TD)沒有收到進程p的發(fā)送消息mpi時,即認為該系統(tǒng)資源失效,,則啟動從失效檢測器進行確認,。主失效檢測器算法主要步驟如下:
???
2.2 從失效檢測算法基本思想
??? 從失效檢測器算法現(xiàn)實比較簡單,在主失效檢測器調(diào)用時才啟用,。算法采用輪詢策略,,從失效檢測器主要由進程q發(fā)送查詢信息mqi給進程p,p在收到該消息后發(fā)回應(yīng)答消息mai,,以表明自己處于正常狀態(tài),;如果進程q沒有收到應(yīng)答消息mai則認為進程p失效。從失效檢測算法主要步驟如下所示:
???
3 算法性能評估
3.1 服務(wù)質(zhì)量指標
??? 為了準確評價失效檢測器的QoS,,Chen等人提出了定量的QoS度量體系[7],。用T表示失效檢測器認為進程處于正常狀態(tài),S表示失效檢測器認為進程處于失效狀態(tài),,S-transition表示失效檢測器輸出由T變?yōu)镾,,T-transition表示失效檢測器的輸出S變?yōu)門。下面三個基本評價指標分別為:
??? 檢測時間(TD):這一指標保障失效檢測器輸出的完整性要求,,是指從進程發(fā)生失效的時刻到它開始被懷疑的時間,,即到發(fā)生S-transition之間的時間。這一指標保障失效檢測器輸出的完整性要求,。
??? 錯誤間隔時間(TMR):兩次發(fā)生錯誤輸出之間的時間間隔的度量,,即連續(xù)兩個S-transition之間的時間間隔,描述失效檢測的準確度,。
??? 錯誤持續(xù)時間(TM):檢測器修正一次錯誤懷疑所需要的時間,,即從S-transition到下一個T-transition之間的時間間隔,描述失效檢測的準確度,。
??? 錯誤率(λM):指失效檢測器產(chǎn)生懷疑的比率,,是在一次運行中出現(xiàn)的頻度就是一個常用的體現(xiàn)失效檢測系統(tǒng)準確性的指標。
3.2 計算閾值TDU
??? TDU是一個失效檢測器與被檢測對象之間的服務(wù)質(zhì)量的基本評價指標之一,, TDU是檢測時間的上界,,限定了檢測速度,保證了失效檢測的完整性級別,是一個十分重要的評價指標,。
??? 圖3介紹了主從式失效檢測器的執(zhí)行過程,。進程p定時向進程q發(fā)送心跳消息,進程q分別在T0,、T1,、T2時刻收到前3個心跳消息,并預(yù)測下一個心跳消息將在T3時刻到達,。而實際上進程p在T6時刻失效,對于進程q的時鐘而言是T5時刻,,則進程q在T3時刻未收到應(yīng)該到達的心跳消息,開始懷疑進程p,。則實際檢測時間為:T3-T5,,即T3-T4+η,η為心跳消息的時間延遲,。通常TDU=△ti+E(η),,E(η)為平均心跳消息延遲。進程q超過TDU時間沒有收到進程p的心跳消息,,則主動發(fā)送問詢消息,,查看進程p是否失效。如果進程q在發(fā)送問詢消息后,,超過T7-T3+TDU時間沒有收到應(yīng)答消息,,則確認進程p失效。
3.3 算法證明
??? 在Web服務(wù)組合失效檢測中,,失效檢測器為應(yīng)用程序提供失效檢測等價于◇P類的失效檢測器,,即失效檢測器需達到強完整性和強準確性級別。通過以下分析說明本失效檢測器等價于◇P類失效檢測器,。
??? (1)強完整性,。在任意一次運行中,每一個發(fā)生失效的進程最終都會被所有正確的進程永遠判定為失效,。
??? 證明:假設(shè)在一個正確的進程q檢測進程p。需要證明:如果p發(fā)生失效,,那么存在某一時刻對于任一的T>t,,失效檢測的結(jié)果都將判定p失效。在p失效之后,,將不會發(fā)出任何消息,,也就是說,進程q此后將收不到任何消息,,因此,,E(TD)將不會發(fā)生變化。假設(shè)mpi是q在時刻tlast從p收到的最后一個應(yīng)答消息,則i值將永遠一個常數(shù),。此后,,在任何查詢時刻tcurrent>tlast,都有△T=Tcurrent-f,,隨著tcurrent的增長,,△T將嚴格單調(diào)遞增。因此,,對于應(yīng)用程序A,,在任意時刻tcurrent>tlast查詢,都會將p判定為失效進程,。
??? (2)強準確性,。在任意一次運行中,在某個時刻t之后,,每個正確的進程都不會被錯誤認為發(fā)生失效,。
??? 證明:同上面的證明進行同樣的假設(shè),需要證明:在某個時刻t之后,,應(yīng)用程序A將不會錯誤地認為p發(fā)生失效,。因為此屬性具有最終(eventual)性。假設(shè)mpi是p發(fā)出的第i個消息,,發(fā)送時刻為ts,,進程處理消息時間和消息的傳遞時間都有上界,分別記為tp和tt,。因此,,對于任意檢測消息mpi(j≥i),其檢測時間TDt≤tp+tt,。那么,,對于任意的查詢時刻tcurrent>ts,△T存在一個上界,。只要TDU>TDt,,那么,對于任意的查詢時刻tcurrent>ts+tp+tt,,A都不會懷疑進程p,。
3.4 性能分析
??? 本文對主從式失效檢測算法進行了編碼方式仿真,實驗操作系統(tǒng)為Microsoft Windows XP,,配置1.6 GHz和1 GB內(nèi)存,,在Microsoft Visual Studio.NET環(huán)境中,使用C#開發(fā)了對失效檢測算法進行有效性驗證的模擬程序,。心跳周期△ti設(shè)定為1 000 ms,,進行了算法準確性測試,。
??? 為了測試系統(tǒng)的準確性,與Marin等人提出適應(yīng)網(wǎng)絡(luò)狀況變化的失效檢測方法作比較測試,,比較結(jié)果如圖4所示,。從圖4可以看出,本失效檢測較Marin有較低的誤判率,,當被檢測對象數(shù)目超過300時候表現(xiàn)尤其明顯,,差距也越來越大,原因是這時候系統(tǒng)負載過高,,系統(tǒng)錯誤數(shù)提高,,誤判率就隨之上升。
??? 為了適應(yīng)復(fù)雜的網(wǎng)絡(luò)生態(tài)環(huán)境,,增強了系統(tǒng)的可用性,,本文設(shè)計了主從式失效檢測算法,對相應(yīng)的主從式失效檢測器進行性能測試和分析,。新算法減少了失效檢測器在網(wǎng)絡(luò)延時出現(xiàn)的誤判情況,,進一步適應(yīng)應(yīng)用環(huán)境,實驗證明,,在相同情況下,,主從式失效檢測算法準確性有明顯提高,優(yōu)化了失效檢測器的檢測服務(wù)質(zhì)量,增強了系統(tǒng)的可用性,,為流程執(zhí)行時業(yè)務(wù)功能與服務(wù)質(zhì)量的保障提供了一種有效的機制,。
參考文獻
[1] 付曉東,鄒平.一種規(guī)則驅(qū)動的Web服務(wù)組合例外處理方法[J].計算機應(yīng)用,2007,,27(8):1984-1990.
[2] WANG G J,, WANG C Z, CHEN A,, et al. Service levelmanagement using qos monitoring,, diagnostics, and adaptation for networked enterprise systems[C]//Proceedings of the 9th IEEE International EDOC Enterprise Computing Conference. Washington,, DC: IEEE ComputerSociety,, 2005:
239-250.
[3] ARDISSONO L, CONSOLE L,, GOY A,, et al. Enhancing Web services with diagnostic capabilities[C]//Proceedings of the 3 IEEE European Conference on Web Services. Washington: IEEE Computer Society, 2005:182-191.
[4] 徐新衛(wèi),,周良,丁秋林. Web服務(wù)失效處理的反射中間件技術(shù)應(yīng)用與實現(xiàn)[J].系統(tǒng)工程與電子技術(shù),,2007,,29(8):1371-1376.
[5] BERTIER M,, MARIN O, SENS P. Implementation and Performance Evaluation of an Adaptable Failure Detector[C]. Proc. IEEE Int’l Conf. Dependable Systems and Networks(DSN’2002), 2002:354-363.
[6] 陳寧江,,魏峻,,楊波,黃濤.Web應(yīng)用服務(wù)器的適應(yīng)性失效檢測[J].軟件學報,,2005,,16(11):1929-1938.
[7] CHEN W, TOUEG S,, AGUILERA M K. On the Quality of Service of Failure Detectors. IEEE Tran on Computers,, 2002,51(5):561-580.