陽(yáng)建坤 祖向榮
1.華北電力大學(xué),控制與計(jì)算機(jī)工程系
針對(duì)傳統(tǒng)的基于內(nèi)容的訂閱發(fā)布(Publisher/Subcriber,Pub/Sub)中間件只能對(duì)簡(jiǎn)單的事件進(jìn)行檢測(cè)的現(xiàn)狀,引入復(fù)雜事件處理(Complex Event Processing,CEP)技術(shù),提出一種基于CEP 發(fā)布訂閱中間件,并對(duì)開(kāi)源CEP 引擎Esper 進(jìn)行擴(kuò)展,實(shí)現(xiàn)基于CEP 的事件發(fā)布訂閱機(jī)制,最后對(duì)電力系統(tǒng)中多源事件流進(jìn)行仿真監(jiān)控,驗(yàn)證了該方法的有效性。
隨著信息通信技術(shù)的快速發(fā)展,軟件系統(tǒng)的主要使用方式、運(yùn)行方式、生產(chǎn)方式和形態(tài)都在發(fā)生著巨大的變革,各類軟件系統(tǒng)逐漸形成一種開(kāi)放協(xié)同的應(yīng)用環(huán)境,而軟件的應(yīng)用形態(tài)也開(kāi)始從面向熟識(shí)用戶群體、相對(duì)靜態(tài)和相對(duì)封閉的緊耦合形式向公共可訪問(wèn)、開(kāi)放式以及動(dòng)態(tài)協(xié)作的松耦合模式轉(zhuǎn)變,這就要求軟件系統(tǒng)能夠支持對(duì)分布式異構(gòu)系統(tǒng)進(jìn)行動(dòng)態(tài)松耦合地協(xié)同通信,與此同時(shí)還要保持較高效的時(shí)間性能。
Pub/Sub 技術(shù)在控制流、時(shí)間和空間三個(gè)方面都具備完全的解耦能力,且具有較高的時(shí)間性能,能夠很好地迎合這樣的需求。本文在對(duì)當(dāng)前幾種主流的Pub/Sub 系統(tǒng)進(jìn)行研究的基礎(chǔ)上,針對(duì)其只能對(duì)簡(jiǎn)單事件進(jìn)行的檢測(cè)的現(xiàn)狀,提出一種基于CEP 的Pub/Sub 中間件,增強(qiáng)Pub/Sub 系統(tǒng)的表達(dá)能力,支持對(duì)“復(fù)雜事件”或“事件模式”的訂閱,從而改善系統(tǒng)的可擴(kuò)展性和性能。最后,對(duì)開(kāi)源CEP 引擎ESPER 進(jìn)行擴(kuò)展,實(shí)現(xiàn)了該中間件,并進(jìn)行了仿真實(shí)驗(yàn)。
從訂閱模型的角度來(lái)看,當(dāng)前Pub/Sub 技術(shù)主要分為四大類:基于通道的“發(fā)布/訂閱”、基于主題的“發(fā)布/訂閱”、基于內(nèi)容的“發(fā)布/訂閱”、基于類型的“發(fā)布/訂閱。其中,容易實(shí)現(xiàn)和應(yīng)用的當(dāng)屬基于通道和基于主題的 Pub/Sub 系統(tǒng)。它們相對(duì)設(shè)計(jì)實(shí)施過(guò)程較為簡(jiǎn)單,因此,在很多廠商的消息中間件產(chǎn)品中都集成了這兩類系統(tǒng)。然而基于通道和基于主題的 Pub/Sub 則只具備了非常有限的過(guò)濾機(jī)制,使得很多應(yīng)用中用戶的個(gè)性化訂閱需求無(wú)法得到滿足,例如當(dāng)前被廣泛地應(yīng)用于網(wǎng)站內(nèi)容更新、新聞?lì)l道和 blog 信息訂閱等的 RSS(Really Simple Syndication,RSS)技術(shù),從原理上探究,即是一種基于主題(也可以說(shuō)是基于通道)的Pub/Sub,這是由于用戶可能比較關(guān)心著大量的網(wǎng)站、新聞?lì)l道和blog 中的小部分內(nèi)容,卻不是全部,因此,用戶只能地對(duì)多個(gè) RSS 鏈接進(jìn)行訂閱,才可以獲取他所關(guān)心的內(nèi)容。但是,假如能夠整合所有這些 RSS 的資源,從而建立基于內(nèi)容的訂閱機(jī)制,這對(duì)用戶來(lái)說(shuō),將會(huì)產(chǎn)生很大的方便,而基于內(nèi)容的 Pub/Sub 即是能夠迎合這種需求的最佳選擇。但是,相較而言,基于內(nèi)容的 Pub/Sub 系統(tǒng)在實(shí)現(xiàn)和部署上則要顯得復(fù)雜的多,它要成為一個(gè)能夠完整精確地支持大規(guī)模分布式應(yīng)用系統(tǒng)且具有實(shí)用性的平臺(tái),仍然面臨著許多關(guān)鍵性問(wèn)題的挑戰(zhàn)。例如傳統(tǒng)的基于內(nèi)容的 Pub/Sub 系統(tǒng)只能支持對(duì)單個(gè)簡(jiǎn)單事件進(jìn)行檢測(cè),而對(duì)現(xiàn)實(shí)生產(chǎn)生活中出現(xiàn)的復(fù)雜事件(多個(gè)具有時(shí)空、因果關(guān)系的簡(jiǎn)單事件集合)卻無(wú)法支持。
圖1 基于CEP 發(fā)布訂閱系統(tǒng)概念模型
圖2 仿真部署圖
圖3 用電組用電情況動(dòng)態(tài)監(jiān)控圖
在Pub/Sub 系統(tǒng)中,分布式系統(tǒng)中的各類參與者能夠以發(fā)布/訂閱的方式進(jìn)行交互協(xié)同。通常情況下,信息源的生產(chǎn)者被稱為發(fā)布者,輸出信息的消費(fèi)者則被稱之為訂閱者,而訂閱者和發(fā)布者都被稱為客戶端。另外,在系統(tǒng)中,信息的發(fā)布者和訂閱者之間所交互的信息則被稱之為事件,發(fā)布者將事件發(fā)布給CEP 發(fā)布/訂閱中間件;訂閱者則向CEP 發(fā)布/訂閱中間件發(fā)送一個(gè)訂閱條件,描述對(duì)系統(tǒng)中感興趣事件的特征,當(dāng)然,假如訂閱者不再對(duì)系統(tǒng)中任何事件感興趣,也可以及時(shí)取消訂閱;而CEP發(fā)布/訂閱中間件的主要作用是確保發(fā)布者發(fā)布的事件能夠可靠、及時(shí)地傳送給所有對(duì)之感興趣的訂閱者。
本文為實(shí)現(xiàn)可對(duì)復(fù)雜事件進(jìn)行匹配處理的Pub/Sub系統(tǒng),對(duì)傳統(tǒng)的Pub/Sub 系統(tǒng)進(jìn)行了擴(kuò)展,將CEP 引擎接入訂閱條件匹配模塊,將不同訂閱者的訂閱條件定制為CEP引擎中EPL(Event Processing Language,EPL)語(yǔ)句,繼而利用CEP 技術(shù)對(duì)發(fā)布者發(fā)布的事件流進(jìn)行復(fù)雜事件處理,最終實(shí)現(xiàn)支持高效處理復(fù)雜事件的發(fā)布訂閱中間件。如圖1 所示,路由選擇模塊負(fù)責(zé)選擇適當(dāng)?shù)穆窂剑瑢⒁粋€(gè)事件從發(fā)布者傳送到訂閱者,而訂閱條件匹配模塊則負(fù)責(zé)高效地找到與給定的事件相匹配的所有訂閱條件,并把相應(yīng)的訂閱條件傳送給復(fù)雜事件處理引擎查詢定制模塊,由該模塊將訂閱條件編寫為相應(yīng)的復(fù)雜查詢EPL 語(yǔ)句,進(jìn)而由復(fù)雜事件處理引擎對(duì)發(fā)布的事件進(jìn)行處理,最終將處理結(jié)果發(fā)送給相應(yīng)的訂閱者。
實(shí)驗(yàn)操作平臺(tái)為三臺(tái)內(nèi)存為4G 且安裝 64 位Linux操作系統(tǒng)的PC,其中CEP 引擎由java 編寫的開(kāi)源工具Esper,通過(guò)相關(guān)的java 編碼實(shí)現(xiàn)發(fā)布訂閱機(jī)制,部署在一臺(tái)PC 上,作為基于CEP 發(fā)布訂閱中間件系統(tǒng),而其余兩臺(tái)PC 分別模擬發(fā)布者和訂閱者系統(tǒng),具體仿真部署如圖2。其中發(fā)布者系統(tǒng)所使用數(shù)據(jù)集為2012 年Enernoc 公司采集的美國(guó)國(guó)內(nèi)100 個(gè)匿名工商業(yè)用戶電力負(fù)荷數(shù)據(jù)集。該數(shù)據(jù)集包括自2012 年1 月1 日~2012 年12 月31 日每天288 點(diǎn)的負(fù)荷數(shù)據(jù),該數(shù)據(jù)集具有典型的電力負(fù)荷特征,能夠很好的表現(xiàn)仿真的真實(shí)性能。
實(shí)驗(yàn)對(duì)100 個(gè)匿名工商業(yè)用戶用電情況進(jìn)行了監(jiān)控,同時(shí)利用復(fù)雜事件處理引擎對(duì)動(dòng)態(tài)變化用戶組(用戶利用訂閱發(fā)布模式隨進(jìn)隨出)的用電均值、總值進(jìn)行了計(jì)算,實(shí)現(xiàn)了用戶組的基于復(fù)雜事件訂閱模式的用電情況監(jiān)控,如圖3。
本文提出了一種支持對(duì)“復(fù)合事件”或“事件模式”進(jìn)行訂閱的基于CEP 的訂閱發(fā)布中間件,即當(dāng)各發(fā)布者所發(fā)布的一系列事件所組成的事件序列滿足某一條件時(shí),才通知訂閱者客戶端。這種新型Pub/Sub 系統(tǒng)可以改善傳統(tǒng)的基于內(nèi)容的Pub/Sub 系統(tǒng)性能,并且在實(shí)際應(yīng)用領(lǐng)域有較好的應(yīng)用效果