陽建坤 祖向榮
1.華北電力大學,控制與計算機工程系
針對傳統的基于內容的訂閱發布(Publisher/Subcriber,Pub/Sub)中間件只能對簡單的事件進行檢測的現狀,引入復雜事件處理(Complex Event Processing,CEP)技術,提出一種基于CEP 發布訂閱中間件,并對開源CEP 引擎Esper 進行擴展,實現基于CEP 的事件發布訂閱機制,最后對電力系統中多源事件流進行仿真監控,驗證了該方法的有效性。
隨著信息通信技術的快速發展,軟件系統的主要使用方式、運行方式、生產方式和形態都在發生著巨大的變革,各類軟件系統逐漸形成一種開放協同的應用環境,而軟件的應用形態也開始從面向熟識用戶群體、相對靜態和相對封閉的緊耦合形式向公共可訪問、開放式以及動態協作的松耦合模式轉變,這就要求軟件系統能夠支持對分布式異構系統進行動態松耦合地協同通信,與此同時還要保持較高效的時間性能。
Pub/Sub 技術在控制流、時間和空間三個方面都具備完全的解耦能力,且具有較高的時間性能,能夠很好地迎合這樣的需求。本文在對當前幾種主流的Pub/Sub 系統進行研究的基礎上,針對其只能對簡單事件進行的檢測的現狀,提出一種基于CEP 的Pub/Sub 中間件,增強Pub/Sub 系統的表達能力,支持對“復雜事件”或“事件模式”的訂閱,從而改善系統的可擴展性和性能。最后,對開源CEP 引擎ESPER 進行擴展,實現了該中間件,并進行了仿真實驗。
從訂閱模型的角度來看,當前Pub/Sub 技術主要分為四大類:基于通道的“發布/訂閱”、基于主題的“發布/訂閱”、基于內容的“發布/訂閱”、基于類型的“發布/訂閱。其中,容易實現和應用的當屬基于通道和基于主題的 Pub/Sub 系統。它們相對設計實施過程較為簡單,因此,在很多廠商的消息中間件產品中都集成了這兩類系統。然而基于通道和基于主題的 Pub/Sub 則只具備了非常有限的過濾機制,使得很多應用中用戶的個性化訂閱需求無法得到滿足,例如當前被廣泛地應用于網站內容更新、新聞頻道和 blog 信息訂閱等的 RSS(Really Simple Syndication,RSS)技術,從原理上探究,即是一種基于主題(也可以說是基于通道)的Pub/Sub,這是由于用戶可能比較關心著大量的網站、新聞頻道和blog 中的小部分內容,卻不是全部,因此,用戶只能地對多個 RSS 鏈接進行訂閱,才可以獲取他所關心的內容。但是,假如能夠整合所有這些 RSS 的資源,從而建立基于內容的訂閱機制,這對用戶來說,將會產生很大的方便,而基于內容的 Pub/Sub 即是能夠迎合這種需求的最佳選擇。但是,相較而言,基于內容的 Pub/Sub 系統在實現和部署上則要顯得復雜的多,它要成為一個能夠完整精確地支持大規模分布式應用系統且具有實用性的平臺,仍然面臨著許多關鍵性問題的挑戰。例如傳統的基于內容的 Pub/Sub 系統只能支持對單個簡單事件進行檢測,而對現實生產生活中出現的復雜事件(多個具有時空、因果關系的簡單事件集合)卻無法支持。

圖1 基于CEP 發布訂閱系統概念模型

圖2 仿真部署圖

圖3 用電組用電情況動態監控圖
在Pub/Sub 系統中,分布式系統中的各類參與者能夠以發布/訂閱的方式進行交互協同。通常情況下,信息源的生產者被稱為發布者,輸出信息的消費者則被稱之為訂閱者,而訂閱者和發布者都被稱為客戶端。另外,在系統中,信息的發布者和訂閱者之間所交互的信息則被稱之為事件,發布者將事件發布給CEP 發布/訂閱中間件;訂閱者則向CEP 發布/訂閱中間件發送一個訂閱條件,描述對系統中感興趣事件的特征,當然,假如訂閱者不再對系統中任何事件感興趣,也可以及時取消訂閱;而CEP發布/訂閱中間件的主要作用是確保發布者發布的事件能夠可靠、及時地傳送給所有對之感興趣的訂閱者。
本文為實現可對復雜事件進行匹配處理的Pub/Sub系統,對傳統的Pub/Sub 系統進行了擴展,將CEP 引擎接入訂閱條件匹配模塊,將不同訂閱者的訂閱條件定制為CEP引擎中EPL(Event Processing Language,EPL)語句,繼而利用CEP 技術對發布者發布的事件流進行復雜事件處理,最終實現支持高效處理復雜事件的發布訂閱中間件。如圖1 所示,路由選擇模塊負責選擇適當的路徑,將一個事件從發布者傳送到訂閱者,而訂閱條件匹配模塊則負責高效地找到與給定的事件相匹配的所有訂閱條件,并把相應的訂閱條件傳送給復雜事件處理引擎查詢定制模塊,由該模塊將訂閱條件編寫為相應的復雜查詢EPL 語句,進而由復雜事件處理引擎對發布的事件進行處理,最終將處理結果發送給相應的訂閱者。
實驗操作平臺為三臺內存為4G 且安裝 64 位Linux操作系統的PC,其中CEP 引擎由java 編寫的開源工具Esper,通過相關的java 編碼實現發布訂閱機制,部署在一臺PC 上,作為基于CEP 發布訂閱中間件系統,而其余兩臺PC 分別模擬發布者和訂閱者系統,具體仿真部署如圖2。其中發布者系統所使用數據集為2012 年Enernoc 公司采集的美國國內100 個匿名工商業用戶電力負荷數據集。該數據集包括自2012 年1 月1 日~2012 年12 月31 日每天288 點的負荷數據,該數據集具有典型的電力負荷特征,能夠很好的表現仿真的真實性能。
實驗對100 個匿名工商業用戶用電情況進行了監控,同時利用復雜事件處理引擎對動態變化用戶組(用戶利用訂閱發布模式隨進隨出)的用電均值、總值進行了計算,實現了用戶組的基于復雜事件訂閱模式的用電情況監控,如圖3。
本文提出了一種支持對“復合事件”或“事件模式”進行訂閱的基于CEP 的訂閱發布中間件,即當各發布者所發布的一系列事件所組成的事件序列滿足某一條件時,才通知訂閱者客戶端。這種新型Pub/Sub 系統可以改善傳統的基于內容的Pub/Sub 系統性能,并且在實際應用領域有較好的應用效果