基于危險理論的分布式服務的異常檢測模型與方法
【技術領域】
[0001] 本發(fā)明涉及計算機技術,尤其涉及一種基于危險理論的分布式服務的異常檢測模 型與方法。
【背景技術】
[0002] 隨著移動互聯(lián)網(wǎng)、020(online to offline)的興起,越來越多的移動應用、互聯(lián) 網(wǎng)應用聚集了海量的用戶,為了響應大量用戶的請求,以騰訊、Twitter為代表的互聯(lián)網(wǎng)公 司采用分布式服務提高服務能力、提升并發(fā)處理性能。以Twitter為例,Twitter部署了約 2000個分布式服務,這些服務符合SOA (service-oriented architecture)規(guī)范,通過動態(tài) 組合滿足不同用戶的需要。與此同時,這樣就形成了復雜的組合及引用關系,給分布式環(huán)境 下的服務異常檢測帶來了困難。
[0003] 不同于傳統(tǒng)的服務異常檢測即關注單個服務的行為,分布式服務的異常檢測需要 根據(jù)服務的組合關系發(fā)現(xiàn)整體的異常。由于大量用戶請求導致的服務海量行為數(shù)據(jù),以及 服務組合本身的不確定性給服務異常檢測帶來了挑戰(zhàn):
[0004] 1.服務與服務之間的行為時時刻刻都在變化,存在著不確定性,因此難以用簡單 的靜態(tài)模型去描述;
[0005] 2.服務與服務之間的行為是動態(tài)組合的、相互連接的,它們之間存在著依賴關系, 因此很難通過單一的服務狀態(tài)來檢測整個分布式服務的異常狀態(tài);
[0006] 3.海量的服務行為數(shù)據(jù),給分布式服務的異常檢測的效率帶來極大的挑戰(zhàn)。
[0007] 分布式服務是解決海量用戶服務的有效方法,但同時由于服務的動態(tài)組合導致 了服務的不確定性,因此增加了服務異常檢測的難度。本文提出了基于危險理論的一 種動態(tài)的方法去檢測分布式服務異常。在專利"基于服務起源的云服務監(jiān)控方法和裝 置"(【申請?zhí)枴?014105550671)中詳細的闡述了分布式服務的行為捕獲方法,該專利通過 一個服務起源日志9元組描述服務的動態(tài)行為,即(token, Invoking Service, Service Invoked, location, elapsed time, times tamp, input, output, status) 〇 本文使用專利中 的服務行為采集方法,并將該9元組作為模型的輸入數(shù)據(jù),重點是通過引入危險理論,建立 分布式服務的異常檢測模型。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明要解決的技術問題在于針對現(xiàn)有技術中的缺陷,提供一種基于危險理論的 分布式服務的異常檢測模型與方法。
[0009] 本發(fā)明解決其技術問題所采用的技術方案是:一種基于危險理論的分布式服務的 異常檢測模型,包括:
[0010] 危險信號表征模塊,用于實時監(jiān)測每一個分布式服務的變化情況,將變化情況繪 制成變化曲線;所述實時監(jiān)測的監(jiān)測指標來自服務起源日志九元組,所述變化情況包括調 用次數(shù)的變化和耗時的變化;
[0011] 危險信號提取模塊,用于根據(jù)特征點將這些點作為基礎點構造特征三元組實時監(jiān) 測每個服務的運行狀態(tài),若實時數(shù)據(jù)所構造的特征三元組超出了歷史數(shù)據(jù)所構造的特征三 元組,則認為該服務有可能存在潛在的危險,即為異常源;所述特征點是變化曲線趨勢發(fā)生 變化的關鍵點;
[0012] 所述特征三元組定義為W (xj left, f (xj,f (x^right},其中f(Xi)表示特 征點;f' (Xi)left表示了特征點左邊曲線的趨勢,f (x^right表示特征點右邊曲線的 趨勢;
[0013] 危險區(qū)域計算模塊,用于當發(fā)現(xiàn)某個服務S出現(xiàn)異常后,計算該服務的危險區(qū)域。
[0014] 按上述方案,所述危險信號表征模塊中為分布式服務中每一個服務分配一個監(jiān)控 器實時監(jiān)測每一個分布式服務的變化情況。
[0015] 按上述方案,所述危險區(qū)域計算模塊中計算該服務的危險區(qū)域采用以下方法,首 先判斷與服務S相連的服務的個數(shù)t ;
[0016] 若該數(shù)值t小于閾值,那么選用基于DCA的信號融合的方法輸出危險區(qū)域,具體步 驟如下:
[0017] (i)假設在某個時間點T,發(fā)現(xiàn)異常源S,首先建立與服務S相連的服務Si之間的 人工APC,并在人工APC上裝載多個TRLs受體,捕捉它們之間的調用次數(shù)和平均耗時并進行 融合;
[0018] (ii)采集T時間點所有服務S與服務Si之間的IS和ES(i = 1,2, 3..)以及服務
S的調用總次數(shù)SIS和總耗時SES,將IS和ES進行融合,并計算濃度值 _同 9 理,將SIS和SES也進行融合得到總濃度值C,其中a和b分別為這兩個輸入信號的權重;
[0019] (iii)通過計算異常系數(shù)u來確定兩個服務之間的依賴路徑是否會產(chǎn)生危險,其 中
[0020] (iv)重復步驟⑴~(iii),再次對與服務Si相連的服務Sj進行融合,進行剪枝 操作(j = 1,2, 3..);
[0021] 其中,人工APC :即人工抗原提呈細胞,該細胞的功能是接收信號的獨立單元;
[0022] 人工TRLs受體:該受體的主要功能是捕捉并融合信號,信號由服務的調用次數(shù)和 平均耗時共同組成;
[0023] Invoking signal :記作IS,假設在某個時間段T內(nèi)發(fā)現(xiàn)異常源S,在此時間段內(nèi)服 務S調用服務Si的次數(shù)就稱為IS ;
[0024] Elapsed time signal :記作ES,假設在某個時間段T內(nèi)發(fā)現(xiàn)異常源S,在此時間段 內(nèi),服務S調用服務Si的次數(shù)除以時間T即為平均耗時ES ;
[0025] 若該數(shù)值t大于閾值,采用云模型的方法輸出危險區(qū)域,具體步驟如下:
[0026] (1)構造服務S的狀態(tài)云以及與該服務相連的服務的狀態(tài)云;
[0027] (2)計算S的狀態(tài)云:假設與服務S相連的服務有η個,把每個相連的服務看成 一個云滴,即有η個云滴,S與每個云滴的調用次數(shù)看作是該云滴的確定度,記作Ni(i = 1,2, 3. ... η),首先通過Ni計算調用次數(shù)的均值Ex,然后通過均值可得熵En和超熵He,三 個數(shù)字特征值即可確定一個狀態(tài)云,記狀態(tài)云S (Ex,En,He);
[0030] (3)通過步驟2的方法計算出與S相連的η個服務的狀態(tài)云Si (Ex;, Erii, He;) (i = 1,2,3. ... n);
[0031] (4)計算Si相對于S的隸屬度:通過云模型構造 S與Si的狀態(tài)云并計算它們之 間的隸屬度μ,
[0033] 若隸屬度越大,說明兩個服務的變化越相似,那么這兩個服務之間越不容易出現(xiàn) 異常,反之如果隸屬度小于設定閾值則說明這兩個服務存在著較大的差異,那么越容易出 現(xiàn)異常,則將此路徑作為危險路徑并入危險區(qū)域;
[0034] (5)重復步驟2和3,構造與Si相連的服務的狀態(tài)云,計算它們之間的隸屬度,直 到?jīng)]有危險路徑;
[0035] (6)將所有的危險路徑匯總構造出危險區(qū)域。
[0036] 一種基于危險理論的分布式服務的異常檢測方法,包括以下步驟:
[0037] 1)危險信號表征:實時監(jiān)測每一個分布式服務的變化情況,將變化情況繪制成變 化曲線;所述實時監(jiān)測的監(jiān)測指標來自服務起源日志九元組,所述變化情況包括調用次數(shù) 的變化和耗時的變化;
[0038] 2)危險信號提?。焊鶕?jù)特征點將這些點作為基礎點構造特征三元組實時監(jiān)測每 個服務的運行狀態(tài),若實時數(shù)據(jù)所構造的特征三元組超出了歷史數(shù)據(jù)所構造的特征三元 組,則認為該服務有可能存在潛在的危險,即為異常源;所述特征點是變化曲線趨勢發(fā)生變 化的關鍵點;
[0039] 所述特征三元組定義為W (xj left, f (xj,f (xjright},其中f(Xi)表示特 征點;f' (Xi)left表示了特征點左邊曲線的趨勢,f (x^right表示特征點右邊曲線的 趨勢;
[0040] 3)危險區(qū)域計算:當發(fā)現(xiàn)某個服務S出現(xiàn)異常后,計算該服務的危險區(qū)域。
[0041] 按上述方案,所述步驟1)中為分布式服務中每一個服務分配一個監(jiān)控器實時監(jiān)