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