Esper-技術簡介

轉自 http://blog.csdn.net/mdj67887500/article/details/6892392

1.1介紹CEP和事件流分析

Esper引擎是爲了滿足對事件進行分析並做出反應等這些應用需求而產生的。這些應用要求實時或接近實時處理事件(或消息)。有時候是爲了應對複雜事件處理(CEP)和事件流分析的。關鍵要考慮這些類型應用的(高)吞吐量、(低)響應時間和需求邏輯的複雜程度 (複雜計算)。esper可以用在股票系統、風險監控系統等等要求實時性比較高的系統中。

1.2 CEP和關係數據庫

關係型數據庫不適合每秒成百上千的數據量的查詢。內存數據庫與比傳統的關係數據庫相比,有更好的查詢性能,更適合處理CEP應用。

1.3 專注於CEP的Esper 引擎

這個Esper引擎工作起來有點像數據庫的倒置。Esper 引擎允許應用存儲查詢並運行數據通過,來代替存儲數據並且執行查詢存儲數據的工作方式。esper提供兩種機制來處理事件:

1、Esper提供了一個事件模式語言去指定基於表達式的事件模式匹配。這個模式匹配引擎是通過一個狀態機來實現的。這個事件處理的方法匹配期望存在的隊列或者不存在的事件或者事件的組合。它包括以時間爲基礎的各個事件之間的關係。

2、 Esper還提供事件流查詢。這個樣可以使事件流分析CEP應用的需求。事件流查詢提供窗口、聚合、連接和分析的函數來處理事件流。這些查詢是通過EPL 語句來實現的。EPL用於視圖。視圖表示需要將構造的數據放入到一個事件流中並且去驅動數據的流動。在數據流動的過程中對數據進行處理,來得到我們最後所 需要的結果。

Esper提供這兩種方法作爲互補是通過相同的API來實現的
1.4事件驅動應用服務器(Event Driven Application Server)

事件驅動應用服務器是一種新型的服務器,爲每秒需要處理超過100,000個事件的服務器提供一個運行時和多種支撐基礎設施服務(如傳輸、安全、事件日誌、 高可靠性和連接器等)。除了事件處理以外,事件驅動服務器還可以將事件信息和長時間存在的數據(通常從關係數據庫查詢中獲取)結合起來,以及在事件流上執行臨時的關聯關係和匹配操作。

事件系統(Event System)

事件系統存在兩個概念,可使之與消息傳送系統(Messaging System)區分開來:

1、事件流處理(Event Stream Processing,ESP)——  檢測事件數據流,分析出那些符合條件的事件,然後通知監聽器

2、複雜事件處理(Complex Event Processing,CEP)——可以監察各事件間的模式

全功能的事件驅動服務器尚需數年時間方可實現,但現在開發者就可通過來自Codehaus的Esper,在獨立應用、Java企業級應用和Spring應用 中實現事件驅動架構。Esper的1.0版本(InfoQ曾報道過)是在2006年6月發佈的,它是一個輕量級、可嵌入的ESP和CEP的開源實現。
把Esper集成到獨立應用中其實很簡單。步驟如下:

1、獲取一個Esper引擎實例

2、生成一個Statement(用Esper的查詢語言)

3、使用引擎註冊這個Statement

4、生成一個Listener(通過實現一個Java接口,該接口在Statement所得值爲true會被觸發),並把它跟Statement綁定起來

事件能以Java對象、XML或Map的形式展現,當它們通過系統的時候,系統會評估Statement的值,並執行Listener中的邏輯
Esper查詢語言提供了豐富的語法,這些語法可以表達複雜的臨時邏輯,此外還有如下的一些特徵:

1、事件過濾

2、滑動窗口和聚集(計算在最近30秒內所有報告的有意義的信息)

3、分組窗口和對輸出率的限制(獲取最近10分鐘內每個區域的信息數量)

4、連接和外連接(允許事件流之間的連接)

5、與歷史數據或引用數據集成(訪問關係型數據庫)

6、生成所有Statement都可以訪問的虛擬流




http://blog.csdn.net/dux003/article/details/6908562

發佈了14 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章