一種基于并行分布式架構(gòu)的復(fù)雜事件處理的方法
【專利摘要】一種基于并行分布式架構(gòu)的復(fù)雜事件處理的方法屬于網(wǎng)絡(luò)安全領(lǐng)域。本發(fā)明把關(guān)聯(lián)分析的查詢語句分解成由有狀態(tài)操作和無狀態(tài)操作組成的操作序列,按照每個(gè)子查詢至多有且僅包含一個(gè)有狀態(tài)查詢的原則把操作序列進(jìn)行拆分,并且按照拆分的數(shù)目把集群等分成幾個(gè)子集群,然后把子查詢部署到相應(yīng)的子集群。這樣部署到不同子群的不同子操作序列之間可以并行計(jì)算,部署到同一個(gè)子群的不同機(jī)器的同一個(gè)操作也可以并行計(jì)算。即不同查詢之間是并行的(查詢間并行),相同查詢之間也是并行的(查詢內(nèi)并行);查詢內(nèi)并行不僅包括不同操作之間是并行的,而且相同操作之內(nèi)也是并行的。即每個(gè)操作都是并行,這樣即可解決查詢計(jì)算遇到的節(jié)點(diǎn)性能瓶頸問題。
【專利說明】一種基于并行分布式架構(gòu)的復(fù)雜事件處理的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于網(wǎng)絡(luò)安全【技術(shù)領(lǐng)域】,特別是一種網(wǎng)絡(luò)安全事件實(shí)時(shí)關(guān)聯(lián)分析引擎基于 分布式并行架構(gòu)的實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002] 安全信息和事件管理系統(tǒng)技術(shù)為安全相關(guān)信息提供一個(gè)綜合的視角。安全信息和 事件管理系統(tǒng)作為安全信息和事件的最終匯總,并對(duì)其進(jìn)行實(shí)時(shí)分析,其所處的位置居于 整個(gè)安全防御系統(tǒng)的核心中央。目前的安全信息和事件管理系統(tǒng)已經(jīng)廣泛擴(kuò)展了事件監(jiān)控 能力,包括主動(dòng)安全事故監(jiān)控管理,被動(dòng)日志自動(dòng)收集管理。
[0003] 當(dāng)前的安全信息和事件管理系統(tǒng)的關(guān)聯(lián)分析引擎是一個(gè)集中式的解決方案,隨著 接入安全信息和事件管理系統(tǒng)的日志源增加,其收集到的數(shù)據(jù)增長(zhǎng)速度已經(jīng)遠(yuǎn)快于其關(guān)聯(lián) 分析引擎的計(jì)算能力提升速度。
[0004] 目前安全信息和事件管理系統(tǒng)在面對(duì)收集數(shù)據(jù)的增加,主要采取三種思路:第一 種思路是改進(jìn)現(xiàn)有安全信息和事件管理系統(tǒng)關(guān)聯(lián)分析引擎的處理能力,比如采用復(fù)雜事件 處理技術(shù)改進(jìn)關(guān)聯(lián)分析引擎,該種方案可以暫時(shí)緩解關(guān)聯(lián)分析引擎計(jì)算能力不足的問題; 第二種思路是對(duì)未來得及處理的安全信息和事件先緩存,以等待進(jìn)一步的分析,該種方案 的好處是安全信息和事件不會(huì)被遺漏;第三種思路是對(duì)安全信息和事件采取QoS (服務(wù)質(zhì) 量控制)策略,對(duì)定義認(rèn)為無效的事件做丟棄處理,該種方案的好處是對(duì)安全信息和事件 可做快速的響應(yīng)。從安全的角度出發(fā),以上三種思路都有缺陷:
[0005] >采取復(fù)雜事件處理技術(shù),增強(qiáng)安全信息和事件管理系統(tǒng)關(guān)聯(lián)分析引擎的技術(shù)能 力,相比以前,增加了一定的關(guān)聯(lián)分析計(jì)算能力的,但是這種增加無法趕上計(jì)算數(shù)據(jù)的增加 速度,無法完全改善關(guān)聯(lián)分析引擎的計(jì)算能力;
[0006] >采取緩存技術(shù),可保證安全信息和事件不會(huì)丟棄,保證分析的全面性,但是無法 滿足安全發(fā)現(xiàn)的及時(shí)性,延后的分析結(jié)果對(duì)安全處置幾乎無太多用處;
[0007] >采取QoS策略,可保證安全信息和事件的即時(shí)關(guān)聯(lián)分析,并作出即時(shí)響應(yīng),但是 丟棄的事件規(guī)則是人依據(jù)已有的知識(shí)制定的,可能會(huì)因此遺漏關(guān)鍵的安全事件,導(dǎo)致分析 結(jié)果不完全。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明是為了解決以上三種思路的困境,提出一種基于并行分布式架構(gòu)的復(fù)雜事 件處理方法,即結(jié)合復(fù)雜事件處理技術(shù)、分布式技術(shù)以及并行技術(shù),以分布式并行的復(fù)雜事 件處理引擎替代當(dāng)前集中式的處理引擎,以徹底解決當(dāng)前解決方案面臨的技術(shù)困境。
[0009] 本發(fā)明結(jié)合復(fù)雜事件處理技術(shù)的特點(diǎn),把復(fù)雜事件處理技術(shù)對(duì)事件進(jìn)行處理的操 作分解成幾個(gè)元操作,并把元操作分為兩類:無狀態(tài)操作和有狀態(tài)操作。所謂無狀態(tài)操作, 即對(duì)后面的事件的處理操作和前面的事件的處理操作無關(guān)聯(lián)。所謂有狀態(tài)操作,對(duì)后面事 件的處理操作需要依據(jù)結(jié)合前面事件的處理操作進(jìn)行處理操作,通過滑動(dòng)窗口實(shí)現(xiàn)。劃分 的無狀態(tài)操作包括:映射、轉(zhuǎn)換操作,過濾操作,聯(lián)合操作;有狀態(tài)操作包括:聚合操作,連 接操作。
[0010] 本發(fā)明方法的流程如圖1所示。
[0011] 本發(fā)明方法的具體步驟如下:
[0012] 步驟1 :獲取用于關(guān)聯(lián)分析的查詢語句;
[0013] 步驟2 :把查詢語句按照上文定義的有狀態(tài)操作和無狀態(tài)操作分解成一串操作序 列;
[0014] 步驟3 :按照有狀態(tài)操作把操作序列(查詢語句)分解成子操作序列(子查詢語 句),即有多少個(gè)有狀態(tài)操作就劃分成多少個(gè)子操作序列。其中劃分的第一個(gè)子操作序列至 少包括無狀態(tài)的操作,可以僅由無狀態(tài)的操作組成,且該子操作序列包含了第一個(gè)有狀態(tài) 操作之前的所有無狀態(tài)操作。包含有狀態(tài)操作的子操作序列其第一個(gè)操作一定是有狀態(tài)操 作,該子操作也包含下一個(gè)有狀態(tài)操作之前的所有無狀態(tài)操作。
[0015] 步驟4:依照步驟3查詢語句劃分成子查詢的數(shù)量,把集群按照該數(shù)目等分成相同 數(shù)量的子群,把查詢語句按照步驟2劃分成的子操作序列分布式部署到劃分好的每個(gè)子群 上,子群中的每個(gè)機(jī)器都部署相應(yīng)的子操作。
[0016] 本發(fā)明結(jié)合復(fù)雜事件處理技術(shù)把關(guān)聯(lián)分析的查詢語句分解成由有狀態(tài)操作和無 狀態(tài)操作組成的操作序列,按照每個(gè)子查詢至多有且僅包含一個(gè)有狀態(tài)查詢的原則把操作 序列進(jìn)行拆分,并且按照拆分的數(shù)目把集群等分成幾個(gè)子集群,然后把子查詢部署到相應(yīng) 的子集群。這樣部署到不同子群的不同子操作序列之間可以并行計(jì)算,部署到同一個(gè)子群 的不同機(jī)器的同一個(gè)操作也可以并行計(jì)算。即不同查詢之間是并行的(查詢間并行),相同 查詢之間也是并行的(查詢內(nèi)并行);查詢內(nèi)并行不僅包括不同操作之間是并行的(操作 間并行),而且相同操作之內(nèi)也是并行的(操作內(nèi)并行)。即每個(gè)操作都是并行,這樣即可 解決查詢計(jì)算遇到的節(jié)點(diǎn)性能瓶頸問題。
【專利附圖】
【附圖說明】
[0017] 圖1是本發(fā)明流程圖。
[0018] 圖2查詢語句分解 [0019] 圖3操作序列劃分
[0020] 圖4查詢部署
【具體實(shí)施方式】
[0021] 下面結(jié)合流程圖,對(duì)優(yōu)選實(shí)施例作詳細(xì)說明,應(yīng)該強(qiáng)調(diào)的是,下述說明僅僅是示例 性的,而不是為了限制本發(fā)明的范圍及其應(yīng)用。
[0022] 首先結(jié)合事件流定義,對(duì)復(fù)雜事件流元操進(jìn)行定義:
[0023] 映射操作Map,其定義如下:
[0024] Map{ Aj - F1,..., Aih - F111} (5*)
[0025] 給定一個(gè)輸入事件流S,依照用戶定義一組有序的轉(zhuǎn)換表達(dá)式,例如 < =F1,..,對(duì)輸入的事件進(jìn)行屬性轉(zhuǎn)換并輸出轉(zhuǎn)換結(jié)果事件。
[0026] 過濾操作Filter,其定義如下:
[0027] Fi Iter ((P1, O1),..., (Pm, 0m), 0m+1} (S)
[0028] 給定一個(gè)輸入事件流S,依照用戶預(yù)定義的一組有序的斷言集合 {(P1, O1),. . .,(Pm,OJ,0m+1},每一個(gè)輸入的事件轉(zhuǎn)發(fā)到該事件適配的第一個(gè)斷言對(duì)應(yīng)的輸 出,即符合斷言Pm,則輸出到Om,如果全部斷言都不符合,則輸出到〇m+1。
[0029] 聯(lián)合操作Union,其定義如下:
[0030] Union (S1,…,Sm)
[0031] 該操作合并輸入流S1, ...,Sm,并輸出一個(gè)合并的流,其中這些流模式相同。輸出 流的模式和輸入流的模式相同。
[0032] 聚合操作Aggregate,其定義如下:
[0033] AggregateixWType^izeMvance, A, = Fr...,A:n = Fm,Group-by{A],...,AJ\(S)
[0034] 給定一個(gè)事件輸入流S,在該輸入流上執(zhí)行滑動(dòng)窗口,并在窗口上應(yīng)用一組有序的 聚合函數(shù)4 = 6,...,^*^ = ,每個(gè)單獨(dú)的窗口保持的事件的屬性由"Group-by"的參數(shù)確 定。其中窗口由窗口的大小size,滑動(dòng)步長(zhǎng)advance兩個(gè)參數(shù)定義。窗口類型WType可分 為基于時(shí)間(Time)和元組(Tuple)兩類。
[0035] 連接操作Join,其定義如下:
[0036] Join {P,size, advance} (S1, Sr)
[0037] 斷言P對(duì)從來自左右兩個(gè)流Sp 的事件進(jìn)行判斷,size為窗口大小,此處 滑動(dòng)步長(zhǎng)advance等于窗口大小size。
[0038] 下面示例開始:
[0039] 步驟1 :獲取用于關(guān)聯(lián)分析的查詢語句。
[0040] 例如:我們比較感興趣:在180秒內(nèi),訪問目的端口 25、80、135的次數(shù)落在區(qū)間 [15, 30]的IP用戶到底有多少。因?yàn)檫@可能是蠕蟲爆發(fā)的結(jié)果。
[0041] 輸入事件的模式的域包括:ID (事件標(biāo)識(shí))、SRC_IP (源地址IP)、SRC_Port (源地 址端口)、DST_IP (目的地址IP)、DST_Port (目的地址端口)、timestamp (事件時(shí)間戳)、 Info (其他信息)。
[0042] 步驟2 :把查詢語句按照上文定義的有狀態(tài)操作和無狀態(tài)操作分解成一串操作序 列。
[0043] 上文的查詢語句可由2個(gè)有狀態(tài)操作(聚合操作Al、A2)和3個(gè)無狀態(tài)操作(Map 操作M和Filters操作F1、F2)組成。具體各個(gè)操作定義如下:
[0044] Map操作M具體定義如下:
[0045] M{SRC_IP - SRC_IP,DST_Port - DST_Port,Time - Time} (I,0M)
[0046] Map操作M完成對(duì)輸入事件流I的元組的屬性域進(jìn)行裁剪,丟棄后續(xù)運(yùn)算不需要的 域,即在本示例中去掉ID、SRC_Port、Info等域。Map操作M的下一個(gè)操作是Filters操作 F1,操作M輸出流Om是Fl操作的輸入流。
[0047] Filters操作Fl具體定義如下:
[0048] Fl {DST_port = = 25 I I DST_Port = = 80 I I DST_Port = = 135} (0M,0F1)
[0049] Fl操作僅轉(zhuǎn)發(fā)端口等于25、80、135的事件元組。Filters操作Fl的下一個(gè)操作 是聚合操作Al, Fl的輸出流Ofi是Al操作的輸入流。
[0050] Aggregate操作Al具體定義如下:
[0051] Al {Time, 180, I, Access ^ count (), Group-by = (SRC_IP)} (0F1, 0A1)
[0052] 聚合操作Al統(tǒng)計(jì)180秒內(nèi)每個(gè)IP地址訪問上面端口的次數(shù)(Access)。聚合操作 Al的下一個(gè)操作是Filters操作F2,聚合操作Al的輸出流Oai是F2操作的輸入流。
[0053] Filters操作F2具體定義如下:
[0054] F2 {Access ^ 15 A Access ^ 30} (0A1, 0F2)
[0055] F2操作用來過濾掉訪問次數(shù)小于15次和大于30次的事件元組,僅轉(zhuǎn)發(fā)訪問次數(shù) 處于[15, 30]區(qū)間的事件元組。Filters操作F2的下一個(gè)操作是聚合操作A2,操作F2的 輸出流〇F2是八2的輸入流。
[0056] Aggregate操作A2具體定義如下:
[0057] A2 {Time, 180, 1,SRCJJsers - count (),Group-by = (DST_IP)} (0F2, 0)
[0058] 聚合操作A2用來統(tǒng)計(jì)滿足以上條件的IP地址的數(shù)目(SRC_Users)。操作A2的輸 出流〇為最終計(jì)算結(jié)果。
[0059] 以上可完成步驟1假設(shè)的查詢語句全部功能。
[0060] 步驟3 :按照有狀態(tài)操作把操作序列(查詢語句)分解成子操作序列(子查詢語 句),即有多少個(gè)有狀態(tài)操作就劃分成多少個(gè)子操作序列。其中劃分的第一個(gè)子操作序列也 可以僅由無狀態(tài)的操作組成,且該子操作序列包含了第一個(gè)有狀態(tài)操作之前的所有無狀態(tài) 操作。包含有狀態(tài)操作的子操作序列其第一個(gè)操作一定是有狀態(tài)操作,該子操作也包含下 一個(gè)有狀態(tài)操作之前的所有無狀態(tài)操作。
[0061] 上文查詢語句經(jīng)過分解操作可做簡(jiǎn)單抽象,如下圖2所示:
[0062] 按照子查詢劃分策略,即上述的查詢語句可做如下劃分,具體如圖3所示:
[0063] 即第一個(gè)子查詢包含操作M和Fl,第二個(gè)子查詢包含操作Al和F2,第三個(gè)操作包 含A2。
[0064] 步驟4:依照步驟3查詢語句劃分成子查詢的數(shù)量,把集群按照該數(shù)目等分成相同 數(shù)量的子群,把查詢語句按照步驟3劃分成的子操作序列分布式部署到劃分好的每個(gè)子群 上,子群中的每個(gè)機(jī)器都部署相應(yīng)的子操作。
[0065] 假設(shè)部署的集群的節(jié)點(diǎn)數(shù)量為90,參照上文劃分的子查詢語句數(shù),集群劃分為3 個(gè)子集群,每個(gè)子集群30個(gè)節(jié)點(diǎn)。
[0066] 查詢語句最終部署效果如圖4 :
[0067] 該種查詢部署方式相對(duì)代價(jià)較小,并且很好的解決了查詢計(jì)算遇到的節(jié)點(diǎn)性能瓶 頸問題。
[0068] 下面給出子操作序列劃分原則和查詢部署方式的依據(jù):
[0069] 對(duì)于并行計(jì)算的代價(jià),定義2個(gè)參數(shù)表示并行的代價(jià):扇出開銷,跳數(shù)開銷。扇出 開銷(f表示):在全系統(tǒng)范圍內(nèi),任何計(jì)算節(jié)點(diǎn)和其他計(jì)算節(jié)點(diǎn)建立聯(lián)通并維持通信管道 的代價(jià)。即計(jì)算節(jié)點(diǎn)和其他節(jié)點(diǎn)聯(lián)通的管道數(shù)目越高,花銷越大。跳數(shù)開銷(h表示):表 示在運(yùn)行在不同節(jié)點(diǎn)的操作之間移動(dòng)(轉(zhuǎn)移)一個(gè)元組花費(fèi)的代價(jià)。在不同節(jié)點(diǎn)之間轉(zhuǎn)移 一個(gè)元組,每個(gè)元組在發(fā)送前是排序好的,在接收端則是亂序的。需要注意的是,給定一個(gè) 查詢,這種開銷影響所有運(yùn)行在不同節(jié)點(diǎn)上的串行操作對(duì)。對(duì)于任何并行策略,定義如下代 價(jià)函數(shù):
[0070] c (X) = a ? f (X) + ^ ? h (X)
[0071] 其中,a,旦G [0, 1]是兩個(gè)任意的權(quán)重。
[0072] 查詢計(jì)算分布式部署方法首先可以想到2種:
[0073] 1、全查詢分布部署(FQ表示):即整個(gè)查詢部署到每一個(gè)計(jì)算節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)部 署同樣的查詢。假設(shè)集群有N個(gè)計(jì)算節(jié)點(diǎn),則N個(gè)節(jié)點(diǎn)的每一個(gè)節(jié)點(diǎn)都需要和N-I個(gè)節(jié)點(diǎn) 保持通信,其扇出開銷是N的二次方(N2)。跳數(shù)開銷和有狀態(tài)操作數(shù)目成正比,這是因?yàn)樵?組在每個(gè)有狀態(tài)操作前需要重新編配。對(duì)于在一個(gè)查詢中有s個(gè)有狀態(tài)操作和N個(gè)計(jì)算節(jié) 點(diǎn),該分布式部署策略的代價(jià)是:
[0074]
【權(quán)利要求】
1. 一種基于并行分布式架構(gòu)的復(fù)雜事件處理的方法,其特征在于: 把復(fù)雜事件處理技術(shù)對(duì)事件進(jìn)行處理的操作分解成幾個(gè)元操作,并把元操作分為兩 類:無狀態(tài)操作和有狀態(tài)操作;所謂無狀態(tài)操作,即對(duì)后面的事件的處理操作和前面的事 件的處理操作無關(guān)聯(lián);所謂有狀態(tài)操作,對(duì)后面事件的處理操作需要依據(jù)結(jié)合前面事件的 處理操作進(jìn)行處理操作,通過滑動(dòng)窗口實(shí)現(xiàn);劃分的無狀態(tài)操作包括:映射、轉(zhuǎn)換操作,過 濾操作或聯(lián)合操作;有狀態(tài)操作包括:聚合操作或連接操作; 具體步驟如下: 步驟1:獲取用于關(guān)聯(lián)分析的查詢語句; 步驟2 :把查詢語句按照上文定義的有狀態(tài)操作和無狀態(tài)操作分解成一串操作序列; 步驟3 :按照有狀態(tài)操作把操作序列即查詢語句分解成子操作序列即子查詢語句,即 有多少個(gè)有狀態(tài)操作就劃分成多少個(gè)子操作序列;其中劃分的第一個(gè)子操作序列至少包括 無狀態(tài)的操作,或者僅僅由無狀態(tài)的操作組成,且該子操作序列包含了第一個(gè)有狀態(tài)操作 之前的所有無狀態(tài)操作;包含有狀態(tài)操作的子操作序列其第一個(gè)操作一定是有狀態(tài)操作, 該子操作也包含下一個(gè)有狀態(tài)操作之前的所有無狀態(tài)操作; 步驟4 :依照步驟3查詢語句劃分成子查詢的數(shù)量,把集群按照該數(shù)目等分成相同數(shù)量 的子群,把查詢語句按照步驟2劃分成的子操作序列分布式部署到劃分好的每個(gè)子群上, 子群中的每個(gè)機(jī)器都部署相應(yīng)的子操作。
【文檔編號(hào)】H04L29/08GK104394149SQ201410697724
【公開日】2015年3月4日 申請(qǐng)日期:2014年11月26日 優(yōu)先權(quán)日:2014年11月26日
【發(fā)明者】廉海明, 郭旭東, 謝小明, 胡佳, 胡大正, 郭江, 沈艷林, 石波, 沈德峰, 吳朝雄, 王紅艷 申請(qǐng)人:中國(guó)航天科工集團(tuán)第二研究院七〇六所