復(fù)雜事件處理(Complex Event Processing,CEP)系統(tǒng)和事件驅(qū)動架構(gòu)(Event Driven Architecture,EDA)都被認(rèn)為會在目前和未來的精致繁雜的系統(tǒng)設(shè)計(jì)中扮演重要角色。但是它們的角色是什么?會對業(yè)界產(chǎn)生什么樣的影響?最近又開始了關(guān)于這些問題的爭論。David Luckham和Roy Schulte 還編撰了一個(gè)用于CEP和EDA 的術(shù)語概覽和詞匯表。
拋開實(shí)現(xiàn)細(xì)節(jié),Luckham和Schulte對每個(gè)術(shù)語做了定義:
首先“事件”這個(gè)最普遍的術(shù)語,是有問題的;旧纤瑑蓚(gè)截然不同的含義:(1)一個(gè)發(fā)生的活動;(2)計(jì)算機(jī)系統(tǒng)里面代表某個(gè)活動的事物。按理說,應(yīng)該引入兩個(gè)不同的術(shù)語,比如“事件(event)”和“事件對象(event object)”。但是,事實(shí)是在每個(gè)稍微長些的討論中,你都會發(fā)現(xiàn)這樣做太晦澀難懂了,它從【注:event 和event object這兩個(gè)分開的術(shù)語】的區(qū)別要不就是被誤用,要不就是被忘記甚至忽略了。舉個(gè)例子,如果要使用兩個(gè)術(shù)語,那么很有可能導(dǎo)致你在說“事件處理(event processing)”時(shí),其實(shí)意思是指“事件對象處理(event object process)”。所以說,最好的辦法是復(fù)用“事件(event)”這個(gè)單詞,通過每個(gè)詞的上下文來理解它所要表達(dá)的意思。
Luckham和Shulte將“復(fù)雜事件”定義成“一個(gè)對多個(gè)其它子事件的抽象的事件!痹谔岬侥碌贤顿Y者服務(wù)系統(tǒng)中的問題導(dǎo)致不正確的評級時(shí),Joe Mckendrick談?wù)摰搅藦?fù)雜事件的話題。Mckendrick說“也就是說,目前即使沒有上億美元,也有數(shù)百萬美元的投資決定是由此類系統(tǒng)產(chǎn)生的錯(cuò)設(shè)數(shù)據(jù)造成的!盡ckendrick的立場是,復(fù)雜的講別和感應(yīng)系統(tǒng)也許仍然需要人類的參與,以阻止問題或者錯(cuò)誤的發(fā)生。
Mckendrick提到K. Mani Chandy博士,加州理工學(xué)院的一個(gè)正在做講別和感應(yīng)研究的計(jì)算機(jī)科學(xué)教授,他曾經(jīng)表示在基于復(fù)雜事件做決策時(shí),要保證這個(gè)過程中有人的參與。 Chandy說在有些情況下,比如戰(zhàn)術(shù)軍事上的某個(gè)涉及到使用武器的操作,“它會一直有個(gè)對此事最終行為負(fù)責(zé)的人參與其中!
Chandy和Micahel Olson談到為何事件處理與‘識別和感應(yīng)’應(yīng)用(PDF)也許將在業(yè)務(wù)活動監(jiān)測和業(yè)務(wù)儀表盤領(lǐng)域普遍存在。Chandy和Olson對Web講別和感應(yīng)應(yīng)用有非常深入的研究,這些應(yīng)用僅從Web數(shù)據(jù)源提取事件和數(shù)據(jù):
Web數(shù)據(jù)源可以是活躍的或者休眠的?蛻舳丝梢酝ㄟ^請求-應(yīng)答協(xié)議輪詢服務(wù)器,以獲得信息。而信息也可以通過RSS或者ATOM流,或者其他的數(shù)據(jù)協(xié)議,推送給客戶端。休眠的數(shù)據(jù)源也可以有個(gè)活躍的接口,方法是讓代理定期輪詢它,并在接下來的輪詢中傳輸更改的信息。
但是CEP真的需要一個(gè)完全不同的架構(gòu)類型嗎?
Brenda Michelson 就事件處理寫了一篇文章--事件驅(qū)動架構(gòu)概覽。他定義了EDA中的5類組件:
事件元數(shù)據(jù):事件元數(shù)據(jù)包括事件說明和事件處理規(guī)則;
事件處理:事件處理的核心是引擎和事件發(fā)生數(shù)據(jù);
事件工具:事件開發(fā)工具用于定義事件說明和事件規(guī)則,以及管理訂閱等。事件管理工具提供事件處理基礎(chǔ)架構(gòu)的管理和監(jiān)測,事件流的監(jiān)測以及顯示事件生成和處理狀態(tài)等;
企業(yè)集成:一個(gè)企業(yè)集成中樞在事件驅(qū)動架構(gòu)中扮演著重要的角色。需要集成的一些服務(wù)包括:事件預(yù)處理(過濾、路由和轉(zhuǎn)變等)、事件通道傳輸、服務(wù)調(diào)用、業(yè)務(wù)流程調(diào)用、發(fā)布和訂閱,以及企業(yè)信息訪問等;
源和目的:創(chuàng)建事件和/或執(zhí)行一個(gè)事件驅(qū)動動作的企業(yè)資源(應(yīng)用、服務(wù)、業(yè)務(wù)流程、數(shù)據(jù)存儲、人員和自動代理等)。
Michelson還談到了EDA和SOA 之間的蘭系:
我相信SOA和EDA是平等和互補(bǔ)的。所以,我不認(rèn)同那些努力傳播SOA的同學(xué)們所說的“EDA只是SOA 的一個(gè)子集”的論斷。一個(gè)更廣泛的事件驅(qū)動架構(gòu)概念,不僅是超越事件驅(qū)動SOA的,還應(yīng)該包括實(shí)時(shí)信息流和分析,以及復(fù)雜事件處理。
Ivar Jacobson博士在EDA方面有自己獨(dú)到的見解。Jacobson 提出的問題是:我從需要事件驅(qū)動架構(gòu)嗎?在回答他自己的問題時(shí),Jacobson說,“當(dāng) EDA 認(rèn)為事件是系統(tǒng)中最重要的組成時(shí),你最好注意那些組件或者服務(wù),以及組件之間的‘通道’”。事件可以被生產(chǎn)、傳遞和消費(fèi),甚至在系統(tǒng)中被傳播。這種類型系統(tǒng)的一個(gè)最大好處就是:
最有意思的組件是那些服務(wù)。你同時(shí)有了面向服務(wù)的架構(gòu)(SOA),甚至更多。
不論哪一種情況,EDA和SOA都不會彼此不相容戒者排斥。它從都能被用來處理復(fù)雜事件處理系統(tǒng),并為你的企業(yè)提供自動的戒者有效的產(chǎn)出。
轉(zhuǎn)帖于:軟件水平考試_考試吧