複雜事件處理
複雜事件處理(CEP,Complex Event Processing)是一種基於動態環境中事件流的分析技術,事件在這裏通常是有意義的狀態變化,通過分析事件間的關係,利用過濾、關聯、聚合等技術,根據事件間的時序關係和聚合關係制定檢測規則,持續地從事件流中查詢出符合要求的事件序列,最終分析得到更復雜的複合事件,主要用於網絡詐欺識別等防止犯罪,銀行等金融行業防止,以及風險規避和營銷決策等.
複雜事件處理面臨多方面的挑戰:
- 減少應用存儲數據(在分析數據之前)造成的延遲
- 能夠持續,實時地分析多個數據流
- 能夠關聯不同數據流中的事件,從而發現新的相關情形
- 能夠迅速響應新發現的危險或機會
- 能夠迅速的將先前發現的規律應用到新的數據流分析模型中
- 能夠利用已有的應用開發能力快速開放新的高性能,高擴展度的應用
- 確保應用和系統的連貫性。
事件處理語言
事件處理語言(EPL,Event processing language)用於系統中制定和查詢感興趣的事件序列,通常是類SQL的語句,從SQL語句中擴展而來.
事件關係
事件應該包含一些基本的要素:類型、發生事件以及更多的一些定義屬性
通常需要關聯多個事件進行分析處理,其中事件間的關係主要有5種:
時間關聯
空間關聯
依賴關係
事物的狀態屬性之間彼此的依賴關係和約束關係。因果關係
事件處理過程
複雜事件處理過程包括:
- 格式化:將事件獲取模塊得到的事件信息轉化爲內部處理的形式
- 預處理:將事件按照字段內容進行處理
- 模式偵測:將數個事件復合起來,找出複合事件
- 事件發派:將複合事件發送到相應的處理模塊
- 執行動作:處理模型按照事件狀況執行相應的動作
以下是複雜事件處理系統中的關鍵模塊組成圖(來自《深入淺出複合事件處理》),
- EPL解析器:複雜事件處理系統中EPL語言被解析器解析爲處理引擎能理解的語言(類SQL解析器)。
- 規則管理:管理EPL。
- 事件接入:通過SOA、ESB、MOM、讀取日誌等方式將消息接入。
- 預處理:將事件依據字段內容進行處理。
- CEP引擎:找出事件關聯。
- 數據模型:維護內部數據。
- 事件發派:將已經發現的複合事件發派到負責處理的行動模塊中。
- 行動模塊:對複合事件採取行動 。
如何評價一個CEP平臺:
- 開發工具中的編程模型,是否能吸引衆多不同類型的開發人員?
- 是否提供了高可用性和高安全性?
- 是否可以部署在多個使用陣列配置的服務器?
- 是否提供了監視功能?
- 其引擎是否可以易於擴展,從而來支持公司特有的高級的邏輯?
- 是否有恢復機制,即使一旦服務器故障,也可以防止數據丟失?
- 進出處理引擎的消息傳遞,其機制是否可靠?
- 它同數據庫以及其他系統能否很好的集成?
- 這個平臺是否支持連續型實時數據管理的各個生命週期,包括分析,存儲,建模和一個新的實時分析應用的部署?
事件驅動架構
事件驅動架構(Event-Driven Architecture,EDA) 基於消息傳遞,現在主要是異步通訊的消息隊列的架構,依據“發佈/訂閱”模式,通過特定模式來對業務事件作出響應,耦合度較低.
面向服務架構
面向服務架構 (Service-Oriented Architecture, SOA) 基於“請求/響應”的形式
下面這幅圖可以較好地體現基於SOA和EDA兩種體系結構的差異處,SOA更多地是面向垂直系統的請求和響應處理,EDA則是應對橫向的系統通.
資料來源:
[1]. TT SOA 技術專題之“複雜事件處理手冊”
[2]. 《事件處理中間件原理和應用》
[3]. 《深入淺出複合事件處理》
本作品採用知識共享署名-非商業性使用-相同方式共享 3.0 中國大陸許可協議進行許可。