簡介
事件流處理,是比較新的一個概念,要了解事件流處理技術,首先要了解什麼是事件流也叫
數據流。數據流最初是通信領域使用的概念,代表傳輸中所使用的信息的數字編碼信號序列。然而,我們所提到的數據流概念與此不同。這裡提到的數據流具有以下兩個特點能夠持續產生大量的數據這類數據最早出現與傳統的銀行和股票交易領域,也在網際網路監控、無線通信網等領域出現、需要以近實時的方式對更新數據流進行複雜分析如趨勢分析、預測、監控等。事件流處理是數據流處理的一個子集,是一種特定的數據流處理。事件流處理與一般的數據流處理不同的是事件流處理通常是異步的,事件可能源自不同的地方,而且類型也可能各異,接收的順序也可能差異很大。事件流處理需要使用事件屬性、事件發生的時間以及事件中任何能推斷的因果關係作為它的基礎元素。事件流模型相對於傳統靜態數據處理模型主要有如下幾方面的特徵:
事件流中的事件元素線上到達;
系統無法控制將要處理的新到達的事件元素的順序;
事件流模型中查詢是相對靜止不變的,而數據是時刻變化的;
從理論上說,事件流的潛在大小是無界的;系統能存儲的數據相對事件流的大小則是非常有限的;
一旦事件流中的某個元素經過處理,要么被丟棄,要么被歸檔存儲。但被丟棄的事件元素可能需要再次被訪問。
優點
事件流處理模式是通過將幾種機理整合在一起實現實時操作的。首先,支持入處理,即輸入的事件流一進入系統就馬上開始流經連續的查詢。在它們流動時,查詢變換事件,連續地給出結果,所有這一切都是在記憶體中進行的,對磁碟存儲的讀或寫操作是可選的,在很多情況下是被異步處理的。入處理克服了常規資料庫管理系統使用的傳統出處理的局限,在出處理中,數據必須插入資料庫,並在開始任何處理之前建立索引。通過將磁碟存儲排除在處理的關鍵路徑之外,與傳統的處理方法相比,事件流處理模式獲得了明顯的性能提高。
第二,事件流處理模式採用了單處理模型,其中所有與時間密切相關的操作包括事件處理、定製的套用邏輯的存儲和執行是作為一個多線索進程的一部分運行的。這種整合的方法消除了進程轉換的高開銷,在使用多個軟體系統來提供同樣功能的解決方案中就存在著這種進程轉換。
第三,事件流處理模式提供了一個靈活的進程間存儲模型和基於標準的對外部資料庫的訪問。記憶體中散列表用於極快的插入和查找操作。嵌入的資料庫用於確保數據的一致性,以及能利用風格的描述性查詢進行的訪問和操縱。外部的、遠程進程資料庫通過標準的“開放資料庫互連”調用進行訪問,當要支持過時的資料庫時,這種資料庫用起來很方便,能方便地實現資料庫與外部應用程式的共享。事件流處理模式擁有內在的過濾、聚合和相關、以及合併操作符,它們操縱事件的視窗。標準定義在有限大小的表格之上,從而執行引擎知道何時
完成了所有的操作。相反,流存在著永不結束的潛在可能,在結束處理和輸出答案時必須要有指令。通過定義操作符的範圍,視窗構建為此目的服務。在傳統的應用程式中,一小時的視窗可以用來表達計算以小時為量加權的面向流的查詢。視窗是用戶可以配置的,可以定義在時間、事件數量或者一個事件中其他屬性的斷開點上。面向流的操作符對數據流中因次序破壞或數據達到的延誤造成的破壞提供了彈性,而這兩種情況在現實世界中是經常發生的。彈性是通過使操作符對時間敏感而獲得的。操作符可以有選擇地被告知,對失序的信息等待更長一些時間,或者規定的時間用完不再等待可能永遠不會到來的過時信息。
最後,事件流處理模式支持改進可擴性和可用性的分散式操作。增強可擴性是通過讓處理分割並透明地分布到多個機器上實現的,不必修改應用程式。高可用性對保留應用程式的完整性是至關重要的,可避免實時處理的中斷。
事件及其表示
事件語義上指是信息系統中已經發生的一個動作或者狀態轉換的記錄,但同時還包含其在計算機中的表示。事件由事件類型來指明其結構,每次具體事件類型的發生稱為事件實例。傳送到事件處理方的外部事件稱為原子事件,為瞬時的、原子的。事件結構中最常見的是結構化事件,這樣的事件的元素可以視為關係元組,關係元組具有固定的模型。因此這樣的事件具有二維結構,一維是事件元素髮生的時間或者序列,另一維是關係元組模型的屬性值。
除結構化的事件外,還有半結構化事件和無結構事件。半結構化事件是指表示形式如文檔這樣的事件,這樣的事件中存在著用戶定義的、具有一定語義的標記,可用這些標記將事件流劃分為獨立的事件流元素。而無結構數據,如具有自描述結構的文本流,以及連續的視頻流、音頻流等,這種流的結構信息完全包含在數據的語義中,無法孤立地從數據進行元素的劃分。
上述三種事件元素結構中,結構化的事件與資料庫系統中的關係有相似的結構,相對容易解析而無結構事件必須首先藉助某種外部方法將原始的事件轉換為結構化的事件,不然將很難處理。且對結構化事件的研究己經基本能夠滿足常見的系統套用需求,所以本文的事件流處理研究主要針對結構化的事件。
事件模式
事件關聯是對系統中多節點處以及系統外部生成的大量事件進行深化處理的過程,首先對事件進行語法層面的同一化處理,然後採用規則匹配、推理等多種關聯策略對大量事件進行語義層面的分析,根據事件之間存在的時序關係、因果關係等關聯關係,將多個事件關聯成為事件模式。事件模式定義成一個對多個其它子事件的抽象的事件,它通過對事件關聯關係進行組合,減少事件數量,提高事件質量。事件的質量是套用相關的,因此先給出事件模式的語法和通用語義。原始模式表達式是對一類事件的描述,它與對應的一個事件類相關聯。原始模式只能匹配單個事件。模式運算,事件之間的運算主要分為三種:
與運算:表示模式同時成立。表示模式和模式同時成立
或運算:模式中的一個或者多個成立時序關係模式在時間維度上的先後關係。
複合模式表達式,複合模式表達式是指多個原始模式表達式經過一定的運算之後形成的,用戶可以指定複合模式表達式,複合模式可以關聯不同系統的不同事件。如一個複合模式是在事件視窗內先發生事件後發生事件。原始模式是複合模式的基本構建塊。用表示複合模式。
複合模式可以這樣定義:
原始模式是一個複合模式;
由原始模式與原始模式通過模式關係、關聯條件構成的描述是複合模式;
由原子模式與複合模式通過模式關係、關聯條件構成的描述是複合模式;
由複合模式與複合模式通過模式關係、關聯條件構成的描述是複合模式;
其他所有的模式都不是複合模式。