姒鑒哲,姜 瑛,李榮宸,陳威偉
1.云南省計(jì)算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室,昆明 650500
2.昆明理工大學(xué) 信息工程與自動(dòng)化學(xué)院,昆明 650500
云計(jì)算是一種在并行計(jì)算、分布式計(jì)算等技術(shù)的基礎(chǔ)上發(fā)展而來(lái)的計(jì)算模式[1],而服務(wù)則是面向云計(jì)算環(huán)境中承載各項(xiàng)資源及使用模式和能力交付的重要手段。目前,在電子商務(wù)、社交網(wǎng)絡(luò)、互聯(lián)網(wǎng)金融等領(lǐng)域,在線的服務(wù)已構(gòu)成了人們?nèi)粘9ぷ?、生活中的重要部分。隨著云計(jì)算技術(shù)的不斷發(fā)展,越來(lái)越多的服務(wù)開始走向云端[2],為產(chǎn)業(yè)帶來(lái)了更多發(fā)展的可能性和創(chuàng)造性。相較于傳統(tǒng)的計(jì)算機(jī)系統(tǒng),云計(jì)算環(huán)境具備開放性、復(fù)雜性、不可預(yù)測(cè)性等特點(diǎn),其上部署服務(wù)及服務(wù)組件眾多且交互關(guān)系復(fù)雜,將增加服務(wù)發(fā)生故障的概率[3],如果故障隨著服務(wù)間的持續(xù)交互進(jìn)行傳播擴(kuò)散,將出現(xiàn)更多隱患。
近年來(lái),亞馬遜、阿里云等多家云計(jì)算服務(wù)先后因?yàn)槌霈F(xiàn)了故障,故障持續(xù)傳播后致使威脅用戶數(shù)據(jù)安全、服務(wù)大規(guī)模失效、嚴(yán)重影響服務(wù)運(yùn)行質(zhì)量的事件發(fā)生[4],給云計(jì)算環(huán)境下服務(wù)產(chǎn)業(yè)帶來(lái)了極大的挑戰(zhàn)。因此,針對(duì)云計(jì)算環(huán)境中運(yùn)行服務(wù),在故障發(fā)生時(shí)需要明確發(fā)生故障的服務(wù),將其作為問(wèn)題根源,及時(shí)對(duì)該故障帶來(lái)的負(fù)面影響進(jìn)行分析,合理根據(jù)故障傳播的趨勢(shì)判別服務(wù)故障傳播路徑,協(xié)助相關(guān)人員高效有序地對(duì)故障進(jìn)行處理,遏制故障在云計(jì)算環(huán)境中的持續(xù)傳播,從而保障服務(wù)高質(zhì)量運(yùn)行,避免造成更大損失。
故障傳播影響分析在近年得到了廣泛發(fā)展,在面向服務(wù)的架構(gòu)中,唐倫等人[4]根據(jù)網(wǎng)絡(luò)虛擬化環(huán)境下故障的多層傳播關(guān)系,構(gòu)建故障與癥狀的依賴圖模型,引入深度信念網(wǎng)絡(luò)進(jìn)行提取,利用故障傳播的時(shí)間相關(guān)性,使用動(dòng)態(tài)貝葉斯網(wǎng)絡(luò)對(duì)故障根源進(jìn)行實(shí)時(shí)診斷。王燾等人[5]提出了一種面向異常傳播的微服務(wù)故障診斷方法,首先建立服務(wù)依賴圖;然后,基于回歸分析構(gòu)建度量與API調(diào)用之間的回歸模型以檢測(cè)異常微服務(wù),基于服務(wù)依賴圖以及異常服務(wù)集合得到故障傳播分析結(jié)果。薛利興等人[6]提出網(wǎng)絡(luò)化軟件系統(tǒng)故障傳播分析與可靠性評(píng)估,構(gòu)件執(zhí)行過(guò)程、構(gòu)件之間的交互過(guò)程,基于馬爾可夫鏈建立軟件故障傳播性模型,進(jìn)行故障分析。LIN等人[7]通過(guò)抓取服務(wù)間網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)信息用以獲取服務(wù)調(diào)用關(guān)系,當(dāng)服務(wù)調(diào)用延遲脫離服務(wù)水平目標(biāo)范圍,則檢測(cè)為異常,通過(guò)分析服務(wù)依賴關(guān)系進(jìn)行傳播分析推斷引發(fā)異常的潛在原因。針對(duì)軟件資源與任務(wù)聯(lián)系的故障傳播與擴(kuò)散問(wèn)題,王友俊等人[8]提出一種基于超圖的Cyber空間故障傳播研究方法,利用Petri網(wǎng)建立關(guān)系模型,通過(guò)傳播能力、傳播系數(shù)、擴(kuò)散系數(shù)等指標(biāo)來(lái)描述故障的傳播過(guò)程,采用鄰接矩陣分析并推導(dǎo)出指標(biāo)量化方法,給出故障在Petri網(wǎng)中產(chǎn)生的影響力函數(shù),分析故障擴(kuò)散路徑。
面向復(fù)雜系統(tǒng)研究領(lǐng)域,何俊秀等人[9]提出一種基于體系結(jié)構(gòu)的軟件故障傳播模型,在軟件體系結(jié)構(gòu)建模的基礎(chǔ)上,考慮組件信號(hào)間故障傳播效應(yīng),通過(guò)引入組件容錯(cuò)率和失效率的概念,構(gòu)建組件狀態(tài)轉(zhuǎn)移矩陣對(duì)信號(hào)在軟件模塊中的故障傳播現(xiàn)象建立模型。尹進(jìn)田等人[10]提出一種基于故障傳播與因果關(guān)系的故障溯源方法,通過(guò)建立體現(xiàn)時(shí)空特性的系統(tǒng)故障傳播模型,利用因果關(guān)系技術(shù)判定不同觀測(cè)點(diǎn)信號(hào)間的因果關(guān)系,進(jìn)行故障傳播分析。Sun等人[1]提出一種基于高斯貝葉斯網(wǎng)絡(luò)的故障傳播路徑識(shí)別推理算法,針對(duì)工業(yè)系統(tǒng)背景下建立的高斯貝葉斯網(wǎng)絡(luò)中特定故障節(jié)點(diǎn),根據(jù)參數(shù)權(quán)重和值的波動(dòng)確定父節(jié)點(diǎn),基于條件概率和二分法的分解,進(jìn)行最大條件概率的估計(jì)逐層追蹤到網(wǎng)絡(luò)中的故障傳播路徑。王林等人[11]提出一種考慮父節(jié)點(diǎn)影響的貝葉斯網(wǎng)絡(luò)故障路徑追溯算法,通過(guò)構(gòu)建貝葉斯網(wǎng)絡(luò),計(jì)算貝葉斯網(wǎng)絡(luò)中故障子節(jié)點(diǎn)的最大條件分布值,然后與真實(shí)觀測(cè)值比較進(jìn)行故障傳播分析,最終在工業(yè)系統(tǒng)中得以應(yīng)用。
對(duì)上述相關(guān)文獻(xiàn)進(jìn)行分析,以上故障傳播影響分析方法均取得了重大技術(shù)進(jìn)步,但仍存在以下局限性:
(1)過(guò)多關(guān)注歷史數(shù)據(jù),與故障發(fā)生時(shí)的實(shí)際情況存在偏差,致使方法效果受到限制。盡管歷史數(shù)據(jù)具備重要參考意義,但過(guò)度依賴其進(jìn)行判斷易偏離服務(wù)實(shí)際運(yùn)行狀況,文獻(xiàn)[1,6,8-9,11]這些方法過(guò)多關(guān)注歷史數(shù)據(jù),而歷史數(shù)據(jù)往往只能體現(xiàn)在某一特定時(shí)間段內(nèi)所蘊(yùn)含的特征規(guī)律且所包含信息并不能對(duì)可能發(fā)生的狀況進(jìn)行完整覆蓋致使方法的準(zhǔn)確率受到限制,另外通過(guò)大量的歷史數(shù)據(jù)進(jìn)行分析,往往需要較長(zhǎng)時(shí)間進(jìn)行預(yù)處理分析,從而使得方法的效率受到影響[6]。
(2)僅考慮單一因素衡量故障的傳播影響,造成部分關(guān)鍵因素缺失,導(dǎo)致方法分析存在不足。文獻(xiàn)[5,7,10]方法在一定程度上簡(jiǎn)化了計(jì)算復(fù)雜度,提高了計(jì)算效率,但文獻(xiàn)[5]依據(jù)服務(wù)在整個(gè)依賴圖中的被調(diào)用次數(shù)作為故障傳播影響力,缺乏對(duì)實(shí)際服務(wù)運(yùn)行狀況、服務(wù)間的局部相關(guān)關(guān)系的分析致使方法存在缺陷;文獻(xiàn)[7]僅依賴服務(wù)調(diào)用延遲時(shí)長(zhǎng)判定服務(wù)異常推斷服務(wù)故障傳播影響,文獻(xiàn)[10]僅依賴服務(wù)間信號(hào)判斷組件間的因果關(guān)系,忽略了大量有效的可觀測(cè)信息。例如處在同一運(yùn)行環(huán)境和不同環(huán)境下運(yùn)行的服務(wù)受故障影響程度不同、路徑上服務(wù)的運(yùn)行狀況存在差異性、節(jié)點(diǎn)自身屬性、吞吐量不同等。調(diào)用延遲時(shí)長(zhǎng)蘊(yùn)含信息有限,會(huì)造成大量故障影響要素缺失從而致使故障傳播影響分析準(zhǔn)確率不高。
(3)無(wú)法適用動(dòng)態(tài)變更的系統(tǒng)結(jié)構(gòu)進(jìn)行故障傳播分析。例如文獻(xiàn)[4,11]所需依賴有向無(wú)環(huán)圖構(gòu)建貝葉斯網(wǎng)絡(luò),文獻(xiàn)[6]方法的應(yīng)用需針對(duì)系統(tǒng)自身固有拓?fù)?,而云?jì)算環(huán)境下服務(wù)運(yùn)行較為復(fù)雜且無(wú)定式,服務(wù)的運(yùn)行狀態(tài)、服務(wù)間的關(guān)系也在持續(xù)變更,難以保障滿足方法運(yùn)行條件,因此文獻(xiàn)[4,6,11]方法應(yīng)用在云計(jì)算環(huán)境中進(jìn)行服務(wù)故障傳播分析十分受限。
針對(duì)上述故障傳播影響分析方法中存在的問(wèn)題,本文提出了一種云計(jì)算環(huán)境下服務(wù)故障傳播路徑判別方法,動(dòng)態(tài)建立適用云計(jì)算環(huán)境的服務(wù)交互圖;此外,不再重點(diǎn)關(guān)注歷史數(shù)據(jù),分析當(dāng)前處于運(yùn)行狀態(tài)下服務(wù)的運(yùn)行數(shù)據(jù)、環(huán)境數(shù)據(jù),確定發(fā)生故障的服務(wù),計(jì)算服務(wù)故障可能性,隨后綜合分析多種服務(wù)故障傳播因素計(jì)算服務(wù)故障傳播概率進(jìn)行服務(wù)故障傳播路徑判別。
在云計(jì)算環(huán)境中,針對(duì)某些目標(biāo)要求,單個(gè)服務(wù)往往難以完成,因此需要多個(gè)服務(wù)交互配合共同完成,這樣在服務(wù)與服務(wù)間就形成了錯(cuò)綜復(fù)雜的關(guān)系,因?yàn)榉?wù)的運(yùn)行狀態(tài)及執(zhí)行的業(yè)務(wù)邏輯持續(xù)改變,隨之致使服務(wù)間的關(guān)系也是不斷變化的,而這樣的關(guān)系,往往成為了服務(wù)故障時(shí)故障進(jìn)行傳播的主要途徑。同時(shí),服務(wù)受故障傳播影響至發(fā)生故障也是一個(gè)持續(xù)變化的過(guò)程,因此只有明確服務(wù)間關(guān)系,對(duì)服務(wù)的服務(wù)運(yùn)行、環(huán)境狀況持續(xù)關(guān)注才能對(duì)故障傳播影響進(jìn)行合理分析,判別服務(wù)故障傳播路徑,為相關(guān)運(yùn)維人員遏制故障傳播態(tài)勢(shì)提供參考依據(jù)。
因此,本文依據(jù)云計(jì)算環(huán)境下服務(wù)的實(shí)際交互情況動(dòng)態(tài)建立服務(wù)交互圖,在此基礎(chǔ)上優(yōu)化服務(wù)交互圖結(jié)構(gòu)建立服務(wù)關(guān)系圖,明確服務(wù)間關(guān)系。后續(xù)根據(jù)服務(wù)的運(yùn)行、環(huán)境狀況,在故障發(fā)生時(shí),確定發(fā)生故障的服務(wù),合理計(jì)算服務(wù)故障傳播概率,有效判別服務(wù)故障傳播路徑。服務(wù)故障傳播路徑判別方法的流程圖如圖1所示。
圖1 服務(wù)故障傳播路徑判別方法的流程圖Fig.1 Process of method for discriminating service failure propagation path
當(dāng)服務(wù)發(fā)生故障時(shí),故障可能通過(guò)服務(wù)與服務(wù)間的交互連接作為媒介在云計(jì)算環(huán)境中不斷傳播,進(jìn)而致使更多的服務(wù)發(fā)生故障,導(dǎo)致批量服務(wù)失效。因此,明確云計(jì)算環(huán)境下服務(wù)的實(shí)際交互情況對(duì)于判別服務(wù)故障傳播路徑十分重要,此外云計(jì)算環(huán)境下服務(wù)眾多、交互頻繁,而圖結(jié)構(gòu)能較好地表現(xiàn)這樣的復(fù)雜狀況。為了建立后續(xù)判別服務(wù)故障傳播路徑的基礎(chǔ),本節(jié)依據(jù)服務(wù)云計(jì)算環(huán)境下服務(wù)交互狀況動(dòng)態(tài)建立服務(wù)交互圖(service interaction diagram,SID),定義如下:
定義1服務(wù)交互圖是一個(gè)描述服務(wù)間交互狀況的有向圖,表示為一個(gè)四元組SID={V,E,S,N},V={v1,v2,…,vi},E={<v1,v2>,<v2,v1>,…,<vi,vj>},S={s1,s2,…,vm},N={n1,n2,…,nm}。服務(wù)交互圖具備反自反性,?v∈V,有<vi,vi>?E。
其中,V表示有窮非空的服務(wù)節(jié)點(diǎn)集合,包含當(dāng)前云計(jì)算環(huán)境中正在運(yùn)行的全部服務(wù);E是邊集,即服務(wù)間交互連接集合;S為對(duì)應(yīng)服務(wù)間交互關(guān)系的狀態(tài)標(biāo)記集合,集合中元素s={Running||End}表示不同交互連接具有的正在執(zhí)行或完成狀態(tài);N為對(duì)應(yīng)服務(wù)間交互連接的服務(wù)交互編號(hào)集合,集合中的每一元素作為指定交互連接的唯一標(biāo)識(shí)。
服務(wù)交互圖可以準(zhǔn)確描述服務(wù)運(yùn)行過(guò)程中的數(shù)據(jù)流向、交互狀態(tài)及服務(wù)之間的交互關(guān)系,服務(wù)交互圖建立算法描述如算法1所示。
算法1服務(wù)交互圖建立算法
服務(wù)交互圖建立算法的時(shí)間復(fù)雜度為O(m+sn/2)。其中,m為系統(tǒng)中服務(wù)個(gè)數(shù),s為處于正在運(yùn)行狀態(tài)服務(wù)個(gè)數(shù),n表示服務(wù)交互圖中包含的交互連接個(gè)數(shù)。
在云計(jì)算環(huán)境下,建立的服務(wù)交互圖不可能是一成不變的,隨著時(shí)間的推移,一些已有的交互連接狀態(tài)在不斷發(fā)生改變,一些新的交互連接也仍在產(chǎn)生。本節(jié)通過(guò)持續(xù)監(jiān)測(cè)服務(wù)運(yùn)行數(shù)據(jù),獲取最新服務(wù)運(yùn)行狀態(tài),進(jìn)而以算法1中所述算法變更交互連接的執(zhí)行狀態(tài)標(biāo)記和增補(bǔ)交互連接,實(shí)現(xiàn)服務(wù)交互圖的動(dòng)態(tài)更新。
依照算法1構(gòu)建服務(wù)交互圖示例見(jiàn)圖2。圖中圓形表示服務(wù)個(gè)體,線條起始為服務(wù)的使用者,箭頭指向?yàn)楸皇褂梅?wù),虛線代表該交互已經(jīng)結(jié)束,實(shí)線表示該交互正在進(jìn)行,邊上數(shù)值為服務(wù)交互編號(hào)標(biāo)識(shí)。
圖2 服務(wù)交互圖示例Fig.2 Example of service interaction diagram
云計(jì)算環(huán)境中,隨著時(shí)間的推移,運(yùn)行的服務(wù)數(shù)量愈漸增加,服務(wù)與服務(wù)間的交互不斷多樣,服務(wù)的運(yùn)行狀態(tài)瞬息萬(wàn)變,從而使得服務(wù)交互圖結(jié)構(gòu)十分復(fù)雜,在故障發(fā)生時(shí),使用服務(wù)交互圖進(jìn)行服務(wù)故障路徑判別將增加系統(tǒng)資源占用,降低服務(wù)故障路徑判別的效率,削弱方法整體的有效性。因此本節(jié)在2.1節(jié)服務(wù)交互圖的基礎(chǔ)上,為了保留服務(wù)交互圖中的交互信息,通過(guò)統(tǒng)計(jì)相同服務(wù)間的交互頻次,以達(dá)到優(yōu)化服務(wù)交互圖結(jié)構(gòu),提升故障發(fā)生時(shí),服務(wù)故障傳播路徑判別效率為目的,建立了服務(wù)關(guān)系圖(service relationship diagram,SRD),服務(wù)關(guān)系圖定義如下:
定義2服務(wù)關(guān)系圖是一個(gè)在服務(wù)交互圖的基礎(chǔ)上描述服務(wù)間相關(guān)關(guān)系的有向圖,將服務(wù)關(guān)系圖描述為一個(gè)三元組SRD={A,R,W},A={a1,a2,…,ax},R={<a1,a2>,<a2,a1>,…,<ax,ay>},W={w1,w2,…,wx}。服務(wù)關(guān)系圖具備反自反性,?a∈A,有<ax,ax>?R。其中A表示服務(wù)交互圖中包含的所有服務(wù);R為服務(wù)間的關(guān)系集合;W為描述服務(wù)間關(guān)系上交互頻次的集合。
服務(wù)關(guān)系圖建立算法如算法2所示。
算法2服務(wù)關(guān)系圖建立算法
服務(wù)關(guān)系圖建立算法的時(shí)間復(fù)雜度為O(en)。其中e為服務(wù)交互圖中包含的服務(wù)個(gè)數(shù),n為服務(wù)交互圖中服務(wù)的平均出度。
算法2首先對(duì)已產(chǎn)生的服務(wù)交互圖進(jìn)行遍歷,依據(jù)服務(wù)交互圖中表述相同服務(wù)間的服務(wù)交互連接進(jìn)行統(tǒng)計(jì),實(shí)現(xiàn)服務(wù)關(guān)系圖的建立,依照算法2所述服務(wù)關(guān)系圖建立算法構(gòu)建服務(wù)關(guān)系圖示例如圖3所示。
圖3 服務(wù)關(guān)系圖示例Fig.3 Example of service relation diagram
圖中圓形表示服務(wù)個(gè)體,線條起始為服務(wù)的使用者,箭頭指向?yàn)楸皇褂梅?wù),邊上數(shù)值為線條起始服務(wù)對(duì)箭頭后服務(wù)的交互頻次。
在云計(jì)算環(huán)境下服務(wù)發(fā)生故障,若要針對(duì)故障進(jìn)行傳播影響分析,合理判別故障傳播路徑,首要任務(wù)是確定發(fā)生故障的服務(wù)。
通常服務(wù)故障的表現(xiàn)形式往往可以通過(guò)服務(wù)產(chǎn)生的運(yùn)行數(shù)據(jù)波動(dòng)映射出來(lái),但由于云計(jì)算環(huán)境下復(fù)雜的服務(wù)運(yùn)行特性,服務(wù)與服務(wù)間的關(guān)系錯(cuò)綜交織,在分布式云計(jì)算的技術(shù)背景下存在著多個(gè)服務(wù)共同部署于同一物理設(shè)備或虛擬節(jié)點(diǎn)上,這樣無(wú)疑使得確定發(fā)生故障的服務(wù)、計(jì)算服務(wù)故障可能性不僅需要考慮服務(wù)運(yùn)行數(shù)據(jù),還需要對(duì)服務(wù)運(yùn)行時(shí)的環(huán)境數(shù)據(jù)來(lái)綜合分析。
在進(jìn)行確定發(fā)生故障的服務(wù)時(shí),一些常用的故障檢測(cè)方法,如文獻(xiàn)[12]通過(guò)改進(jìn)粒子群算法優(yōu)化的支持向量機(jī)算法進(jìn)行故障檢測(cè),文獻(xiàn)[13]通過(guò)模糊C均值聚類與K近鄰算法進(jìn)行故障檢測(cè)僅能利用獲取數(shù)據(jù)判斷當(dāng)前目標(biāo)對(duì)象是否發(fā)生故障,無(wú)法針對(duì)服務(wù)運(yùn)行處于正常與故障的中間狀態(tài)進(jìn)行描述。采用均值檢驗(yàn)方法除可以確定發(fā)生故障的服務(wù)外,還可以清晰地依據(jù)服務(wù)的運(yùn)行數(shù)據(jù)與服務(wù)環(huán)境數(shù)據(jù)反映其余服務(wù)當(dāng)前不同運(yùn)行狀況。
均值檢驗(yàn)方法采用ADF檢驗(yàn)方法[14]檢驗(yàn)服務(wù)正常運(yùn)行狀態(tài)下采集的批量服務(wù)運(yùn)行數(shù)據(jù)與環(huán)境數(shù)據(jù)平穩(wěn)性,確保實(shí)驗(yàn)數(shù)據(jù)樣本整體符合服務(wù)正常運(yùn)行時(shí)的數(shù)據(jù)特征。隨后通過(guò)抽取少部分實(shí)驗(yàn)數(shù)據(jù)樣本和當(dāng)前獲取的服務(wù)運(yùn)行、環(huán)境數(shù)據(jù)分別同實(shí)驗(yàn)數(shù)據(jù)樣本整體執(zhí)行t檢驗(yàn)[14]后求均值進(jìn)行對(duì)比分析服務(wù)當(dāng)前運(yùn)行、環(huán)境狀態(tài)與服務(wù)正常運(yùn)行、環(huán)境狀態(tài)時(shí)的偏離程度。通過(guò)主成分分析[15]從服務(wù)運(yùn)行狀態(tài)、服務(wù)環(huán)境狀態(tài)對(duì)服務(wù)故障發(fā)生可能性進(jìn)行影響貢獻(xiàn)確定,將其作為權(quán)重分配,以獲得最終服務(wù)故障可能性結(jié)果。
本節(jié)通過(guò)均值檢驗(yàn)方法進(jìn)行服務(wù)故障可能性計(jì)算,如算法3所示。
算法3服務(wù)故障可能性算法
其中,ADF檢驗(yàn)(augmented dickey-Fuller test)為數(shù)據(jù)集平穩(wěn)性檢驗(yàn)方法,原理為判斷服務(wù)監(jiān)測(cè)指標(biāo)數(shù)據(jù)是否存在單位根,若指標(biāo)數(shù)據(jù)平穩(wěn),就不存在單位根;反之,則存在單位根[14];t檢驗(yàn)(student’s t test)為用t分布理論來(lái)推論服務(wù)故障發(fā)生的概率,比較兩個(gè)平均數(shù)的差異度,t檢驗(yàn)統(tǒng)計(jì)量為:
其中,n為樣本數(shù),Xˉ為樣本平均數(shù),σx為樣本標(biāo)準(zhǔn)偏差[14];主成分分析(principal component analysis,PCA),是一種統(tǒng)計(jì)方法。通過(guò)正交變換將一組可能存在相關(guān)性的變量轉(zhuǎn)換為一組線性不相關(guān)的變量,通過(guò)這些變量不同程度地反映了針對(duì)問(wèn)題的信息,在數(shù)學(xué)建模中最常用它來(lái)求各項(xiàng)指標(biāo)對(duì)整體的影響的貢獻(xiàn)率[15]。
算法3的時(shí)間復(fù)雜度為O(nf(ADFR)+nf(ADFE)+2nf(tR)+2nf(tE)+f(PCA)),其中n為處于正在運(yùn)行狀態(tài)下的服務(wù)個(gè)數(shù),f(ADFR)為ADF檢驗(yàn)服務(wù)運(yùn)行數(shù)據(jù)的時(shí)間復(fù)雜度,f(ADFE)為ADF檢驗(yàn)服務(wù)環(huán)境數(shù)據(jù)的時(shí)間復(fù)雜度,f(tR)為t檢驗(yàn)服務(wù)運(yùn)行數(shù)據(jù)的時(shí)間復(fù)雜度,f(tE)為t檢驗(yàn)服務(wù)環(huán)境數(shù)據(jù)的時(shí)間復(fù)雜度,f(PCA)為PCA算法的時(shí)間復(fù)雜度。
此外,為了衡量服務(wù)故障可能性,有效確定發(fā)生故障服務(wù),本節(jié)通過(guò)正常與故障時(shí)的服務(wù)運(yùn)行及環(huán)境數(shù)據(jù)的表現(xiàn)設(shè)定閾值估計(jì)值,當(dāng)計(jì)算所得服務(wù)故障可能性大于設(shè)定閾值估計(jì)值時(shí)則將該服務(wù)確定為故障服務(wù),否則記錄該服務(wù)的故障可能性。
通過(guò)上述方法獲取確定發(fā)生故障的服務(wù)并獲取服務(wù)關(guān)系圖中除故障服務(wù)外服務(wù)的故障可能性,在圖3的基礎(chǔ)上結(jié)合服務(wù)運(yùn)行數(shù)據(jù)、服務(wù)環(huán)境數(shù)據(jù)計(jì)算服務(wù)故障可能性結(jié)果示例如下:
t0時(shí)刻,ServiceA故障可能性為0.31,ServiceB故障可能性為0.46,ServiceC故障可能性為0.27,ServiceD故障可能性為0.83,設(shè)定閾值估計(jì)值為0.8,確定發(fā)生故障服務(wù)為ServiceD。
當(dāng)服務(wù)發(fā)生故障時(shí),故障可能在服務(wù)關(guān)系圖上的服務(wù)間不斷傳播,隨之由于故障傳播的先后不斷進(jìn)行,逐漸形成故障路徑。如果能提前辨別服務(wù)故障傳播路徑,就能及時(shí)對(duì)故障進(jìn)行處理,遏制故障在系統(tǒng)中持續(xù)蔓延造成大規(guī)模服務(wù)失效。本節(jié)首先在2.2節(jié)服務(wù)關(guān)系圖的基礎(chǔ)上分析,結(jié)合2.3節(jié)所得的服務(wù)故障可能性,計(jì)算服務(wù)故障傳播概率,最終判別服務(wù)故障傳播路徑。
2.4.1 服務(wù)故障傳播概率計(jì)算
在服務(wù)故障發(fā)生時(shí),需要多方位考慮服務(wù)故障傳播影響因素,通過(guò)計(jì)算服務(wù)故障傳播概率值,反映故障發(fā)生所帶來(lái)的傳播影響,為確定服務(wù)故障傳播路徑提供切實(shí)依據(jù)。
在計(jì)算服務(wù)故障傳播概率時(shí),除服務(wù)故障可能性外,故障傳播概率還受其他關(guān)系要素影響。從服務(wù)角度來(lái)看,往往服務(wù)與故障服務(wù)間交互的局部相關(guān)關(guān)系緊密程度,同服務(wù)故障傳播概率呈正相關(guān)趨勢(shì);其次,從服務(wù)關(guān)系圖整體出發(fā),服務(wù)在服務(wù)關(guān)系圖中的全局影響力越大,受故障傳播的概率也越大。同時(shí),從業(yè)務(wù)流程來(lái)看,在服務(wù)關(guān)系圖中服務(wù)間眾多業(yè)務(wù)流程聯(lián)系緊密,任一服務(wù)交互過(guò)程都是整個(gè)業(yè)務(wù)流程中的重要一環(huán),因此在進(jìn)行服務(wù)故障傳播概率的計(jì)算對(duì)服務(wù)間的直接與間接交互過(guò)程都不容忽視。
本小節(jié)通過(guò)服務(wù)、服務(wù)關(guān)系圖整體、業(yè)務(wù)流程多角度包含要素,結(jié)合2.3節(jié)服務(wù)故障可能性,引入了SimRank算法計(jì)算服務(wù)故障傳播概率。SimRank是一種基于圖結(jié)構(gòu)的相似度計(jì)算方法,具有較好的準(zhǔn)確性和拓展性,同時(shí)基礎(chǔ)的SimRank算法表達(dá)了如果兩個(gè)服務(wù)的直接交互對(duì)象中存在相似性關(guān)聯(lián),則這兩個(gè)服務(wù)也具備關(guān)聯(lián)關(guān)系的思想。因而通過(guò)該算法能夠較好地挖掘服務(wù)間的直接與間接關(guān)聯(lián)關(guān)系。但基礎(chǔ)的SimRank算法僅使用了服務(wù)關(guān)系圖的結(jié)構(gòu)信息,沒(méi)有考慮服務(wù)關(guān)系圖中邊的信息,同時(shí)也缺乏對(duì)服務(wù)在服務(wù)關(guān)系圖中的影響差異性的考量。因此,本小節(jié)在基礎(chǔ)的SimRank算法[16]上進(jìn)行加權(quán),提出一種適用云計(jì)算環(huán)境下基于服務(wù)關(guān)系圖的服務(wù)相似度計(jì)算方法稱為WsimRank(weighted SimRank)并結(jié)合服務(wù)故障可能性計(jì)算服務(wù)故障傳播概率,計(jì)算方法具體如下:
首先,設(shè)置權(quán)重計(jì)算公式如式(4)所示:
其中,KIi(Vt)表示服務(wù)t的第i個(gè)鄰居服務(wù)在服務(wù)關(guān)系圖中的共計(jì)交互頻次,KIi(Vt)→Vt為服務(wù)t的第i個(gè)鄰居節(jié)點(diǎn)與服務(wù)進(jìn)行的交互頻次,KGraph表示服務(wù)關(guān)系圖中包含所有服務(wù)的共計(jì)交互頻次。
其次,為使方法計(jì)算結(jié)果收斂,本節(jié)對(duì)權(quán)值計(jì)算結(jié)果進(jìn)行標(biāo)準(zhǔn)化處理,具體計(jì)算方式如式(5)所示:
其中,w(Ii(Vt)→Vt)表示服務(wù)t的第i個(gè)鄰居服務(wù)與服務(wù)t的權(quán)值表示服務(wù)t的i個(gè)鄰居節(jié)點(diǎn)與服務(wù)t的權(quán)值之和。獲取了標(biāo)準(zhǔn)化權(quán)值后,對(duì)基礎(chǔ)SimRank算法公式進(jìn)行加權(quán),計(jì)算服務(wù)間相似度如式(6)所示,式(6)需設(shè)置迭代次數(shù),以達(dá)到不斷深入挖掘服務(wù)與服務(wù)間的間接交互信息,具體設(shè)置次數(shù)可依據(jù)服務(wù)關(guān)系圖的大小而定。
其中,C為阻尼系數(shù),Va表示服務(wù)a,Ii(Va)表示服務(wù)a的第i個(gè)鄰居服務(wù)為服務(wù)a的第i個(gè)鄰居節(jié)點(diǎn)與服務(wù)a的標(biāo)準(zhǔn)化權(quán)值,由此獲得服務(wù)間相似度計(jì)算結(jié)果。
依據(jù)式(6)計(jì)算結(jié)果,結(jié)合服務(wù)故障可能性進(jìn)行綜合分析,給出服務(wù)故障傳播概率公式如式(7)所示:
其中k為2.3節(jié)服務(wù)故障可能性計(jì)算結(jié)果。
上述方法的時(shí)間復(fù)雜度為O(td2n2),其中t表示迭代次數(shù),d表示服務(wù)關(guān)系圖上服務(wù)的平均度數(shù),n表示服務(wù)關(guān)系圖中服務(wù)的個(gè)數(shù)。通過(guò)上述方法,完成了對(duì)服務(wù)局部相關(guān)關(guān)系、服務(wù)關(guān)系圖整體、業(yè)務(wù)流程多個(gè)角度包含要素的分析,同時(shí)綜合考量表征服務(wù)實(shí)際運(yùn)行情況的服務(wù)故障可能性,獲得服務(wù)故障傳播概率。
2.4.2 服務(wù)故障傳播路徑確定
進(jìn)行服務(wù)故障傳播路徑的確定,必須準(zhǔn)確地對(duì)服務(wù)故障傳播順序與傳播范圍進(jìn)行界定,才能為相關(guān)人員最大限度地降低損失提供依據(jù)。同時(shí)因?yàn)榉?wù)故障傳播具有雙向性,本節(jié)依據(jù)2.2節(jié)獲取的服務(wù)關(guān)系圖,2.3節(jié)確定發(fā)生故障的服務(wù),2.4.1小節(jié)計(jì)算的服務(wù)故障傳播概率,以確定發(fā)生故障的服務(wù)為路徑起點(diǎn),從該故障服務(wù)前驅(qū)、后繼方向同時(shí)對(duì)與發(fā)生故障的服務(wù)直接或間接交互的服務(wù)進(jìn)行分析,不斷完善服務(wù)故障傳播路徑。當(dāng)下一跳節(jié)點(diǎn)服務(wù)未存在前驅(qū)節(jié)點(diǎn)服務(wù)或后繼節(jié)點(diǎn)服務(wù)時(shí)或下一跳節(jié)點(diǎn)服務(wù)在當(dāng)前路徑中已存在時(shí)或下一跳節(jié)點(diǎn)服務(wù)被故障傳播概率不顯著時(shí),結(jié)束本條路徑確定,最終可獲得以確定發(fā)生故障的服務(wù)為起點(diǎn)的一條或多條服務(wù)故障傳播路徑。服務(wù)故障傳播路徑確定算法如算法4所示。
算法4服務(wù)故障傳播路徑確定算法
算法4的時(shí)間復(fù)雜度為O(2nfl),其中n為服務(wù)關(guān)系圖中包含服務(wù)個(gè)數(shù),f為確定發(fā)生故障服務(wù)的個(gè)數(shù),l為服務(wù)故障傳播路徑的平均路徑長(zhǎng)度。
通過(guò)上述算法過(guò)程,依照?qǐng)D3示例服務(wù)關(guān)系圖、2.3節(jié)實(shí)例給出t0時(shí)刻確定發(fā)生故障服務(wù)結(jié)果,通過(guò)2.4.1節(jié)服務(wù)故障傳播概率計(jì)算方法,所得服務(wù)故障傳播路徑確定結(jié)果示例如下:確定發(fā)生故障的服務(wù)為ServiceD;從后繼方向確定服務(wù)故障傳播路徑為故障服務(wù)ServiceD傳播至ServiceB傳播概率為69%,再至ServiceA傳播概率為37%;確定服務(wù)故障傳播前驅(qū)方向路徑為故障服務(wù)ServiceD傳播至ServiceB傳播概率為69%,再至ServiceC傳播概率為26%。
依據(jù)確定的服務(wù)故障傳播路徑可以協(xié)助相關(guān)管理人員針對(duì)故障發(fā)生及時(shí)做出反應(yīng),避免故障進(jìn)一步傳播擴(kuò)散。
本文搭建了基于OpenStack的彈性云計(jì)算平臺(tái),并于平臺(tái)上搭建基于Hadoop2.7的并發(fā)計(jì)算框架,使用Java語(yǔ)言開發(fā)了8個(gè)服務(wù),8個(gè)服務(wù)具備任意兩兩進(jìn)行交互的能力,可以通過(guò)驅(qū)動(dòng)程序自動(dòng)生成若干服務(wù)交互序列,仿真實(shí)際環(huán)境中服務(wù)的多種行為和狀態(tài)。服務(wù)概況如表1所示。
表1 服務(wù)概況表Table 1 Overview of services
通過(guò)開發(fā)服務(wù)數(shù)據(jù)監(jiān)測(cè)的原型軟件用于采集、存儲(chǔ)服務(wù)的運(yùn)行、環(huán)境數(shù)據(jù),采集的服務(wù)運(yùn)行數(shù)據(jù)屬性及含義如表2所示。
表2 服務(wù)運(yùn)行數(shù)據(jù)屬性表Table 2 Monitored data items for service operation
采集的服務(wù)環(huán)境數(shù)據(jù)屬性及含義如表3所示。
表3 服務(wù)環(huán)境數(shù)據(jù)屬性表Table 3 Monitored data items for service operating environment
本次實(shí)驗(yàn)以資源消耗的故障注入手段,獲取云計(jì)算環(huán)境下部署的8個(gè)服務(wù)的運(yùn)行數(shù)據(jù)89 143條,對(duì)應(yīng)環(huán)境數(shù)據(jù)64 860條,其中包含故障注入時(shí)獲取運(yùn)行數(shù)據(jù)76 748條,對(duì)應(yīng)環(huán)境數(shù)據(jù)58 679條。為了驗(yàn)證本文方法的有效性,設(shè)置以下實(shí)驗(yàn):(1)文獻(xiàn)[12]所述方法僅使用服務(wù)運(yùn)行數(shù)據(jù)進(jìn)行確定發(fā)生故障的服務(wù)的實(shí)驗(yàn);(2)文獻(xiàn)[13]所述方法僅使用服務(wù)運(yùn)行數(shù)據(jù)進(jìn)行確定發(fā)生故障的服務(wù)的實(shí)驗(yàn);(3)以本文所述方法僅采用服務(wù)運(yùn)行數(shù)據(jù)進(jìn)行確定發(fā)生故障的服務(wù)的實(shí)驗(yàn);(4)以本文所述方法使用服務(wù)運(yùn)行數(shù)據(jù)、服務(wù)環(huán)境數(shù)據(jù)進(jìn)行實(shí)驗(yàn),同(1)(2)(3)獲得的實(shí)驗(yàn)結(jié)果進(jìn)行比對(duì),確定發(fā)生故障的服務(wù)對(duì)比實(shí)驗(yàn)輸入數(shù)據(jù)如表4所示。
表4 確定發(fā)生故障的服務(wù)對(duì)比實(shí)驗(yàn)輸入數(shù)據(jù)Table 4 Comparison for input data scale
本次實(shí)驗(yàn)以確定發(fā)生故障服務(wù)準(zhǔn)確率、運(yùn)行時(shí)長(zhǎng)驗(yàn)證本文方法的有效性,并給出準(zhǔn)確率計(jì)算公式如式(8)所示:
其中,TP為正確識(shí)別的故障樣本數(shù),TN為正確識(shí)別的非故障樣本數(shù),SN為方法所進(jìn)行識(shí)別的總樣本數(shù)。
運(yùn)行時(shí)長(zhǎng),即自輸入數(shù)據(jù)至方法完成計(jì)算并輸出結(jié)果所損耗時(shí)間總和,本次實(shí)驗(yàn)結(jié)果如表5所示。
表5 確定發(fā)生故障的服務(wù)對(duì)比實(shí)驗(yàn)結(jié)果Table 5 Comparison for service fault detection
通過(guò)表5可以看出,僅使用服務(wù)運(yùn)行數(shù)據(jù)進(jìn)行實(shí)驗(yàn)時(shí),同文獻(xiàn)[12-13]對(duì)比,本文方法準(zhǔn)確率表現(xiàn)上優(yōu)于文獻(xiàn)[12-13]所述方法,運(yùn)行時(shí)長(zhǎng)略低于文獻(xiàn)[12]所述方法,但較文獻(xiàn)[13]方法具備一定優(yōu)勢(shì)。分析實(shí)驗(yàn)結(jié)果,文獻(xiàn)[12]、文獻(xiàn)[13]方法依據(jù)數(shù)據(jù)進(jìn)行分析,都需要通過(guò)數(shù)據(jù)分布狀況,確定發(fā)生故障的服務(wù),在實(shí)驗(yàn)結(jié)果上均取得了一定效果。但文獻(xiàn)[12]采用的粒子群優(yōu)化算法與文獻(xiàn)[13]的模糊C均值聚類與K近鄰算法進(jìn)行故障檢測(cè)時(shí),均會(huì)隨著時(shí)間的推移,故障類型的不斷擴(kuò)充,數(shù)據(jù)特征分布雜亂而致使結(jié)果準(zhǔn)確率受到影響。此外,文獻(xiàn)[12-13]方法均只能就當(dāng)前服務(wù)運(yùn)行數(shù)據(jù)對(duì)服務(wù)進(jìn)行是否發(fā)生故障的二元判斷,未能對(duì)運(yùn)行時(shí)服務(wù)運(yùn)行時(shí)介于正常與故障之間的中間狀態(tài)進(jìn)行準(zhǔn)確評(píng)估。本文方法以服務(wù)運(yùn)行正常數(shù)據(jù)為基準(zhǔn),通過(guò)后續(xù)獲取的服務(wù)數(shù)據(jù)偏離量同基準(zhǔn)值對(duì)比,不僅不會(huì)受到因?yàn)楣收项愋偷淖兓绊憴z測(cè)效果,還能依據(jù)數(shù)據(jù)偏移量計(jì)算的服務(wù)故障可能性可以有效反映環(huán)境中的運(yùn)行時(shí)服務(wù)狀況,但本文除確定發(fā)生故障的服務(wù)結(jié)果外,增加了故障可能性計(jì)算,在效率上受到一定影響。
后續(xù)利用本文方法,使用服務(wù)運(yùn)行數(shù)據(jù)、服務(wù)環(huán)境數(shù)據(jù)進(jìn)行確定發(fā)生故障的服務(wù)實(shí)驗(yàn)時(shí),較僅添加服務(wù)運(yùn)行數(shù)據(jù)的本文方法與文獻(xiàn)[12-13]方法,在準(zhǔn)確率表現(xiàn)上獲得了明顯提升。添加服務(wù)環(huán)境數(shù)據(jù)進(jìn)行分析,雖然在一定程度上增加了處理的數(shù)據(jù)量和時(shí)間開銷,但使得同一環(huán)境下服務(wù)運(yùn)行狀況及環(huán)境帶來(lái)的影響在數(shù)據(jù)上得到了更準(zhǔn)確的捕獲與體現(xiàn)。
綜上所述,本文方法能有效確定發(fā)生故障的服務(wù),并根據(jù)未發(fā)生的故障服務(wù)的實(shí)際運(yùn)行情況,計(jì)算服務(wù)故障可能性,為后續(xù)判別服務(wù)故障傳播路徑提供了必要條件。
本次實(shí)驗(yàn)通過(guò)驅(qū)動(dòng)程序仿真實(shí)際應(yīng)用場(chǎng)景動(dòng)態(tài)生成多個(gè)服務(wù)交互序列。單個(gè)服務(wù)交互序列運(yùn)行時(shí)長(zhǎng)預(yù)估為1 000 s,首先設(shè)置由4個(gè)服務(wù)同時(shí)參與,依照動(dòng)態(tài)生成的服務(wù)交互序列連續(xù)運(yùn)行30 h,選擇1個(gè)服務(wù)進(jìn)行故障注入,觀察服務(wù)故障傳播情況;再次設(shè)置由8個(gè)服務(wù)同時(shí)參與,依照動(dòng)態(tài)生成的服務(wù)交互序列連續(xù)運(yùn)行30 h,選擇3個(gè)服務(wù)進(jìn)行故障注入,觀察服務(wù)故障傳播情況。針對(duì)服務(wù)運(yùn)行數(shù)據(jù)與環(huán)境數(shù)據(jù),以5 s為周期進(jìn)行監(jiān)測(cè),后續(xù)刷新確定發(fā)生故障的服務(wù),更新服務(wù)故障傳播路徑。
本次實(shí)驗(yàn)設(shè)置兩組對(duì)照實(shí)驗(yàn),兩組對(duì)照實(shí)驗(yàn)均采用首次確定所得服務(wù)故障傳播路徑時(shí)開始進(jìn)行校驗(yàn),設(shè)置滑動(dòng)時(shí)間窗口為500 s,即確定所得服務(wù)故障傳播路徑的時(shí)間為起點(diǎn),向后延長(zhǎng)500 s的范圍內(nèi),依據(jù)方法分析的服務(wù)故障傳播影響結(jié)果同實(shí)際故障服務(wù)發(fā)生情況進(jìn)行比對(duì)。此外,為保證實(shí)驗(yàn)結(jié)果不受服務(wù)交互序列動(dòng)態(tài)變更而致使方法判別條件前后不一致的狀況影響,當(dāng)滑動(dòng)時(shí)間窗口內(nèi)服務(wù)交互序列不一致時(shí)產(chǎn)生的判斷結(jié)果不納入實(shí)驗(yàn)最終結(jié)果。
第一組對(duì)照實(shí)驗(yàn)設(shè)置了方法進(jìn)行故障傳播影響分析結(jié)果準(zhǔn)確率與故障傳播影響分析過(guò)程中方法運(yùn)行時(shí)長(zhǎng)兩個(gè)指標(biāo),對(duì)本文方法實(shí)驗(yàn)結(jié)果同文獻(xiàn)[5]中提出的基于特征向量中心度的PageRank故障傳播影響分析方法實(shí)驗(yàn)結(jié)果進(jìn)行評(píng)價(jià)。故障傳播分析結(jié)果準(zhǔn)確率計(jì)算公式如式(9)所示:
其中,ServiceTP表示單次結(jié)果分析正確,即通過(guò)單次運(yùn)行方法所得受故障傳播影響的服務(wù)集合在時(shí)間窗口內(nèi)均發(fā)生故障,與服務(wù)實(shí)際運(yùn)行狀況吻合,∑ServiceTP表示結(jié)果分析正確總數(shù),∑ResultSN表示進(jìn)行故障傳播影響分析結(jié)果總數(shù)。
運(yùn)行時(shí)長(zhǎng)則為方法完成對(duì)所有的采集信息進(jìn)行服務(wù)故障傳播影響分析的總計(jì)消耗時(shí)長(zhǎng)。
通過(guò)上述指標(biāo)分別對(duì)實(shí)驗(yàn)方法進(jìn)行評(píng)價(jià),結(jié)果如表6所示。
表6 服務(wù)故障傳播路徑判別對(duì)比實(shí)驗(yàn)結(jié)果Table 6 Comparison for service failure propagation path discrimination
從表6可以看出,本文方法在準(zhǔn)確率、運(yùn)行時(shí)長(zhǎng)上結(jié)果更優(yōu)于文獻(xiàn)[5]方法。原因分析為文獻(xiàn)[5]采用基于特征向量中心性方法改進(jìn)的PageRank算法進(jìn)行故障傳播分析時(shí)認(rèn)為某個(gè)服務(wù)被調(diào)用的次數(shù)越多用則該微服務(wù)的重要程度越高,發(fā)生故障時(shí)對(duì)整個(gè)故障傳播圖的影響也越大[5],缺乏對(duì)服務(wù)間的局部相關(guān)關(guān)系的緊密程度與服務(wù)間間接交互過(guò)程的分析且在進(jìn)行故障傳播分析時(shí)并未考量服務(wù)運(yùn)行的實(shí)際狀態(tài),致使方法準(zhǔn)確率受限。
在運(yùn)行時(shí)長(zhǎng)上,文獻(xiàn)[5]方法依據(jù)服務(wù)依賴圖,需對(duì)圖中的每一個(gè)服務(wù)結(jié)合其被調(diào)用連接進(jìn)行故障傳播分析,不斷計(jì)算用于建立服務(wù)故障傳播子圖。本文方法通過(guò)提出的WsimRank算法,采用優(yōu)化后的服務(wù)關(guān)系圖且僅針對(duì)除故障服務(wù)外的其他服務(wù)進(jìn)行傳播概率計(jì)算,在故障傳播分析后僅更新服務(wù)故障傳播路徑,因此本文方法處理運(yùn)行時(shí)長(zhǎng)更短,效率更高。
第二組對(duì)照實(shí)驗(yàn)設(shè)置實(shí)際服務(wù)運(yùn)行中的路徑準(zhǔn)確率、運(yùn)行時(shí)長(zhǎng)、路徑數(shù)量三個(gè)指標(biāo),對(duì)本文方法實(shí)驗(yàn)結(jié)果同文獻(xiàn)[8]所提出的故障傳播與擴(kuò)散路徑方法的實(shí)驗(yàn)結(jié)果進(jìn)行評(píng)價(jià),路徑準(zhǔn)確率計(jì)算公式如式(10)所示:
其中,PathTP表示單條服務(wù)故障傳播路徑分析正確,即故障按照傳播路徑規(guī)劃的先后順序依次發(fā)生,與服務(wù)實(shí)際運(yùn)行狀況吻合?!芇athTP表示服務(wù)故障傳播路徑分析正確總數(shù),∑PathSN表示進(jìn)行分析服務(wù)故障傳播路徑總數(shù)。
運(yùn)行時(shí)長(zhǎng)為依照服務(wù)故障傳播路徑的不斷更新,計(jì)算服務(wù)故障傳播路徑數(shù)次變更所耗時(shí)間總和;路徑數(shù)量為通過(guò)實(shí)驗(yàn)時(shí)間內(nèi),定位的故障傳播路徑生成總量。
實(shí)驗(yàn)結(jié)果如表7所示。
表7 服務(wù)故障傳播路徑判別對(duì)比實(shí)驗(yàn)結(jié)果Table 7 Comparison for service failure propagation path discrimination
從表7可以看出,不論是4個(gè)服務(wù)或8個(gè)服務(wù)交互下進(jìn)行實(shí)驗(yàn),兩種方法在故障傳播路徑分析上都取得了一定效果,但本文方法從路徑準(zhǔn)確率、運(yùn)行時(shí)長(zhǎng)及路徑數(shù)量上優(yōu)于文獻(xiàn)[8]所述方法。原因分析為文獻(xiàn)[8]并未區(qū)分路徑方向,服務(wù)與服務(wù)間存在連接,即可在路徑上連通,這樣導(dǎo)致產(chǎn)出服務(wù)故障傳播路徑數(shù)量上更繁多,同時(shí)路徑上節(jié)點(diǎn)數(shù)量也更多且其間包含大量冗余節(jié)點(diǎn),致使文獻(xiàn)[8]判別方法將會(huì)存在更多誤判。本文方法加入了對(duì)服務(wù)當(dāng)前運(yùn)行、環(huán)境狀況的分析,使得判別路徑更加貼近服務(wù)運(yùn)行的真實(shí)情況,同時(shí),因?yàn)閷?duì)路徑上服務(wù)選取加以前驅(qū)、后繼方向限制,符合服務(wù)實(shí)際交互情況,使得本文所得路徑數(shù)量低于文獻(xiàn)[8]方法,準(zhǔn)確率也更高。在運(yùn)行時(shí)長(zhǎng)方面,本文方法通過(guò)結(jié)構(gòu)更優(yōu)的服務(wù)關(guān)系圖結(jié)合對(duì)服務(wù)故障傳播概率表現(xiàn)判斷,依次對(duì)路徑節(jié)點(diǎn)進(jìn)行擴(kuò)充而文獻(xiàn)[8]方法通過(guò)多次矩陣運(yùn)算后不斷進(jìn)行路徑擴(kuò)充且未對(duì)路徑擴(kuò)充條件進(jìn)行設(shè)定致使路徑到達(dá)結(jié)構(gòu)邊界才會(huì)停止擴(kuò)充,在路徑計(jì)算方式更加復(fù)雜且耗時(shí)。
綜上所述,本文方法能有效判別服務(wù)故障傳播路徑,為服務(wù)故障傳播影響分析問(wèn)題提供了可行方案,可對(duì)保障云計(jì)算環(huán)境下服務(wù)的高質(zhì)量運(yùn)行提供支持。
針對(duì)云環(huán)境下服務(wù)故障傳播影響分析,現(xiàn)有部分研究?jī)H考慮單一因素衡量故障的傳播影響、不適用動(dòng)態(tài)系統(tǒng)結(jié)構(gòu)、過(guò)多關(guān)注歷史數(shù)據(jù)等,本文提出了一種云計(jì)算環(huán)境下服務(wù)故障傳播路徑判別方法,首先根據(jù)服務(wù)實(shí)際運(yùn)行情況動(dòng)態(tài)建立服務(wù)交互圖,其次為了提高處理效率,在服務(wù)交互圖的基礎(chǔ)上進(jìn)一步處理,建立服務(wù)關(guān)系圖。在建立服務(wù)關(guān)系圖后,引入均值檢驗(yàn)方法,計(jì)算服務(wù)故障可能性,確定發(fā)生故障的服務(wù)。最后依據(jù)服務(wù)關(guān)系圖,結(jié)合服務(wù)故障可能性、WsimRank方法,計(jì)算服務(wù)故障傳播概率,通過(guò)以故障服務(wù)為起點(diǎn),從前驅(qū)、后繼兩個(gè)方向分別判別服務(wù)故障傳播路徑。
實(shí)驗(yàn)表明,通過(guò)本文方法進(jìn)行云計(jì)算環(huán)境下服務(wù)故障傳播路徑判別是有效的,依據(jù)本文方法可以協(xié)助相關(guān)人員準(zhǔn)確地就發(fā)生故障服務(wù)與可能受故障傳播影響的服務(wù)及時(shí)進(jìn)行處理,避免故障持續(xù)擴(kuò)散,保障云計(jì)算環(huán)境下服務(wù)的高質(zhì)量運(yùn)行。但是,本文方法因增加服務(wù)環(huán)境數(shù)據(jù)的分析,在一定程度上會(huì)降低方法整體的處理效率且結(jié)合云計(jì)算環(huán)境特性,本文方法未能通過(guò)采取措施干預(yù)故障發(fā)生或針對(duì)故障發(fā)生時(shí)對(duì)故障進(jìn)行處理,因此下一步將重點(diǎn)針對(duì)服務(wù)故障傳播路徑的判別效率提升、通過(guò)方法驅(qū)動(dòng)干預(yù)故障發(fā)生或?qū)Πl(fā)生的故障進(jìn)行處理的目標(biāo)繼續(xù)研究。