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