摘? 要: 針對(duì)Web服務(wù)組合環(huán)境對(duì)失效檢測(cè)方法進(jìn)行研究,設(shè)計(jì)主從式失效檢測(cè)器和失效檢測(cè)算法并對(duì)其進(jìn)行分析,為Web服務(wù)組合監(jiān)測(cè)提供有效的手段,實(shí)驗(yàn)?zāi)M表明,該算法能有效降低錯(cuò)誤率,提高系統(tǒng)可用性。
??? 關(guān)鍵詞: 失效檢測(cè)器;Web服務(wù)組合;失效檢測(cè)算法
?
通過(guò)Web服務(wù)組合來(lái)動(dòng)態(tài)生成新的應(yīng)用系統(tǒng),以滿足企業(yè)的動(dòng)態(tài)需求,已成為Web服務(wù)技術(shù)不斷向前發(fā)展的技術(shù)動(dòng)力和研究熱點(diǎn)。但是在非可靠異構(gòu)、分布式自治和快速變化發(fā)展的網(wǎng)絡(luò)環(huán)境中,Web服務(wù)組合運(yùn)行可能會(huì)受到網(wǎng)絡(luò)失效、通信模式變化、基礎(chǔ)設(shè)施變更等多種問(wèn)題的影響,這都將影響所提供的服務(wù)質(zhì)量。復(fù)雜的網(wǎng)絡(luò)環(huán)境、難以預(yù)測(cè)的各類故障以及無(wú)法確定的功能變化使得業(yè)務(wù)流程的功能與服務(wù)質(zhì)量均難以得到保障,導(dǎo)致服務(wù)組合提供者可能由此失去客戶的信任,因此,Web服務(wù)組合的失效檢測(cè)研究十分重要。失效檢測(cè)器是軟件系統(tǒng)可靠性保障的基本技術(shù),其性能的好壞直接影響到系統(tǒng)容錯(cuò)的能力,而失效檢測(cè)器的核心就是失效檢測(cè)算法。Web服務(wù)組合的失效檢測(cè)是指Web服務(wù)組合在運(yùn)行階段的失效檢測(cè)[1]。
當(dāng)前服務(wù)組合的容錯(cuò)研究主要集中在標(biāo)準(zhǔn)協(xié)議的擴(kuò)展、成分服務(wù)的容錯(cuò)以及Web服務(wù)組合容錯(cuò)平臺(tái)等幾個(gè)方面。參考文獻(xiàn)[2]將監(jiān)測(cè)及檢測(cè)服務(wù)結(jié)合到面向服務(wù)架構(gòu)QoS管理中,通過(guò)監(jiān)測(cè)服務(wù)反饋的信息,診斷服務(wù)能夠檢測(cè)狀態(tài)的變化,并利用一種基于圖模型的方法對(duì)狀態(tài)變化原因進(jìn)行推斷。參考文獻(xiàn)[3]提出了一種基于模型的Web服務(wù)組合故障診斷方法,該方法向服務(wù)組合中的每個(gè)服務(wù)增加一個(gè)局部診斷器,并為整個(gè)組合服務(wù)設(shè)置一個(gè)全局診斷器,全局診斷器與局部診斷器進(jìn)行協(xié)作,并推斷Web服務(wù)組合發(fā)生故障的原因。參考文獻(xiàn)[4]提出了一種基于反射技術(shù)的Web服務(wù)失效處理方法,通過(guò)在Web服務(wù)請(qǐng)求者和服務(wù)提供者配置反射層,使之檢測(cè)到造成服務(wù)失效的各種狀態(tài),調(diào)整Web服務(wù)的內(nèi)部結(jié)構(gòu)和運(yùn)行狀態(tài),使得Web服務(wù)適應(yīng)環(huán)境的變化,以提高Web服務(wù)的適應(yīng)性和健壯性。Marin[5]等人提出了適應(yīng)網(wǎng)絡(luò)狀況變化的失效檢測(cè)方法,適應(yīng)性失效檢測(cè)方法在一定程度上提高了失效檢測(cè)器的檢測(cè)準(zhǔn)確度,但是由于沒(méi)有考慮網(wǎng)絡(luò)丟包的影響,不能有效地減少由于網(wǎng)絡(luò)丟包而產(chǎn)生的誤判,影響了適應(yīng)性失效檢測(cè)器的檢測(cè)服務(wù)質(zhì)量。
1 失效檢測(cè)及其基本模型
失效檢測(cè)(failure detection)是Web服務(wù)組合系統(tǒng)可靠性保障的基本技術(shù),它對(duì)運(yùn)行時(shí)系統(tǒng)的存活狀態(tài)進(jìn)行檢測(cè)。提供失效檢測(cè)功能的組件稱為失效檢測(cè)器FD(failure detector)[6],失效檢測(cè)器是失效恢復(fù)、動(dòng)態(tài)重啟、可靠性通信、集群管理等功能的基礎(chǔ)。在Web服務(wù)組合中需要提供良好的失效檢測(cè)機(jī)制來(lái)及時(shí)檢測(cè)服務(wù)器以及其中服務(wù)組件和應(yīng)用組件的失效情況,從而提高系統(tǒng)的可靠性和可用性。
失效檢測(cè)一般采用超時(shí)機(jī)制實(shí)現(xiàn),即通過(guò)被檢測(cè)對(duì)象在規(guī)定時(shí)間內(nèi)有無(wú)應(yīng)答來(lái)判斷失效,有兩種最基本的檢測(cè)方法:心跳策略和輪詢檢測(cè)方法。下面分別對(duì)它們進(jìn)行介紹。
心跳策略:由被檢測(cè)進(jìn)程按照一定的時(shí)間時(shí)隔定期地向失效檢測(cè)器發(fā)送心跳信息“I am alive”,通告它們依然存活。如果失效檢測(cè)器超過(guò)某一期限沒(méi)有收到心跳消息,失效檢測(cè)器則認(rèn)為其失效。該模式被檢測(cè)對(duì)象向失效檢測(cè)器“推”(push)失效事件,我們也稱為“推”模式,其消息交換如圖1所示。
輪詢檢測(cè):失效檢測(cè)器q定時(shí)發(fā)送查詢消息“Are you alive?”,檢查被檢測(cè)對(duì)象p的狀態(tài),被檢測(cè)對(duì)象p收到查詢消息后返回應(yīng)答消息“I am alive!”,如果失效檢測(cè)器超過(guò)一定時(shí)間間隔沒(méi)有收到應(yīng)答消息,則認(rèn)為被檢測(cè)對(duì)象失效。該模式失效檢測(cè)器從被檢測(cè)對(duì)象中“拉”(pull)失效事件,我們又稱之為“拉”模式,其消息交換如圖2所示。
??? 兩種檢測(cè)模型各有優(yōu)劣。pull模型需要失效檢測(cè)器發(fā)送查詢消息,并等待被檢測(cè)對(duì)象返回應(yīng)答,這樣導(dǎo)致失效檢測(cè)時(shí)間較長(zhǎng);同時(shí),由于失效檢測(cè)器發(fā)送消息,被檢測(cè)對(duì)象返回消息導(dǎo)致同樣的性能需要兩倍數(shù)量的消息數(shù)目。然而,pull模型是一種主動(dòng)檢測(cè)方式,可以只在需要的時(shí)候才發(fā)起檢測(cè),而且,使用pull模型可以保證每個(gè)檢測(cè)消息及其延時(shí)對(duì)檢測(cè)結(jié)果的影響是獨(dú)立的。
2 主從式失效檢測(cè)算法
??? 算法基本思想:在主失效檢測(cè)器中,每個(gè)被檢測(cè)進(jìn)程周期性地向主失效檢測(cè)進(jìn)程發(fā)送不同序號(hào)的心跳消息,心跳消息的序號(hào)總是遞增的。主失效檢測(cè)器對(duì)收到的心跳消息的歷史紀(jì)錄作統(tǒng)計(jì)、分析,并計(jì)算出下一個(gè)心跳消息到達(dá)的時(shí)間上限,如果超過(guò)等待時(shí)限未收到心跳消息,系統(tǒng)自動(dòng)啟動(dòng)從失效檢測(cè)器。從失效檢測(cè)進(jìn)程主動(dòng)發(fā)送問(wèn)詢消息給被檢測(cè)進(jìn)程,如果收到對(duì)被檢測(cè)進(jìn)程的應(yīng)答消息,則認(rèn)為被檢測(cè)進(jìn)程正常,返回主失效檢測(cè)器;否則認(rèn)為被檢測(cè)進(jìn)程失效。
2.1 主失效檢測(cè)算法基本思想
??? 主失效檢測(cè)算法中,采用心跳策略。被檢測(cè)進(jìn)程p每間隔ti周期性地向推失效檢測(cè)器進(jìn)程q發(fā)送消息mpi(i為檢測(cè)消息的序號(hào));進(jìn)程q負(fù)責(zé)接收消息。進(jìn)程q收到消息之后,首先將消息mpi的接收消息時(shí)間(Tcurrent-f)保存到滑動(dòng)窗口W中。當(dāng)進(jìn)程q超過(guò)E(TD)沒(méi)有收到進(jìn)程p的發(fā)送消息mpi時(shí),即認(rèn)為該系統(tǒng)資源失效,則啟動(dòng)從失效檢測(cè)器進(jìn)行確認(rèn)。主失效檢測(cè)器算法主要步驟如下:
???
2.2 從失效檢測(cè)算法基本思想
??? 從失效檢測(cè)器算法現(xiàn)實(shí)比較簡(jiǎn)單,在主失效檢測(cè)器調(diào)用時(shí)才啟用。算法采用輪詢策略,從失效檢測(cè)器主要由進(jìn)程q發(fā)送查詢信息mqi給進(jìn)程p,p在收到該消息后發(fā)回應(yīng)答消息mai,以表明自己處于正常狀態(tài);如果進(jìn)程q沒(méi)有收到應(yīng)答消息mai則認(rèn)為進(jìn)程p失效。從失效檢測(cè)算法主要步驟如下所示:
???
3 算法性能評(píng)估
3.1 服務(wù)質(zhì)量指標(biāo)
??? 為了準(zhǔn)確評(píng)價(jià)失效檢測(cè)器的QoS,Chen等人提出了定量的QoS度量體系[7]。用T表示失效檢測(cè)器認(rèn)為進(jìn)程處于正常狀態(tài),S表示失效檢測(cè)器認(rèn)為進(jìn)程處于失效狀態(tài),S-transition表示失效檢測(cè)器輸出由T變?yōu)镾,T-transition表示失效檢測(cè)器的輸出S變?yōu)門(mén)。下面三個(gè)基本評(píng)價(jià)指標(biāo)分別為:
??? 檢測(cè)時(shí)間(TD):這一指標(biāo)保障失效檢測(cè)器輸出的完整性要求,是指從進(jìn)程發(fā)生失效的時(shí)刻到它開(kāi)始被懷疑的時(shí)間,即到發(fā)生S-transition之間的時(shí)間。這一指標(biāo)保障失效檢測(cè)器輸出的完整性要求。
??? 錯(cuò)誤間隔時(shí)間(TMR):兩次發(fā)生錯(cuò)誤輸出之間的時(shí)間間隔的度量,即連續(xù)兩個(gè)S-transition之間的時(shí)間間隔,描述失效檢測(cè)的準(zhǔn)確度。
??? 錯(cuò)誤持續(xù)時(shí)間(TM):檢測(cè)器修正一次錯(cuò)誤懷疑所需要的時(shí)間,即從S-transition到下一個(gè)T-transition之間的時(shí)間間隔,描述失效檢測(cè)的準(zhǔn)確度。
??? 錯(cuò)誤率(λM):指失效檢測(cè)器產(chǎn)生懷疑的比率,是在一次運(yùn)行中出現(xiàn)的頻度就是一個(gè)常用的體現(xiàn)失效檢測(cè)系統(tǒng)準(zhǔn)確性的指標(biāo)。
3.2 計(jì)算閾值TDU
??? TDU是一個(gè)失效檢測(cè)器與被檢測(cè)對(duì)象之間的服務(wù)質(zhì)量的基本評(píng)價(jià)指標(biāo)之一, TDU是檢測(cè)時(shí)間的上界,限定了檢測(cè)速度,保證了失效檢測(cè)的完整性級(jí)別,是一個(gè)十分重要的評(píng)價(jià)指標(biāo)。
??? 圖3介紹了主從式失效檢測(cè)器的執(zhí)行過(guò)程。進(jìn)程p定時(shí)向進(jìn)程q發(fā)送心跳消息,進(jìn)程q分別在T0、T1、T2時(shí)刻收到前3個(gè)心跳消息,并預(yù)測(cè)下一個(gè)心跳消息將在T3時(shí)刻到達(dá)。而實(shí)際上進(jìn)程p在T6時(shí)刻失效,對(duì)于進(jìn)程q的時(shí)鐘而言是T5時(shí)刻,則進(jìn)程q在T3時(shí)刻未收到應(yīng)該到達(dá)的心跳消息,開(kāi)始懷疑進(jìn)程p。則實(shí)際檢測(cè)時(shí)間為:T3-T5,即T3-T4+η,η為心跳消息的時(shí)間延遲。通常TDU=△ti+E(η),E(η)為平均心跳消息延遲。進(jìn)程q超過(guò)TDU時(shí)間沒(méi)有收到進(jìn)程p的心跳消息,則主動(dòng)發(fā)送問(wèn)詢消息,查看進(jìn)程p是否失效。如果進(jìn)程q在發(fā)送問(wèn)詢消息后,超過(guò)T7-T3+TDU時(shí)間沒(méi)有收到應(yīng)答消息,則確認(rèn)進(jìn)程p失效。
3.3 算法證明
??? 在Web服務(wù)組合失效檢測(cè)中,失效檢測(cè)器為應(yīng)用程序提供失效檢測(cè)等價(jià)于◇P類的失效檢測(cè)器,即失效檢測(cè)器需達(dá)到強(qiáng)完整性和強(qiáng)準(zhǔn)確性級(jí)別。通過(guò)以下分析說(shuō)明本失效檢測(cè)器等價(jià)于◇P類失效檢測(cè)器。
??? (1)強(qiáng)完整性。在任意一次運(yùn)行中,每一個(gè)發(fā)生失效的進(jìn)程最終都會(huì)被所有正確的進(jìn)程永遠(yuǎn)判定為失效。
??? 證明:假設(shè)在一個(gè)正確的進(jìn)程q檢測(cè)進(jìn)程p。需要證明:如果p發(fā)生失效,那么存在某一時(shí)刻對(duì)于任一的T>t,失效檢測(cè)的結(jié)果都將判定p失效。在p失效之后,將不會(huì)發(fā)出任何消息,也就是說(shuō),進(jìn)程q此后將收不到任何消息,因此,E(TD)將不會(huì)發(fā)生變化。假設(shè)mpi是q在時(shí)刻tlast從p收到的最后一個(gè)應(yīng)答消息,則i值將永遠(yuǎn)一個(gè)常數(shù)。此后,在任何查詢時(shí)刻tcurrent>tlast,都有△T=Tcurrent-f,隨著tcurrent的增長(zhǎng),△T將嚴(yán)格單調(diào)遞增。因此,對(duì)于應(yīng)用程序A,在任意時(shí)刻tcurrent>tlast查詢,都會(huì)將p判定為失效進(jìn)程。
??? (2)強(qiáng)準(zhǔn)確性。在任意一次運(yùn)行中,在某個(gè)時(shí)刻t之后,每個(gè)正確的進(jìn)程都不會(huì)被錯(cuò)誤認(rèn)為發(fā)生失效。
??? 證明:同上面的證明進(jìn)行同樣的假設(shè),需要證明:在某個(gè)時(shí)刻t之后,應(yīng)用程序A將不會(huì)錯(cuò)誤地認(rèn)為p發(fā)生失效。因?yàn)榇藢傩跃哂凶罱K(eventual)性。假設(shè)mpi是p發(fā)出的第i個(gè)消息,發(fā)送時(shí)刻為ts,進(jìn)程處理消息時(shí)間和消息的傳遞時(shí)間都有上界,分別記為tp和tt。因此,對(duì)于任意檢測(cè)消息mpi(j≥i),其檢測(cè)時(shí)間TDt≤tp+tt。那么,對(duì)于任意的查詢時(shí)刻tcurrent>ts,△T存在一個(gè)上界。只要TDU>TDt,那么,對(duì)于任意的查詢時(shí)刻tcurrent>ts+tp+tt,A都不會(huì)懷疑進(jìn)程p。
3.4 性能分析
??? 本文對(duì)主從式失效檢測(cè)算法進(jìn)行了編碼方式仿真,實(shí)驗(yàn)操作系統(tǒng)為Microsoft Windows XP,配置1.6 GHz和1 GB內(nèi)存,在Microsoft Visual Studio.NET環(huán)境中,使用C#開(kāi)發(fā)了對(duì)失效檢測(cè)算法進(jìn)行有效性驗(yàn)證的模擬程序。心跳周期△ti設(shè)定為1 000 ms,進(jìn)行了算法準(zhǔn)確性測(cè)試。
??? 為了測(cè)試系統(tǒng)的準(zhǔn)確性,與Marin等人提出適應(yīng)網(wǎng)絡(luò)狀況變化的失效檢測(cè)方法作比較測(cè)試,比較結(jié)果如圖4所示。從圖4可以看出,本失效檢測(cè)較Marin有較低的誤判率,當(dāng)被檢測(cè)對(duì)象數(shù)目超過(guò)300時(shí)候表現(xiàn)尤其明顯,差距也越來(lái)越大,原因是這時(shí)候系統(tǒng)負(fù)載過(guò)高,系統(tǒng)錯(cuò)誤數(shù)提高,誤判率就隨之上升。
??? 為了適應(yīng)復(fù)雜的網(wǎng)絡(luò)生態(tài)環(huán)境,增強(qiáng)了系統(tǒng)的可用性,本文設(shè)計(jì)了主從式失效檢測(cè)算法,對(duì)相應(yīng)的主從式失效檢測(cè)器進(jìn)行性能測(cè)試和分析。新算法減少了失效檢測(cè)器在網(wǎng)絡(luò)延時(shí)出現(xiàn)的誤判情況,進(jìn)一步適應(yīng)應(yīng)用環(huán)境,實(shí)驗(yàn)證明,在相同情況下,主從式失效檢測(cè)算法準(zhǔn)確性有明顯提高,優(yōu)化了失效檢測(cè)器的檢測(cè)服務(wù)質(zhì)量,增強(qiáng)了系統(tǒng)的可用性,為流程執(zhí)行時(shí)業(yè)務(wù)功能與服務(wù)質(zhì)量的保障提供了一種有效的機(jī)制。
參考文獻(xiàn)
[1] 付曉東,鄒平.一種規(guī)則驅(qū)動(dòng)的Web服務(wù)組合例外處理方法[J].計(jì)算機(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)用與實(shí)現(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)性失效檢測(cè)[J].軟件學(xué)報(bào),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.