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