李榮宸,姜瑛,姒鑒哲
(1.云南省計(jì)算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650500;2.昆明理工大學(xué) 信息工程與自動(dòng)化學(xué)院,云南 昆明 650500)
近年來,隨著云計(jì)算技術(shù)的不斷發(fā)展,越來越多的企業(yè)和組織將其業(yè)務(wù)遷移到云端。然而,在云計(jì)算環(huán)境下,服務(wù)故障的傳播路徑更加復(fù)雜,因此準(zhǔn)確識(shí)別服務(wù)故障的傳播路徑對(duì)于保障云計(jì)算服務(wù)的可靠性和穩(wěn)定性至關(guān)重要[1]。但是,由于云計(jì)算環(huán)境的高度分布式和異構(gòu)性等特點(diǎn),識(shí)別服務(wù)故障的傳播路徑面臨著許多難點(diǎn),包括如何有效地收集和處理海量的監(jiān)控?cái)?shù)據(jù),如何準(zhǔn)確地識(shí)別故障源和故障傳播路徑等[2]??焖賱?dòng)態(tài)地識(shí)別服務(wù)故障傳播路徑,可以及時(shí)定位故障發(fā)生的區(qū)域并確定服務(wù)故障的傳播和擴(kuò)散情況,降低系統(tǒng)不正常運(yùn)行的風(fēng)險(xiǎn)。
因此,研究云計(jì)算環(huán)境下服務(wù)故障傳播路徑識(shí)別具有重要意義:一方面,可以幫助企業(yè)和組織及時(shí)發(fā)現(xiàn)和解決服務(wù)故障,提高云計(jì)算服務(wù)的可靠性和穩(wěn)定性;另一方面,可以為云計(jì)算服務(wù)的優(yōu)化和改進(jìn)提供有價(jià)值的參考和支持,推動(dòng)云計(jì)算技術(shù)的進(jìn)一步發(fā)展和應(yīng)用[3-4]。因此,如何快速準(zhǔn)確地識(shí)別云計(jì)算環(huán)境下的服務(wù)故障傳播路徑,成為亟待解決的問題。
近年來,故障傳播路徑識(shí)別受到廣泛關(guān)注。文獻(xiàn)[5]認(rèn)為模塊之間通過函數(shù)調(diào)用交互,故障可以通過模塊接口傳播,抽象出核心模塊之間的依賴關(guān)系,識(shí)別故障在模塊之間的傳播路徑。文獻(xiàn)[6]提出了一種以異常傳播為導(dǎo)向的微服務(wù)故障診斷方法,它利用微服務(wù)的測(cè)量信息和服務(wù)之間的調(diào)用行為來構(gòu)造一張微服務(wù)的依賴圖,在此基礎(chǔ)上對(duì)異常的微服務(wù)進(jìn)行檢測(cè),來獲得服務(wù)的故障傳播圖,并確定異常的根源。文獻(xiàn)[7]將目標(biāo)鎖定在分布式系統(tǒng)中,在服務(wù)之間存在著不同的執(zhí)行軌跡,使用注射代理的方法對(duì)業(yè)務(wù)進(jìn)行攔截并轉(zhuǎn)發(fā),通過分布式跟蹤系統(tǒng)采集服務(wù)調(diào)用信息,可以很好地發(fā)現(xiàn)在服務(wù)調(diào)用路徑中存在的異常。文獻(xiàn)[8]中提出了一種在云計(jì)算環(huán)境下的服務(wù)故障傳播路徑識(shí)別方法,該方法利用服務(wù)呼叫關(guān)系來構(gòu)建一個(gè)服務(wù)互動(dòng)圖,并對(duì)該圖進(jìn)行優(yōu)化,從而構(gòu)建出一個(gè)服務(wù)關(guān)系圖,對(duì)其進(jìn)行全面的研究,最終對(duì)服務(wù)故障傳播的影響因素進(jìn)行了全面的分析和計(jì)算,從而對(duì)其進(jìn)行識(shí)別。然而,服務(wù)的高頻調(diào)用產(chǎn)生海量數(shù)據(jù),給服務(wù)異常的實(shí)時(shí)性分析帶來挑戰(zhàn)[9]。貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)學(xué)習(xí)是從給定數(shù)據(jù)集中推斷事件關(guān)聯(lián)關(guān)系的常用方法,能夠從實(shí)時(shí)數(shù)據(jù)中學(xué)習(xí)服務(wù)故障傳播結(jié)構(gòu)。文獻(xiàn)[10]提出一種基于父節(jié)點(diǎn)濾波的高斯貝葉斯網(wǎng)絡(luò)故障傳播路徑識(shí)別推理算法,通過結(jié)構(gòu)學(xué)習(xí)算法構(gòu)建貝葉斯網(wǎng)絡(luò),再根據(jù)參數(shù)權(quán)值和對(duì)父節(jié)點(diǎn)集進(jìn)行約簡(jiǎn),求出約簡(jiǎn)父集可能子集的最大條件概率,逐層推理確定故障的傳播路徑網(wǎng)絡(luò)。貝葉斯網(wǎng)絡(luò)[11]的結(jié)構(gòu)學(xué)習(xí)已經(jīng)被證明是NP-hard 問題,因此構(gòu)建網(wǎng)絡(luò)的算法應(yīng)盡可能保證準(zhǔn)確率并降低時(shí)間開銷。
綜上所述,基于服務(wù)調(diào)用信息構(gòu)建服務(wù)依賴關(guān)系是識(shí)別服務(wù)故障傳播路徑的常用方法,但服務(wù)的高頻調(diào)用為服務(wù)故障傳播路徑的實(shí)時(shí)性分析帶來挑戰(zhàn)。而通過貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)學(xué)習(xí)推斷完整的故障傳播路徑需要一定的時(shí)間開銷。針對(duì)這些問題,本文提出一種基于因果圖模型的服務(wù)故障傳播路徑識(shí)別方法,在未知服務(wù)之間依賴關(guān)系的情況下推斷服務(wù)故障事件因果關(guān)系,構(gòu)建服務(wù)故障傳播圖以識(shí)別出服務(wù)故障的傳播路徑。
在云計(jì)算環(huán)境下,服務(wù)故障事件之間具有因果關(guān)系,可以通過推斷因果關(guān)系來構(gòu)建服務(wù)故障傳播圖,識(shí)別服務(wù)故障傳播路徑。由服務(wù)故障傳播導(dǎo)致的事件因果關(guān)系存在一個(gè)特點(diǎn):作用于服務(wù)故障傳播方的隨機(jī)事件更易影響感染方,而作用于服務(wù)故障感染方的隨機(jī)事件不太可能影響傳播方。
基于以上特點(diǎn),本文提出一種基于因果圖的服務(wù)故障傳播路徑識(shí)別方法,在不知道服務(wù)間依賴關(guān)系的前提下,從服務(wù)運(yùn)行數(shù)據(jù)中提取服務(wù)故障事件,推斷故障事件之間的因果關(guān)系以構(gòu)建服務(wù)故障傳播圖,并根據(jù)服務(wù)故障傳播圖與故障服務(wù)列表確定服務(wù)故障傳播路徑。方法的主要步驟包括服務(wù)故障事件度量、服務(wù)故障傳播圖構(gòu)建和服務(wù)故障傳播路徑識(shí)別。
服務(wù)由于運(yùn)行結(jié)果錯(cuò)誤或性能下降而無法正常運(yùn)行的現(xiàn)象稱為服務(wù)故障事件。使用服務(wù)運(yùn)行數(shù)據(jù)來度量單個(gè)服務(wù)故障事件,可以反映單個(gè)服務(wù)的故障情況,同時(shí)也是分析不同服務(wù)故障事件之間因果關(guān)系的基礎(chǔ)。
故障使服務(wù)無法正確處理請(qǐng)求或處理請(qǐng)求的時(shí)間過長(zhǎng),進(jìn)而導(dǎo)致服務(wù)占用系統(tǒng)資源異常,通常會(huì)出現(xiàn)資源使用率、服務(wù)執(zhí)行時(shí)間等指標(biāo)過高或過低的現(xiàn)象。其次,當(dāng)服務(wù)對(duì)物理資源存在較為穩(wěn)定的調(diào)度邏輯時(shí),會(huì)使得各項(xiàng)物理資源之間產(chǎn)生穩(wěn)定的關(guān)聯(lián)關(guān)系,例如,服務(wù)通過網(wǎng)絡(luò)接收用戶請(qǐng)求并進(jìn)行處理時(shí),網(wǎng)絡(luò)流量較大也會(huì)使得CPU 資源占用較高。而故障使得服務(wù)資源調(diào)度出錯(cuò)并進(jìn)一步導(dǎo)致服務(wù)運(yùn)行結(jié)果出錯(cuò)時(shí),物理資源之間的調(diào)度邏輯也會(huì)發(fā)生變化。此外,服務(wù)被調(diào)用次數(shù)決定了服務(wù)占用多少系統(tǒng)資源,所以指標(biāo)過高或過低也會(huì)受到服務(wù)被調(diào)用次數(shù)的影響。
為了衡量服務(wù)運(yùn)行數(shù)據(jù)指標(biāo)期望偏離與服務(wù)調(diào)度邏輯的變化情況,本研究將統(tǒng)計(jì)量作為服務(wù)故障事件度量值。該方法在去除服務(wù)正常運(yùn)行時(shí)方差為0 的指標(biāo)及非平穩(wěn)的指標(biāo)后,通過主成分分析(Principal Component Analysis,PCA)算法去除數(shù)據(jù)中的完全共線性以避免度量值小于0,再使用協(xié)方差矩陣消除指標(biāo)間的線性關(guān)系,從而可以直接使用指標(biāo)均值偏離情況度量這兩類情況。統(tǒng)計(jì)量的計(jì)算公式如式(1)所示:
式中:u和Σ分別為服務(wù)正常運(yùn)行數(shù)據(jù)集中各項(xiàng)指標(biāo)均值構(gòu)成的均值向量和協(xié)方差矩陣;Xˉ和n為當(dāng)前服務(wù)運(yùn)行數(shù)據(jù)集中各項(xiàng)指標(biāo)均值構(gòu)成的均值向量和數(shù)據(jù)集數(shù)據(jù)量。當(dāng)某服務(wù)高于閾值時(shí),則認(rèn)為該服務(wù)發(fā)生故障。
取n=1 時(shí)可求出某服務(wù)在某段時(shí)間內(nèi)每一時(shí)刻的度量值,根據(jù)時(shí)間順序排列成行向量后得到該服務(wù)的故障事件度量向量,將所有服務(wù)的故障事件度量向量組合成一個(gè)矩陣,這個(gè)矩陣為服務(wù)故障事件度量矩陣。服務(wù)故障事件度量矩陣反映了服務(wù)故障事件之間的因果關(guān)系。當(dāng)服務(wù)由正常變?yōu)楣收蠒r(shí),度量值升高。服務(wù)異常程度越高,度量值越大。因此,服務(wù)故障傳播導(dǎo)致服務(wù)故障事件度量矩陣中對(duì)應(yīng)服務(wù)的行向量線性相關(guān)。
服務(wù)故障傳播圖為帶權(quán)有向圖,節(jié)點(diǎn)表示故障服務(wù),邊的方向表示故障傳播方向,權(quán)重表示故障事件因果效應(yīng)強(qiáng)度。由于服務(wù)故障傳播使得服務(wù)故障事件度量向量線性相關(guān),因此服務(wù)故障事件服從線性結(jié)構(gòu)因果模型[12]。在線性結(jié)構(gòu)因果模型中,若服務(wù)x故障導(dǎo)致服務(wù)y故障,則因果關(guān)系可表示為y=wx+e,其中e為隨機(jī)擾動(dòng)項(xiàng),代表x以外的服務(wù)調(diào)用次數(shù)、服務(wù)故障等隨機(jī)事件對(duì)y的影響,w為因果效應(yīng)強(qiáng)度。因此,對(duì)于n個(gè)服務(wù)的故障事件x1,x2,…,xn,其因果關(guān)系表示為如下形式:
式(2)的矩陣形式為x=Wx+e,x為服務(wù)故障事件度量矩陣,e是殘差矩陣,W是服務(wù)故障傳播圖的鄰接矩陣。為了求解系數(shù)矩陣W構(gòu)建服務(wù)故障傳播圖,本文采用DirectLiNGAM 算法[13]首先分析變量與隨機(jī)擾動(dòng)項(xiàng)的獨(dú)立性遞歸求出外生變量以得到因果順序排列,使得排列在后面的事件不影響前面的事件,即求出x1,x2,…,xn分別對(duì)應(yīng)哪個(gè)服務(wù),最后估計(jì)參數(shù)得到矩陣W。
然而,在使用DirectLiNGAM 算法推斷事件因果關(guān)系求解系數(shù)矩陣W時(shí),可能出現(xiàn)一些特殊情況。例如,某服務(wù)在處理完請(qǐng)求后因?yàn)橥V惯\(yùn)行或不被調(diào)用造成服務(wù)運(yùn)行數(shù)據(jù)缺失,此時(shí)該服務(wù)沒有傳播故障,也沒有被傳播故障,所以該服務(wù)的狀態(tài)不受其他服務(wù)影響,但在線性結(jié)構(gòu)因果模型中,最不容易受到其他變量影響的變量會(huì)被識(shí)別為外生變量,因此如果某個(gè)服務(wù)缺失數(shù)據(jù)越多,這個(gè)服務(wù)就越容易被識(shí)別為故障的傳播方。為避免此類情況的發(fā)生,本文優(yōu)化DirectLiNGAM 算法,在分析變量與隨機(jī)擾動(dòng)項(xiàng)獨(dú)立性求解外生變量時(shí),僅使用兩個(gè)服務(wù)同時(shí)運(yùn)行的數(shù)據(jù),若沒有同時(shí)運(yùn)行的數(shù)據(jù),則判定兩個(gè)服務(wù)故障事件獨(dú)立性最強(qiáng),即變量與隨機(jī)擾動(dòng)項(xiàng)獨(dú)立性最弱。
通過調(diào)整后的DirectLiNGAM 算法推斷出服務(wù)故障事件的因果關(guān)系,從而構(gòu)建出服務(wù)故障傳播圖,以確定服務(wù)故障的傳播方向及故障事件間的因果效應(yīng)強(qiáng)度。
服務(wù)故障傳播圖是一種所有服務(wù)之間都有一條有向邊連接的有向無環(huán)圖,且圖中邊的權(quán)重表示因果效應(yīng)的強(qiáng)度。服務(wù)故障傳播導(dǎo)致不同服務(wù)故障事件具有較強(qiáng)的線性關(guān)系,從而圖中對(duì)應(yīng)邊會(huì)有更高的權(quán)重。因此,服務(wù)故障傳播路徑是服務(wù)故障傳播圖中以故障服務(wù)為起點(diǎn),且因果效應(yīng)較強(qiáng)的路徑。
為了從服務(wù)故障傳播圖中獲取服務(wù)故障傳播路徑,首先依據(jù)2.1 節(jié)方法篩選出故障服務(wù),然后標(biāo)準(zhǔn)化處理服務(wù)故障傳播圖權(quán)重;其次遍歷服務(wù)故障傳播圖,篩選出所有以故障服務(wù)為起點(diǎn)的路徑;最后將路徑上所有邊權(quán)重相乘,作為該路徑的因果效應(yīng)強(qiáng)度,并對(duì)所有路徑按因果效應(yīng)強(qiáng)度降序排序。路徑排列越靠前,則故障由這條路徑進(jìn)行傳播的概率越大。服務(wù)故障傳播路徑識(shí)別算法如下所示:
服務(wù)故障傳播路徑識(shí)別算法的主要開銷為圖的遍歷和對(duì)標(biāo)圖的邊權(quán)重進(jìn)行標(biāo)準(zhǔn)化,因此如果服務(wù)數(shù)量為n,時(shí)間段長(zhǎng)度為m,算法的時(shí)間復(fù)雜度為O (mn3)。
為了驗(yàn)證本文方法的有效性,本文使用兩種實(shí)驗(yàn)環(huán)境。
環(huán)境1:使用Python 語言開發(fā)的10 個(gè)服務(wù),實(shí)現(xiàn)根據(jù)用戶請(qǐng)求進(jìn)行計(jì)算與匯總的功能。10 個(gè)服務(wù)部署在Docker 容器中,其中1 個(gè)服務(wù)負(fù)責(zé)處理請(qǐng)求,8 個(gè)服務(wù)執(zhí)行計(jì)算功能,最后1 個(gè)服務(wù)對(duì)計(jì)算結(jié)果進(jìn)行匯總處理。通過程序插樁方式獲取每次調(diào)用時(shí)每個(gè)服務(wù)的處理請(qǐng)求耗費(fèi)時(shí)間、用戶請(qǐng)求內(nèi)容、請(qǐng)求與執(zhí)行結(jié)果的數(shù)據(jù)包大小和服務(wù)調(diào)用關(guān)系,環(huán)境1 服務(wù)依賴結(jié)構(gòu)如圖1 所示。
圖1 實(shí)驗(yàn)環(huán)境1 服務(wù)依賴結(jié)構(gòu)
如圖1所示,服務(wù)ReqProce負(fù)責(zé)處理用戶請(qǐng)求,服務(wù)CalcA、CalcB、CalcC、CalcD、CalcE、CalcF、CalcG 和CalcH構(gòu)成了應(yīng)用的計(jì)算節(jié)點(diǎn)。服務(wù)ReqProc 在接收用戶請(qǐng)求后,會(huì)根據(jù)用戶請(qǐng)求內(nèi)容分析需要調(diào)用計(jì)算節(jié)點(diǎn)哪些服務(wù)進(jìn)行計(jì)算,然后再調(diào)用對(duì)應(yīng)服務(wù)執(zhí)行計(jì)算功能。在計(jì)算節(jié)點(diǎn)服務(wù)計(jì)算完成后,服務(wù)ReqProc 調(diào)用CalcSum對(duì)計(jì)算節(jié)點(diǎn)服務(wù)的計(jì)算結(jié)果進(jìn)行匯總處理,其中計(jì)算節(jié)點(diǎn)的計(jì)算結(jié)果通過數(shù)據(jù)庫進(jìn)行存儲(chǔ)。在故障注入時(shí),使用Python 語言開發(fā)程序向服務(wù)ReqProc 發(fā)送大量請(qǐng)求,隨機(jī)調(diào)整用戶請(qǐng)求內(nèi)容,改變服務(wù)需要處理的數(shù)據(jù)量及對(duì)計(jì)算節(jié)點(diǎn)服務(wù)的調(diào)用方式。
環(huán)境2:微服務(wù)應(yīng)用SockShop。SockShop 是一個(gè)由Java、Go、.NET 和NodeJS 等多種語言開發(fā)的微服務(wù)電商平臺(tái),包含13 個(gè)微服務(wù),服務(wù)依賴結(jié)構(gòu)如圖2 所示。
圖2 實(shí)驗(yàn)環(huán)境2 服務(wù)依賴結(jié)構(gòu)
如圖2 所示,frontend 接收用戶請(qǐng)求并提供前端頁面。orders、payment、carts、catalogue、user 分別提供訂單、支付、購物車、產(chǎn)品目錄管理和用戶信息管理功能,shipping 接收訂單并提供發(fā)貨功能,queue-master 模擬發(fā)貨過程。另外,部分核心服務(wù)由對(duì)應(yīng)的數(shù)據(jù)庫管理服務(wù)進(jìn)行管理數(shù)據(jù)存儲(chǔ)。本文將服務(wù)SockShop 部署在Docker 容器中,使用Docker stats 工具采集每個(gè)服務(wù)對(duì)應(yīng)容器的CPU、內(nèi)存、網(wǎng)絡(luò)和磁盤資源的使用情況,并通過WeaveScope 監(jiān)控服務(wù)之間的調(diào)用關(guān)系。在注入故障時(shí),使用WeaveWorks 壓力測(cè)試工具向frontend 發(fā)送大量請(qǐng)求,通過WeaveScope 觀察到故障注入導(dǎo)致SockShop產(chǎn)生frontend→orders、orders→user、orders→carts、orders→payment、carts→catalogue 這幾條調(diào)用路徑。
格蘭杰因果檢驗(yàn)(Granger Causality Test)是一種常用的因果關(guān)系檢驗(yàn)方法,格蘭杰因果檢驗(yàn)將兩個(gè)時(shí)間序列分別表示為X和Y,然后建立兩個(gè)AR 模型,分別是X的AR 模型及X和Y的VAR 模型。然后通過比較這兩個(gè)模型的預(yù)測(cè)誤差,判斷Y是否受到了X的影響,即X是否是Y的因果變量。可以處理非平穩(wěn)時(shí)間序列和多變量時(shí)間序列,并且可以進(jìn)行因果關(guān)系的方向推斷。但是,它也有一些局限性,如只能檢測(cè)線性因果關(guān)系,對(duì)噪聲敏感等。格蘭杰因果關(guān)系定義為作為因的變量的過去信息更有助于解釋作為果的變量的變化。與格蘭杰因果檢驗(yàn)不同,本文因果關(guān)系定義為作用于因的隨機(jī)事件更容易影響作為果的隨機(jī)事件。因此將本文方法與格蘭杰因果檢驗(yàn)進(jìn)行對(duì)比。
本次實(shí)驗(yàn)針對(duì)兩個(gè)實(shí)驗(yàn)環(huán)境進(jìn)行故障注入并采集數(shù)據(jù),由于兩種方法都對(duì)數(shù)據(jù)敏感,因此采用隨機(jī)樣本容量隨機(jī)抽取連續(xù)數(shù)據(jù)樣本的方法來獲取故障發(fā)生的任意階段數(shù)據(jù)。首先計(jì)算每個(gè)樣本中服務(wù)的故障事件度量值,然后分別使用本文方法和格蘭杰因果檢驗(yàn)推斷服務(wù)故障事件度量值之間的因果關(guān)系,從而識(shí)別故障傳播路徑。實(shí)驗(yàn)中針對(duì)每條路徑抽取500 個(gè)樣本,統(tǒng)計(jì)兩種方法故障傳播路徑識(shí)別準(zhǔn)確率與方法平均運(yùn)行時(shí)間,對(duì)比兩種方法的有效性及性能。實(shí)驗(yàn)結(jié)果如表1 所示。
表1 服務(wù)故障傳播路徑識(shí)別對(duì)比實(shí)驗(yàn)結(jié)果
如表1所示,格蘭杰因果檢驗(yàn)平均準(zhǔn)確率為35.13%,平均運(yùn)行時(shí)間為10.131 9 s;本文方法平均準(zhǔn)確率為77.04%,平均運(yùn)行時(shí)間為0.251 3 s。在準(zhǔn)確率方面,本文方法優(yōu)于格蘭杰因果檢驗(yàn),原因在于格蘭杰因果檢驗(yàn)主要分析事件兩兩之間的關(guān)系,而本文方法綜合考慮了所有事件,避免了因?yàn)檫z漏重要變量而產(chǎn)生的內(nèi)生性問題,從而提升了準(zhǔn)確率。然而,在識(shí)別環(huán)境2 中路徑frontend→orders時(shí),本文方法識(shí)別準(zhǔn)確率降低,原因是在環(huán)境2中,雖然frontend 調(diào)用orders 導(dǎo)致orders 故障,但frontend 需要獲取orders 的處理結(jié)果并為用戶提供對(duì)應(yīng)的前端界面,造成了服務(wù)之間雙向依賴關(guān)系。這種關(guān)系產(chǎn)生的環(huán)路導(dǎo)致內(nèi)生性問題,造成識(shí)別準(zhǔn)確率下降。
在性能方面,本文方法遠(yuǎn)遠(yuǎn)優(yōu)于格蘭杰因果檢驗(yàn),原因是格蘭杰因果檢驗(yàn)在推斷因果關(guān)系時(shí)需要對(duì)服務(wù)大量的過去信息進(jìn)行分析,需要較大的時(shí)間開銷。
綜上所述,本文所提出方法能夠有效識(shí)別服務(wù)故障傳播路徑,且時(shí)間開銷較低,但當(dāng)服務(wù)存在雙向依賴關(guān)系導(dǎo)致故障傳播出現(xiàn)環(huán)路時(shí),會(huì)因?yàn)閮?nèi)生性問題造成識(shí)別準(zhǔn)確率下降。
針對(duì)云計(jì)算環(huán)境下的高頻調(diào)用導(dǎo)致服務(wù)故障傳播路徑的實(shí)時(shí)性分析困難,以及貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)學(xué)習(xí)推斷完整的故障傳播路徑時(shí)間開銷大的問題,本文提出了一種基于線性結(jié)構(gòu)因果模型的服務(wù)故障傳播路徑識(shí)別方法。首先,監(jiān)測(cè)并收集服務(wù)運(yùn)行數(shù)據(jù),通過服務(wù)運(yùn)行數(shù)據(jù)度量服務(wù)故障事件;然后,應(yīng)用DirectLiNGAM 算法推斷服務(wù)故障事件之間的因果關(guān)系并構(gòu)建服務(wù)故障傳播圖;最后,基于服務(wù)故障傳播圖確定故障傳播路徑。
實(shí)驗(yàn)表明,本文方法能夠以較短的時(shí)間開銷準(zhǔn)確識(shí)別服務(wù)故障傳播路徑。但是,本文方法在識(shí)別存在雙向依賴關(guān)系的服務(wù)故障傳播路徑時(shí),會(huì)因?yàn)閮?nèi)生性問題使得識(shí)別的準(zhǔn)確率降低。因此,接下來將深入分析如何結(jié)合服務(wù)調(diào)用鏈路構(gòu)建因果推斷的先驗(yàn)知識(shí),在具備先驗(yàn)知識(shí)的情況下識(shí)別服務(wù)故障傳播路徑。
注:本文通訊作者為姜瑛。