摘 要:SOA與EDA架構(gòu)的整合應(yīng)用是未來企業(yè)實時軟件架構(gòu)的主流趨勢,但要充分發(fā)揮兩種架構(gòu)的互補綜效,就需要有好的事件管理機制及提供服務(wù)的配套設(shè)計。針對目前企業(yè)應(yīng)用系統(tǒng)開發(fā)面臨的主要問題,運用事件價值觀分析事件所提供的價值對用戶的重要性與實際貢獻,設(shè)計一種價值驅(qū)動的智能化事件本體模型,有效結(jié)合了SOA整合系統(tǒng)與EDA即時通知事件的功能,為設(shè)計具有彈性、效率與應(yīng)變能力的健全的企業(yè)級系統(tǒng)架構(gòu)提供了新的解決方案。
關(guān)鍵詞:價值驅(qū)動; 事件; 中間件; 企業(yè)服務(wù)總線; 系統(tǒng)架構(gòu)
中圖分類號:TP311文獻標志碼:A
文章編號:1001-3695(2009)09-3354-04
doi:10.3969/j.issn.1001-3695.2009.09.043
Intelligentized event-driven model used on integrate SOA and EDA
ZHANG Hui, YU Jian-jiang, TANG Ke-ming
(School of Information Science Technology, Yancheng Teachers University, Yancheng Jiangsu 224002, China)
Abstract:Applications integration architecture of SOA and EDA has become the mainstream trends of real-time software architecture in future.In order to fully extent the advantages of both SOA and EDA,it must have a good mechanism of event management and combined design of services. Based on the main problems of enterprise applications, useing value-driven event analyzed value and contribution for users,and designed an intellectualized event ontology model of effectively integrate SOA and EDA.It provided a new solution for the flexible, efficient, adaptive, sound system design of enterprise architecture.
Key words:value driven; event; middleware; enterprise service bus; system architecture
0 引言
采用的標準不一、系統(tǒng)整合及系統(tǒng)應(yīng)變能力較差已成為企業(yè)應(yīng)用系統(tǒng)面臨的重要問題,這使決策者無法及時有效地掌握重要資訊,增加了錯誤決策的幾率。由于用戶的需求會隨著時間而改變,SOA無法隨時根據(jù)外界環(huán)境的改變而迅速采取對策;現(xiàn)有的EDA系統(tǒng)設(shè)計復(fù)雜、可理解性差[1],缺乏一套從用戶角度出發(fā)的設(shè)計,系統(tǒng)設(shè)計時面臨高并發(fā)通信和處理的性能挑戰(zhàn)[2];單純采用一種架構(gòu)只能按規(guī)劃好的流程與事件路徑靜態(tài)地使用已存在的服務(wù),若有更符合需求的服務(wù)出現(xiàn)時,無法彈性地按用戶需求提供更適合的服務(wù)。
Roy Schulte與TIBCO(NASDAQ:TIBX)一致認為SOA與EDA是兩種相容且互補的架構(gòu),也是實時企業(yè)軟件架構(gòu)的主流趨勢,可以廣泛應(yīng)用于B2B、B2C的商業(yè)模式。然而,在實際項目的應(yīng)用中,如何依企業(yè)需求結(jié)合這兩種架構(gòu),仍存在較大困難。因此,設(shè)計一種有效的事件管理機制,將SOA與EDA進行融合,比較完善地實現(xiàn)數(shù)據(jù)集成和應(yīng)用集成,提升系統(tǒng)的反應(yīng)與溝通能力,已成為當前開發(fā)健全的企業(yè)應(yīng)用系統(tǒng)必須要面對的問題。
1 ESB對SOA和EDA的支持
SOA基于方便的請求/應(yīng)答機制,將各程式或系統(tǒng)視為服務(wù),利用共通的服務(wù)介面進行溝通,以達到整合與重用服務(wù)的一種應(yīng)用程式架構(gòu)。EDA有時也稱為事件驅(qū)動的SOA,一般使用發(fā)布/訂閱機制,是一種設(shè)計和構(gòu)建應(yīng)用的方法,其中事件觸發(fā)消息在獨立的、非耦合的模塊之間傳遞。因為事件消息用發(fā)布/訂閱方式通過消息代理傳輸,一個事件可以傳送給多個需要者[3]。
企業(yè)服務(wù)總線(enterprise service bus,ESB)是一種在松散耦合的服務(wù)和應(yīng)用之間標準的集成方式[4],可以提供比傳統(tǒng)中間件產(chǎn)品更為廉價的解決方案;同時它還可以消除不同應(yīng)用之間的技術(shù)差異,讓不同的應(yīng)用服務(wù)器協(xié)調(diào)運作,實現(xiàn)服務(wù)之間的通信與整合。從EDA的角度來說,ESB非常適合用做容納已發(fā)布的商業(yè)事件的容器,因為它允許讓這些事件被廣泛地用于訂閱,可以被放入到整個企業(yè)的全局數(shù)據(jù)空間中,讓所有的應(yīng)用都能夠一致地訪問到事件信息。
2 價值驅(qū)動事件體系
事件驅(qū)動體系結(jié)構(gòu)上是對反應(yīng)式系統(tǒng)[5]的抽象,通過“推”模式的事件通信提供并發(fā)的反應(yīng)式處理,特別適合松耦合通信和支持感知的應(yīng)用,是解決SOA松耦合通信與協(xié)同處理的理想解決方案。事件指系統(tǒng)或環(huán)境中發(fā)生的活動或狀態(tài)變化[6]。Rosenblum等人[7]提出了Internet環(huán)境下事件驅(qū)動體系結(jié)構(gòu)的通用設(shè)計,用七個模型對之進行分析和設(shè)計,奠定了大規(guī)模分布環(huán)境下事件驅(qū)動體系結(jié)構(gòu)設(shè)計的基礎(chǔ)。下面從商業(yè)經(jīng)濟學(xué)角度考慮價值驅(qū)動事件,由分類元件(event value taxo-nomy,EVT)、度量元件 (event metrics,EM)、描述元件 (event describing,ED) 三個核心元件組成。圖1為三者之間關(guān)系圖。
2.1 分類元件
任何事件都有一組驅(qū)動它發(fā)生的價值元素,用戶對事件的重視程度由其重要性與貢獻大小決定。由定義事件價值分類模組廣泛地描述各種事件所帶來的價值與影響。事件價值分類模組主要從兩種觀點分析事件價值,即交易觀點和規(guī)范觀點。
2.2 度量元件
提供一個評估EVT的度量體系,大部份的價值元素都對應(yīng)一個相對應(yīng)的衡量指標,而指標的值(0~1)可以由指數(shù)、范圍值等量化而成,用來描述事件所提供的價值。事件度量指標表(表1)是一個指標范例表。
表1 事件度量列表
指標事件提供者角度指標值事件訂閱者角度指標值說明
time-sensitivity0-無,0.1-很低,0.3-低,0.5-中, 0.7-高,1-很高0-無,0.1-很低,0.3-低,0.5-中,0.7-高,1-很高兩指標成正比
equipment不適合度量
monetary0-免費, 0.5-適中,1-很貴0- 很貴, 0.5-適中,1- 免費兩指標成反比
time length0-短, 0.5-中,1-長按訂閱者的個人資料設(shè)定
safety0-無,0.1-很低,0.3-低,0.5-中,0.7-高,1-很高0-無,0.1-很低,0.3-低,0.5-中,0.7-高,1-很高兩指標成正比
…………
family needs0-無,0.1-很低,0.3-低,0.5-中,0.7-高,1-很高0-無,0.1-很低,0.3-低,0.5-中,0.7-高,1-很高兩指標成正比
2.3 描述元件
事件描述分為特定領(lǐng)域和從屬領(lǐng)域兩種層級:前者的描述是將事件的本質(zhì)抽象出一個更為通用的結(jié)構(gòu)描述,且可應(yīng)用于不同域的事件模型描述,而描述的內(nèi)容主要是由事件提供者制定;后者的描述是依域的不同,會有不同的描述特質(zhì),而用戶在訂閱或接收到事件時,可通過事件描述進一步了解事件的目的與性質(zhì)。
3 價值驅(qū)動事件模型
通過分析SOA與EDA各自的特點,基于以上設(shè)計的價值驅(qū)動事件體系,設(shè)計一種有效整合兩種架構(gòu)的事件模型(圖2)。
3.1 Dispatch agent(調(diào)度代理)
調(diào)度代理是對外溝通的窗口,負責(zé)響應(yīng)外部用戶的要求,并按要求給系統(tǒng)中的EDA或SOA元件分配任務(wù)。
a)接收事件提供者的事件通知,分發(fā)事件給事件加工代理處理。
b)為用戶或應(yīng)用系統(tǒng)提出訂閱或取消事件的要求,接收到此類要求后,將任務(wù)分給事件管理代理。
c)為服務(wù)提供商提出注冊服務(wù)的請求,并將此類請求交給服務(wù)注冊元件處理。
d)為用戶或應(yīng)用系統(tǒng)提出呼叫或?qū)ふ曳?wù)的請求。如果是呼叫服務(wù)的請求,將請求交給服務(wù)調(diào)用元件處理;如果是服務(wù)尋找要求,則交由服務(wù)搜索元件處理。
3.2 SOA元件
三個基礎(chǔ)的子元件為service registry(服務(wù)注冊)、service search(服務(wù)搜索)和service invocation(服務(wù)調(diào)用)元件,其功能分別為:
a)服務(wù)注冊元件采用UDDI規(guī)范,將服務(wù)按域與功能分類,也可提供服務(wù)供應(yīng)商注冊服務(wù),而服務(wù)供應(yīng)商需要提供WSDL服務(wù)描述方法,使用戶尋找合適的服務(wù)。
b)服務(wù)搜索元件利用服務(wù)的篩選條件尋找符合條件的服務(wù)描述,進而尋找注冊目錄中的合適服務(wù),并提供呼叫服務(wù)的方法。
c)服務(wù)調(diào)用元件采用SOAP的方式與外部的服務(wù)溝通,負責(zé)呼叫服務(wù)。
3.3 EDA元件
1)Event processing agent(事件加工代理)
事件的性質(zhì)不同,所以需要event processing agent提供完善的事件處理流程,處理復(fù)雜的事件并發(fā)揮事件機制的最佳效用。其主要功能是接收和處理事件提供者所發(fā)出的事件。處理事件過程主要可分為兩種層次:屬于事件層次的分析,主要分析事件的緊急性與復(fù)雜性;屬于事件價值層次的分析,主要分析用戶對事件所提供的事件價值的重視程度,作為篩選事件的依據(jù)。
a)事件層次分析。系統(tǒng)接收到事件發(fā)出者發(fā)出事件后,event processing agent會依事件描述判別事件為獨立事件或復(fù)合事件。
b)事件價值層次分析。進一步分析獨立事件或組合后的復(fù)合事件所提供的事件價值,篩選事件是否符合使用者所重視的事件價值。假設(shè)事件所提供的服務(wù)必須付費,采用求cos θ值的方法判別兩向量的相似度。相似度越高,則夾角越小且cos θ趨近于1;向量相似度越低,則夾角越大且cos θ趨近于0。以實驗方式?jīng)Q定一標準值α,相似度高于α的則接收此事件(accept event),反之則刪除事件(delete event)。
(a)模型向量。權(quán)重在0~1,設(shè)某用戶對time-sensitivity低,對monetary、safety、family needs價值的重視適中,其向量表達式為C1 = [0.3, 0.5, 0, 0.5,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]。
(b)價值描述向量
獨立事件:某事件提供信息satety很高,且事件family needs很高,其向量表達式為E1 = [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1]。
求E1與C1的cos θ為
cos θ=C1#8226;E1/(|C1||E1|)=(0.3×0+0.5×0+0.5×1+0.5×1)/(0.32+0.52+0.52+0.5212+12)≈0.771(1)
復(fù)合事件:有三個相關(guān)事件表達式為
E2 = [1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
E3 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0.3]
E4 = [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0]
取相關(guān)向量的最大指標值組成新的向量Emax,其向量表達式為
Emax = [1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,0, 1, 0 ,0.3]
求Emax與C1的cos θ為
cos θ=C1#8226;Emax/(|C1||Emax|)=(0.3×1+0.5×1+0.5×1+0×1+0×1+0.5×0.3)/(0.32+0.52+0.52+0.52×12+12+12+12+12+0.32)≈0.700 8(2)
c)Event emergency analysis。按事件描述分析已接收的事件,如為緊急事件則通知用戶或系統(tǒng)處理,為非緊急事件可臨時存于事件序列中,等待用戶處理。
d)Store event information。Event processing agent最后會將所有事件的相關(guān)資訊存入資料庫,包含事件描述、價值向量與采用情況等,這些都成為event adapter agent調(diào)適事件的依據(jù)。
2)Event adapter agent(事件適配代理)
事件適配代理負責(zé)調(diào)整驅(qū)動模型,由于用戶關(guān)注的事件價值會隨時間而改變,如果強化對用戶采用事件的自動適應(yīng)機制,則可以彈性調(diào)整用戶的事件價值權(quán)重。處理事件的流程如圖3所示。
a)Event confirm。用locally weighted regression(局部加權(quán)回歸)方法[8]驗證事件的一致性,此種回歸符合假設(shè)的事件提供相似的事件價值,并適用于當不易找出具有永久適用性的全局模型時,也符合適應(yīng)性事件模型隨時間而彈性調(diào)整的特性。
y^=uy+σxy/σ2x×d(x,ux)wi(x)≡w(x-xi)=exp(-d2(x,xi)×k)μx=(∑iwixi)/n,σ2x=(∑iwi×d2(xi,μx))/n
μy=(∑iwiyi)/n,σ2x=(∑iwi×d2(yi,μy))/n
σxy=(∑iwi×d(xi,μx)×d(yi,μy))/n(3)
其中:x為目標事件的價值向量;xi為目標事件附近樣本的價值向量;y為目標事件被采用或拒絕的結(jié)果(0或1);yi為目標事件附近樣本被采用或拒絕的結(jié)果(0或1);y^為目標事件被采用或拒絕的預(yù)測(0~1)。將事件歷史資料帶入上述公式中,若目標事件的y與y^差異大,則表示此事件與其他事件不一致,須在樣本中刪除,其余資料成為調(diào)整事件模型的樣本資料。
b)Event value reinforced。負責(zé)分析使用者所重視的事件價值并調(diào)適用戶的事件價值模型。在篩選出合適的樣本資料后,用此組樣本及多元線性回歸找出一條可以用事件價值加權(quán)總值估計事件被采用或拒絕的函數(shù),表達式為
Y=a0+a1x1+a2x2+NA1AD+akxk+e(4)
其中:Y為事件被采用或拒絕的結(jié)果(0~1,0為拒絕,1為采用);x1,…,xk表示事件價值向量提供的價值(如x1為time-sensitivity);a1,…,ak表示事件價值的相對權(quán)重(如a1為time-sensitivity的權(quán)重);a0為截距;e為誤差。
3)Event management agent(事件經(jīng)營代理)
負責(zé)管理事件的訂閱與取消。由單一窗口的機制來有效管理事件,可以按需要呼叫相關(guān)的Web service服務(wù),但前提是事件提供商必須提供訂閱或取消事件的Web service服務(wù)。
3.4 SOA synthesizer(SOA合成器)
SOA合成器負責(zé)事件與服務(wù)的連接。當事件通過event processing agent的篩選后,透過SOA合成器進行呼叫服務(wù)。連接服務(wù)的方式依事件所提供服務(wù)資訊的多少,決定其服務(wù)自動化程度。
4 在信息交互平臺中的應(yīng)用
某商業(yè)機構(gòu)開發(fā)旅游服務(wù)信息交互平臺及行業(yè)內(nèi)部管理系統(tǒng),以商務(wù)預(yù)訂業(yè)務(wù)和代理業(yè)務(wù)為主要功能,提供線路規(guī)劃、導(dǎo)游、車票等多種商旅需求的管理和預(yù)訂,結(jié)合會員卡管理功能可實現(xiàn)會員消費記錄、積分管理,會員可通過系統(tǒng)進行在線的訂單提交、消費統(tǒng)計、積分查詢功能,真正實現(xiàn)一體化服務(wù)和業(yè)務(wù)管理網(wǎng)絡(luò)化。
本文采用J2EE技術(shù)框架來構(gòu)建系統(tǒng)平臺,以Web服務(wù)為節(jié)點,服務(wù)組合技術(shù)為紐帶,連接起一個動態(tài)的商務(wù)平臺。為增強系統(tǒng)的靈活性,局部系統(tǒng)使用面向?qū)ο蟮慕7绞健?/p>
4.1 系統(tǒng)架構(gòu)設(shè)計(圖4)
當業(yè)務(wù)問題需要一個請求/響應(yīng)或者實時解決方案,同時客戶事先知道該服務(wù)的提供者時需要使用SOA;當業(yè)務(wù)需要單向消息收發(fā),涉及長時間運行的異步流程,同時事件源不需要知道事件接收者是誰時,需要使用EDA。因此,運用價值驅(qū)動事件模型的基本原理,將SOA與EDA進行融合,讓這兩種各具特色的架構(gòu)充分發(fā)揮它們各自的特點,互相取長補短,將形成一個新的靈活、松耦合、可擴展的基礎(chǔ)服務(wù)架構(gòu),可以比較完善地實現(xiàn)數(shù)據(jù)集成和應(yīng)用集成。
1)企業(yè)服務(wù)總線 它是企業(yè)消息傳遞的主干和面向服務(wù)的體系結(jié)構(gòu)的關(guān)鍵組件,是協(xié)調(diào)業(yè)務(wù)支持層各部分的基礎(chǔ)結(jié)構(gòu),消息通過這里到達相應(yīng)的服務(wù),實現(xiàn)業(yè)務(wù)功能的調(diào)用。
2)消息管理 它是聯(lián)系消息與基本服務(wù)的橋梁,實現(xiàn)消息的分發(fā)/訂閱、隊列、目錄服務(wù)、數(shù)據(jù)轉(zhuǎn)換等。
3)應(yīng)用接口層 系統(tǒng)服務(wù)的外部描述,實現(xiàn)多種客戶端、多種協(xié)議的接入。
4)數(shù)據(jù)訪問接口 對業(yè)務(wù)邏輯層屏蔽數(shù)據(jù)訪問,業(yè)務(wù)邏輯層通過DAO實現(xiàn)數(shù)據(jù)存儲,實現(xiàn)業(yè)務(wù)邏輯層和數(shù)據(jù)持久層的分離。
該框架基于事件驅(qū)動的面向服務(wù)技術(shù)、通過各類適配器服務(wù)接口將企業(yè)應(yīng)用封裝成統(tǒng)一的應(yīng)用服務(wù),然后發(fā)布到目錄服務(wù)中心,并通過企業(yè)服務(wù)總線中的基礎(chǔ)核心服務(wù),如統(tǒng)一數(shù)據(jù)格式和消息傳遞等,來實現(xiàn)各個應(yīng)用系統(tǒng)間的通信交互。在該框架下需要進行過程集成和業(yè)務(wù)集成時,它首先通過業(yè)務(wù)流程定義服務(wù),并根據(jù)事件驅(qū)動的模型將已經(jīng)注冊的應(yīng)用服務(wù)在一定規(guī)則下組成相應(yīng)的業(yè)務(wù)流程鏈。業(yè)務(wù)集成模型的實現(xiàn)是由集成引擎調(diào)用應(yīng)用服務(wù)的接口實現(xiàn)數(shù)據(jù)的存取,并通過消息引擎在各個應(yīng)用服務(wù)間傳遞路由數(shù)據(jù),實現(xiàn)定義的業(yè)務(wù)流程。
4.2 核心部分模型實現(xiàn)
對以上架構(gòu)進行系統(tǒng)實現(xiàn),三個核心部分的組件模型實現(xiàn)如圖5所示。
該模型中,主題topic是消息傳遞中介,服務(wù)提供者通過publish servlet組件向請求用戶發(fā)送表單,并從表單接收數(shù)據(jù),然后生成XML元素對象,該元素對象和其他一些數(shù)據(jù)被送往service locator(服務(wù)定位器)中指定的服務(wù)進行處理,處理結(jié)果被作為參數(shù)調(diào)用publisher bean組件方法,向主題發(fā)送以該元素對象為消息體的消息。Reader servlet組件處理服務(wù)消費者的查詢預(yù)訂業(yè)務(wù),從表單獲得用戶將查詢預(yù)訂哪些方面服務(wù)的有關(guān)信息后,使用receive方法限時阻塞地從主題接收消息并對消息進行篩選,把篩選出的若干消息體取出,然后加工成XML文檔對象后輸出。Publisher bean組件被noticer servlet組件調(diào)用,用于發(fā)送消息,容器管理發(fā)送事務(wù),具有很高的可靠性。
5 結(jié)束語
結(jié)合了SOA和EDA思想的企業(yè)服務(wù)架構(gòu)已經(jīng)開始成為當前研究的熱點和主流,其松散耦合和標準化思想也將在軟件開發(fā)和信息系統(tǒng)集成中發(fā)揮重大的作用。從用戶角度出發(fā)并結(jié)合服務(wù)提供之功能,設(shè)計一個動態(tài)的自適應(yīng)事件管理機制,幫助用戶訂閱有用事件或取消不重視的事件,降低未知的風(fēng)險,提升了在繁雜業(yè)務(wù)信息中獲取真正有用信息的能力。另外,事件功能同時搭配提供服務(wù)方案,補強了SOA與EDA結(jié)合應(yīng)用的完整性。
參考文獻:
[1]劉家紅,吳泉源.一個基于事件驅(qū)動的面向服務(wù)計算平臺[J].計算機學(xué)報,2008,31(4):588-589.
[2]EUGSTER P T, FELBER P A, GUERRAOUI G, et al.The many faces of publish/ subscribe[J].ACM Journal of Computing,2003,35(2):114-131.
[3]SUN Xiu-li, ZHANG Wen-yin,WU Jin-zhao.Event-based operational semantics and a consistency result for real-time concurrent processes with action refinement[J].Journal of Computer Science and Technology,2004,19(6):828-839.
[4]李曉東,楊揚,郭文彩.基于企業(yè)服務(wù)總線的數(shù)據(jù)共享與交換平臺[J].計算機工程,2006,32(21):217-223.
[5]TOMBROS D, GEPPERT A, DITTRICH K. Semantics of reactive components in event-driven workflow execution[C]//Proc of the International Conference on Advanced Information Systems Engineering. Barcelona,Spain:[s.n],1997:409-422.
[6]LUCKHAM D C.The power of events:an introduction to complex event processing in distributed enterprise systems[M]. Boston:Addison-Wesley, 2001.
[7]ROSENBLUM D S, WOLF A L. A design framework for Internet scale event observation and notification[C]//Proc of European Software Engineering Conference/ACM SIGSOFT Symposium on the Foundations of Software Engineering.Zurich,Switzerland:Springer- Verlag,1997:344-360.
[8]COHN D. Locally weighted regression[EB/OL]. [1996-05-25].http://www-2.cs.cmu.edu/afs/cs/project/jair/pu b/volume4/c-ohn96a-html/node 7.html.