自從50年代開始,古老的操作系統使用事件在一個單一處理器的系統上來控制執行緒。過去的50年以來,離散事件模擬、計算機網路、主動式資料庫、中介軟體,分別用不同的事件處理形式來發展。事件處理的機制已經風行了IT世界超過55年之久。也許你會問在接下來的日子裡,為什麼需要複雜事件處理(CEP)?複雜事件處理又有什麼新的改變?和過去二三十年間用的事件驅動架構又有什麼不同?
《圖一 事件驅動架構演進》 | 資料來源:A Short History of Complex Event Processing |
|
過去的二十年間,在IT系統中例如網站、中介軟體、公司內部網路等,所產生的事件大量爆炸性成長創造了新的需求。70年代開始網路大量發展,接著80年代企業軟體大量的訊息傳遞呈現指數性的成長。人們想要從這些大量產生的事件裡面再找出新的訊息出來。於是,IT系統在事件處理上大量成長就成為了推動複雜事件處理的動力。
今日的資訊科技不斷地產生新的訊息,這些快速且大量的事件增進了各種需求,包括自動化的需求、電子商務的需求及網路分析的需求。我們從需要產生什麼樣的事件,轉而關心如何能從這廣大的事件資料裡面,找出更多有意義的事情。如同湯馬斯‧佛里曼(Thomas L. Friedman)所寫的世界是平的一書中所揭示,整個世界的交流從企業乃至於個人,早已透過網際網路撫平了整個IT世界。事實上,IT系統中還有許多的資訊從未被發掘。許多的訊息、事件靜靜地流竄在程式裡面,就像千萬年以來古代有機物通過漫長的壓縮和加熱後,逐漸形成而藏在地底下面的石油,它就是在那裡而我們從未去探勘它或是認知到它。但是這些潛藏的能量或者說是事件,的的確確具有相當大的威力。只要能夠找出這些事件如何聚在一起?何時聚在一起?彼此之間又有麼樣的關係,那麼這些事件就能夠給我們帶來極大的產出。今日,一種革命性的技巧—複雜事件處理就可以幫我們利用這強大的事件威力。
複雜事件原理
最近一段時間以來,我們經歷了許多新名詞的衝擊,從SOA到Web2.0一直到現在最熱門的雲端運算。正當市場正在為這些新的概念而爭戰的如火如荼之時,另一個可以改變未來的IT新技術藍圖正在悄悄崛起。這一塊商業智慧的百年戰爭或許才正要開始攻城掠地。
也許過去傳統的資料庫或是資料倉儲能夠為一些商業決策帶來有價值的分析,但是今日這些工具並不能在當下甚至幾毫秒內,帶來立即的決策及反應。尤其是今日當生活和電腦有著密不可分的關係,從政府、企業、乃至於個人,IT世界有著龐大的事件雲,而其中又帶有可以稱作商業智慧的大量資訊。
量身訂做的程式碼
過去企業在IT系統上處理事件的部分常使用量身訂做的程式碼,打造一個具有完整機能的系統。為了聚焦在某些需求上面,量身打造的程式常需要花費大量的建置時間和人力以及系統擁有較長的生命週期循環,應用性也相對受到限制。不但花費大量的維護成本,而且這樣的系統也缺乏彈性。複雜事件處理包含了一些新的技術以及舊的技術,其中有些技術就像過去所熟知的基於規則的系統,根據規則來過濾及處理事件。另外有些新的技術則是在大型分散式系統中,追蹤過去歷史中具有因果關係的事件,或者是在IT系統當中,幾千幾萬筆事件裡面,使用事件之間的關係和事件的模式,來發現新的複雜事件的存在。
複雜事件最早是由史丹佛大學的David Luckham與Brian Frasca教授於1998年發表的一篇論文叫做Complex Event Processing in Distributed Systems當中所提出。主要的概念即是在事件驅動架構下,根據簡單事件、事件串流處理及複雜事件以上這些概念融合而成。以下就來介紹複雜事件處理的一些特點
複雜事件階層化架構
相較於簡單事件,複雜事件處理不僅處理單一的事件,也處理由多個事件所組成的複合事件。來看一個簡單的例子,從圖中可以看到考慮在一個金融交易系統中,當發生了帳號登入、密碼改變、新的自動交易三個事件之後。綜合以上,可以定義為一個可能的欺騙事件,當發生三次的可能欺騙事件之後,又可以說發生了一次系統攻擊事件。複雜事件處理監測分析事件流,當特定事件發生時去觸發某些動作。
事件處理語言(EPL)
還記得很久以前達美樂比薩所提出的口號,外送30分鐘之內沒到就免費。於是當拿起電話播出訂購專線之後,就能在30分鐘之內享用熱騰騰的比薩。事實上,在複雜事件處理也有一樣的訂購專線─事件處理語言,保證比達美樂還快。在複雜事件處理中,為了要達到高吞吐量、高度利用性、及低度延遲,讓企業能夠達到即時決策,因此使用事件串流處理。使用一種SQL-LIKE的事件處理語言,此種語言透過時間或以視窗(Window:事件串流的一部分)來擴展原本的SQL語言,使得此種語言可以存取目前或是過去歷史的狀態資訊,方便地對事件串流提供複雜的邏輯處理,使事件串流在記憶體中做模式比對處理以及查詢。這些過程中,都在記憶體內進行,不須經由存取像是硬碟的儲存裝置的方式,減少I/O,降低傳統資料庫管理系統,對儲存裝置的依賴所造成的延遲。讓複雜事件處理展現對大量從事件雲裡所形成的事件串流,有著高度的處理效能。
《圖三 事件處理語言範例》 | 資料來源:Wikipedia |
|
圖三是一段事件處理語言的範例程式碼。此段程式碼主要用來判斷是否有「結婚」這個狀況,如果發生了以下條件時:當有人的性別相等於男人並且此人的穿著是燕尾服,然後如果接著發生以下兩種事件,一、有人穿著結婚禮服;二、教堂的鐘聲響了或者是有米飛灑在空中,並且持續了兩個小時,即產生「結婚」的動作。
事件串流處理(Event Stream Processing)
《三國志·魏書·郭嘉傳》:兵貴神速。今千里襲人,輜重多,難以趣利,且彼聞之,必為備。日本戰國名將武田信玄也用「疾如風、其徐如林、侵掠如火、不動如山」作為他作戰用兵的原則。企業若要運籌帷幄之中、決勝千里之外,首先最重要的就是依靠「速度」。我們不禁要問,當前IT的軟體技術要如何處理這些資訊來達到我們所想要的即時效果?十年前也許只需要應付DOS系統所產生的簡單事件,十年後的今天資訊科技的事件不但在各種個人裝置上,同時也在各個供應商方面大量產生。為了達到即時的需求應付這樣大量的事件,以往企業使用資料探勘,資料倉儲等技術來建立所謂的商業智慧,現在複雜事件處理採用了事件串流處理的技巧。本來將資料處理要經由固定的儲存媒體,事件串流處理將事件處理通通移到記憶體中做處理,來提供商業智慧真正即時的決策支援。
複雜事件處理引擎
一台車子是否具有良好的性能最重要的因素,就取決車子的心臟─引擎。汽車引擎百百款,根據不同的狀況有不同的設計,有柴油引擎、轉子引擎、V型引擎、對臥式引擎等。同樣的,在複雜事件處理中的處理引擎究竟有什麼不同呢?圖五的複雜事件處理引擎,其實是一個基於規則的引擎,它監控著所有進入的事件串流,接著去比對這些不斷進入的事件,有沒有符合它所想要的狀況或條件,如果有的話就產生行動。在建置時期,IT開發人員可以使用事件處理語言工具,根據情境所需的需求建立規則和模式,然後將這些規則和模式載入到執行時期的複雜事件處理引擎。在執行時期,各種不同格式的事件,從各種不同的來源不停地進入複雜事件處理引擎,然後複雜事件處理引擎根據建置時期所建立的規則分析這些進入的事件,一旦偵測到符合這些模式就會觸發新的通知或者是產生各種行動,新的通知事件也可以再度變成複雜事件處理引擎的事件流來源,重新進入複雜事件處理引擎。
複雜事件處理生活應用案例
2000年到2003年之間複雜事件處理廠商,開始從金融交易這一方面進入市場。事實上這一個新興技術在業界以及學術界仍然有更多的研究價值,在金融方面只要是需要即時分析大量資料的情境都可適用。
位於荷蘭奈梅亨(Nijmegen)地區的競走比賽已有悠久的歷史,但是競走比賽中常會有選手潛在性的脫水及體溫過高的危險。2006年的比賽中超過40000人參加比賽,有69名選手因為脫水或體溫過高送到醫療中心。荷蘭奈美恩大學(Radboud University)的Bakkers教授目前正進行一項研究,和提供複雜事件處理軟體的Apama公司進行合作,結合RFID感測技術,在此競走比賽中,徵求一些自願者戴上RFID標籤,監控參賽者的體溫。資料透過藍牙傳送至具有GPS的手機發送到位於奈美恩的控制中心,控制中心將會使用Google Map監控參賽者的位置,如果複雜事件處理判斷出參賽者的體溫過高,則透過SMS傳送到參賽者的手機內通知他們到鄰近的休息站休息。Bakkers教授表示此一實驗進行的非常順利,可以即時知道參賽者目前的位置,避免人員的死亡。Apama公司和奈美恩大學未來計畫將此一技術,進一步的應用在馬拉松比賽中或是其他長距離的跑步比賽
結語
複雜事件處理使得IT系統也面臨到了一些脫胎換骨的契機。主要如下列幾點:
- ●企業流程自動化;
- ●電腦系統自動排程;
- ●網路監控和效能預測;
- ●偵測系統潛在的威脅。
-
企業在和客戶之間的買賣、行銷、供應鏈、產品研發、支援方案等,每天都會面臨到許多即時性的問題。複雜事件處理並不像其他技巧利用透過加強決策的方式來支援企業的各項操作。複雜事件處理藉著集中在了解以下幾點來加強企業的決策。
- ●各種企業戰略或戰術上的情境應用;
- ●即時的情境決策制定;
- ●情境的內容了解。
-
複雜事件處理發展的時間並沒有很長,主要做複雜事件處理的廠商們,也都是原本在做商業智慧的廠商。目前眾多大廠商十分看好這一塊技術,積極併購在做複雜事件處理的小公司,例如甲骨文公司就併購了BEA這家公司。未來的資訊科技一定是會從Web延伸到各種電子裝置上,就目前很熱門的感測技術就知道,IT系統只會越龐大不會越縮小。未來要應付這麼大一塊分析資料的市場的需求,複雜事件處理絕對可以讓使用者感到更簡化的操作如何分析資料,並且用更快的速度來達成所要的需求。隨著全球金融風暴肆虐下,台灣許多科技產業哀鴻遍野,應該要用什麼樣的方式去打破這個困局?也許複雜事件處理可以給我們一部分的答案也說不定。
---作者任職於資策會網路多媒體研究所---