1. 程式人生 > >複雜事件處理(Complex Event Processing)

複雜事件處理(Complex Event Processing)

複雜事件處理

複雜事件處理(CEP,Complex Event Processing)是一種基於動態環境中事件流的分析技術,事件在這裡通常是有意義的狀態變化,通過分析事件間的關係,利用過濾、關聯、聚合等技術,根據事件間的時序關係和聚合關係制定檢測規則,持續地從事件流中查詢出符合要求的事件序列,最終分析得到更復雜的複合事件,主要用於網路詐欺識別等防止犯罪,銀行等金融行業防止,以及風險規避和營銷決策等.

複雜事件處理面臨多方面的挑戰:

  • 減少應用儲存資料(在分析資料之前)造成的延遲
  • 能夠持續,實時地分析多個數據流
  • 能夠關聯不同資料流中的事件,從而發現新的相關情形
  • 能夠迅速響應新發現的危險或機會
  • 能夠迅速的將先前發現的規律應用到新的資料流分析模型中
  • 能夠利用已有的應用開發能力快速開放新的高效能,高擴充套件度的應用
  • 確保應用和系統的連貫性。

事件處理語言

事件處理語言(EPL,Event processing language)用於系統中制定和查詢感興趣的事件序列,通常是類SQL的語句,從SQL語句中擴充套件而來.

這裡寫圖片描述

事件關係

事件應該包含一些基本的要素:型別、發生事件以及更多的一些定義屬性

通常需要關聯多個事件進行分析處理,其中事件間的關係主要有5種:

  1. 時間關聯

  2. 空間關聯

  3. 依賴關係
    事物的狀態屬性之間彼此的依賴關係和約束關係。

  4. 因果關係

事件處理過程

複雜事件處理過程包括:

  • 格式化:將事件獲取模組得到的事件資訊轉化為內部處理的形式
  • 預處理:將事件按照欄位內容進行處理
  • 模式偵測:將數個事件複合起來,找出複合事件
  • 事件發派:將複合事件傳送到相應的處理模組
  • 執行動作:處理模型按照事件狀況執行相應的動作

以下是複雜事件處理系統中的關鍵模組組成圖(來自《深入淺出複合事件處理》),

這裡寫圖片描述

  1. EPL解析器:複雜事件處理系統中EPL語言被解析器解析為處理引擎能理解的語言(類SQL解析器)。
  2. 規則管理:管理EPL。
  3. 事件接入:通過SOA、ESB、MOM、讀取日誌等方式將訊息接入。
  4. 預處理:將事件依據欄位內容進行處理。
  5. CEP引擎:找出事件關聯。
  6. 資料模型:維護內部資料。
  7. 事件發派:將已經發現的複合事件發派到負責處理的行動模組中。
  8. 行動模組:對複合事件採取行動 。

如何評價一個CEP平臺:

  • 開發工具中的程式設計模型,是否能吸引眾多不同型別的開發人員?
  • 是否提供了高可用性和高安全性?
  • 是否可以部署在多個使用陣列配置的伺服器?
  • 是否提供了監視功能?
  • 其引擎是否可以易於擴充套件,從而來支援公司特有的高階的邏輯?
  • 是否有恢復機制,即使一旦伺服器故障,也可以防止資料丟失?
  • 進出處理引擎的訊息傳遞,其機制是否可靠?
  • 它同資料庫以及其他系統能否很好的整合?
  • 這個平臺是否支援連續型實時資料管理的各個生命週期,包括分析,儲存,建模和一個新的實時分析應用的部署?

事件驅動架構

事件驅動架構(Event-Driven Architecture,EDA) 基於訊息傳遞,現在主要是非同步通訊的訊息佇列的架構,依據“釋出/訂閱”模式,通過特定模式來對業務事件作出響應,耦合度較低.

面向服務架構

面向服務架構 (Service-Oriented Architecture, SOA) 基於“請求/響應”的形式

下面這幅圖可以較好地體現基於SOA和EDA兩種體系結構的差異處,SOA更多地是面向垂直系統的請求和響應處理,EDA則是應對橫向的系統通.

這裡寫圖片描述

資料來源:

[1]. TT SOA 技術專題之“複雜事件處理手冊”
[2]. 《事件處理中介軟體原理和應用》
[3]. 《深入淺出複合事件處理》