本文最新版已更新至:http://thinkinside.tk/2012/11/06/about_cep.html
Table of Contents
1 從事件驅動編程(Event-driven Programming)開始
如果你寫過GUI程序,對事件處理一定不陌生。事實上,事件驅動編程已經成為一種設計模式。大多數的GUI庫都會采用這一模式。
簡單的說,事件驅動模式包括三個參與者:事件產生者,事件分發器和事件處理器。
- 事件產生者(Events Generator)決定是否需要產生事件。比如,GUI上的每個組件都是一個事件產生者,可以根據用戶操作產生鼠標事件或者鍵盤事件。
- 事件分發器(Events Dispatcher)收集所有事件產生者發出的事件放入事件隊列(Events Queue),並根據事件的類型將事件分發給已經注冊的事件處理器。事件分發器通常由GUI框架實現。
- 事件處理器(Events Handler)根據接收到的事件進行處理,需要GUI框架的使用者自行編寫。
事件驅動編程的核心價值在於:程序的執行流程不是預先定義好的,而是由程序的使用者決定的。這將極大增強程序的交互性。
就好像DVD與RPG游戲的區別:前者的劇情是設定好的,你只能進行開始、暫停、快進、回退等有限的交互;后者可以決定主角的行為從而影響故事的結局。
2 事件驅動業務(Event-driven Business)
代碼的世界不可能是現實世界的完整鏡像,但一定是對現實世界的某種抽象,這種抽象能夠簡化代碼世界中對問題的分析和處理。 同時,這種抽象還可以反向映射到現實世界,為我們解決現實問題提供思路。
現代企業生存的外部環境處於劇烈的變化之中,“敏捷企業”已經成為生存之道,而事件驅動業務是敏捷企業的一個基本要求。
事件驅動業務(Event-driven Business),是在 連續 的業務過程中進行決策的一種業務管理方式,即根據不同時點上出現的一系列事件觸發相關的任務,並調度可用的資源執行任務。 如果說事件驅動編程能夠為軟件帶來更靈活的交互性和強大的功能,那么企業中的事件驅動業務能夠大幅度提高業務的效率和靈活性。
事件驅動業務依托於比較成熟的信息化建設。各個業務應用系統在產生連續不斷的數據流的同時,根據定義好的條件產生一些“業務事件”,按照策略對這些業務事件進行分析處理,觸發新的業務事件或者業務流程,即實現了業務的事件驅動。
從上面的描述可以看出,事件驅動業務要求能夠快速(毫秒級)、不間斷的處理連續、海量的數據,具備靈活的規則或策略設置,從而具備迅速識別、捕獲、響應實時業務數據的能力。 而傳統的企業IT架構通常采用:
- 在業務應用系統中處理業務操作
- 遵循固定的業務流程(Business Process)處理跨系統事務,並且這些流程很少變化
- 基於數據倉庫進行海量數據的存儲及事后分析
這種IT架構遠遠達不到事件驅動業務的要求。
事件驅動業務能夠應用的業務領域很多,凡是需要快速處理連續性數據、需要能夠靈活制定策略的業務,都可以采用事件驅動的業務模式。如證券行業常見的風險分析預警(事前及事中風控)、投資決策(程序化交易)、經紀人績效計算等。
3 業務事件處理的幾個層次
其實在傳統的IT架構中,我們已經實現了業務事件的處理。比如在傳統的業務應用系統中,我們通常將業務數據存儲在數據庫中,通過應用系統的操作界面由人工發現和處理業務事件。
這樣的處理方式存在兩個不足,一是速度慢,二是對於復雜的情況只靠人腦難以處理。於是有了兩個技術方向:
- 消息隊列(MQ) 對於速度慢的解決辦法是用機器代替人工,為了在多個系統之間傳遞消息,發展出了消息隊列(MQ)的技術
- 商業智能(BI) 為了應對復雜性,通過數據倉庫將數據整合到一起,並用專門的工具在數據模型的基礎上進行分析
但是上述兩個方向是正交的:MQ不適合處理復雜性,而BI主要適應於對結構化的歷史數據的分析,無法處理“現在”的情況。
4 CEP:魚與熊掌可以兼得
CEP(Complex Event Processing)的出現解決了上述兩個方面的問題,在實時性和復雜性方面都得到了很好的解決。
4.1 處理數據流
不管是單獨的應用系統,還是數據倉庫,都是先將數據存儲到數據庫/數據倉庫,然后再處理或查詢。 而CEP與MQ類似的將數據看作是 數據流 。在連續數據的快速移動過程中進行分析處理。 這樣的方式不需要很大的數據加載,完全可以在內存中進行,從而能夠快速產生結果。
4.2 處理復雜性
業務事件可能很復雜,在各種不同的數據流中源源不斷產生各種類型的事件。需要對這些業務事件進行復雜的計算,如過濾、關聯、聚合等,同時還需要考慮這些也是事件出現的時間序列。 最終才能產生有意義的事件,或觸發業務流程。同時,這些計算的規則可能還會經常變化。
這一類的問題通常通過基於規則的推理機(即規則引擎)來實現。
4.3 CEP的架構
綜上所述,CEP在邏輯上應該包括:
- 事件發生器 通過應用系統、文件系統、數據庫、互聯網、人工、以及傳感器產生事件
- 事件處理器 模式的匹配、驗證和改進,路由,轉換以及編排
- 事件消費者 與事件發生器類似,也可以是應用系統、文件系統、數據庫、互聯網、人工界面等
5 小結
CEP是一種比較新的企業架構(EA,Enterprise Architure)組件。CEP將數據看做一種數據流,基於規則引擎對業務過程中持續產生的各種事件進行復雜的處理,能夠實現對連續數據的快速分析處理。可以應用在多種業務場景,如風險分析、程序化交易等。
如果說BI實現了商業智能,那么CEP則實現了“持續智能(Continuous Intelligence)“。
Date: 2012-11-06 12:49:12 CST
HTML generated by org-mode 6.33x in emacs 23