文/NovaTeam團隊
基于復雜事件處理的云決策平臺
文/NovaTeam團隊

在云計算的開發與使用中基于事件序列的狀態檢測具有較高應用價值,能滿足用戶對數據的各種各樣的檢測要求,靈活且易擴展,動態處理數據檢測匹配結果,為他們的決策提供有力的支持。針對此,我們提出開發Cloud Action:基于復雜事件的云決策平臺。
隨著虛擬技術的發展,從網絡計算到網格計算,再至今日的云計算,計算領域呈現出日漸復雜化的趨勢。而在云計算的過程中會產生眾多實時數據,如何從這些紛雜的實時數據中提取出用戶所需的信息,為用戶做出決策提供有力的支持,這是本設計的目標所在。
一個完善的云計算系統應當提供給用戶一個平臺,用于定制用戶關心的事件,并及時通知事件的關心者或及時觸發執行下一步動作。
面對云計算中的眾多實時數據,作為不同的角色,各類用戶有各自不同的需求,他們所關心的事件類型各不相同,我們不可能將所有的事件全部呈現在管理員以及應用開發人員的面前,成百上千的監控項足可以讓任何人頭疼不已。云計算的系統管理員可能更加關心底層硬件的使用狀況,作業的運行狀況,目前可用主機的狀態,Jobslot滿足的約束條件。應用開發人員可能更關注于終端用戶的請求是否被妥善地處理,分發的作業是否得到有效的執行;終端用戶則更加關注自己計算任務成功與否,何時才能完成。
簡單的事件己經不能滿足用戶的需要,用戶更關注于它們組合產生的復雜事件,通過組合使用戶可以探測出所需的信息,從而更好地做出相應的決策,及時地采取行動。
面對上述問題,采用復雜事件處理是很好的解決方法。復雜事件處理(Complex Event Processing,CEP)是近年來逐漸得到重視與應用的一種技術,它將傳統的先存儲靜態數據再進行挖掘與處理的思路,轉變為處理無限的動態事件流,更加符合現實世界的真實數據模式,能夠高效、即時地在數據洪流中過濾出相對少量的具有應用意義的信息。復雜事件處理的核心思想是將查詢條件進行存儲和索引,讓實時事件流經過這些查詢條件,檢測這些事件是否觸發相應的查詢條件。這樣就不需要每當新的事件發生時去計算建立索引,從而大大縮短了事件處理時間。
Spring Source的Hyperic HQ目前已經可以完善支持在單個時間點上基于單個資源以及多個資源的事件定制。但是在針對某一時間段內事件序列的檢測上仍有待完善,而這一部分往往正是云計算應用開發用戶密切關注的:應用開發用戶或許不關心哪臺機器CPU利用率超標了,但是他一定關心他創建的虛擬機是否在正常運轉,他一定關心他目前的虛擬機多少是進行I/O密集型操作以及計算密集型操作的。而上文所提到的“正常運轉”,“I/O密集型操作”,“計算密集型操作”這些狀態明顯都不是幾個瞬時值就可以定義清楚的,而是需要滿足在一個時間范圍內的某些條件或者事件序列,并且,針對同一個事件或者狀態,不用的用戶還可能有不同的理解。
同時,采用復雜事件處理技術進行其他決策也是很具優勢的。例如用其控制作業調度,Cloud Action能夠很好地支持這種應用場景。在作業處理系統中,往往作業相互之間具有時序約束關系,有一些的約束條件甚為復雜,而可以通過定制的調度規則,當檢測到事件流中相應的約束條件都滿足時則觸發下一個調度任務。
同理,其他一些業務流程的控制也可以采用Cloud Action來完成。
如圖1所示,Cloud Action云決策平臺利用Hyperic HQ采集的數據,進行數據分析和挖掘后供故障檢測、監控和系統管理等上層應用程序使用。
Hyperic HQ屏蔽了底層軟、硬件的異構性,并可以將采集的各種系統數據傳送給Cloud Action,從而Cloud Action能夠很方便地進行集成和部署。Cloud Action通過對由系統數據封裝成的事件進行檢測或處理,發現其中用戶關心的有意義的事件,傳遞給上層應用程序。Cloud Action采用了諸如結合許多事件的復雜模式檢測等技術,并通過事件層次結構、事件之間的關系使用規則處理算法進行事件關聯和抽象。事件之間的關系包括因果關系、成員關系和時間序列關系等。這些事件關系以及時間窗口限制被用于確定哪些事件具有意義。
Cloud Action的系統結構如圖2所示。
Hyperic HQ Adapter模塊主要負責調用Hyperic HQ的API,獲取HQ的監控數據,將數據按照不同的時間與數據項,封裝成不同類型的事件,發送給事件流引擎。UserPortal模塊負責提供給應用程序定制事件查詢規則。CEP Grammar Adapter模塊將用戶制定的規則轉換為事件描述語言(EQL)描述的查詢規則給CEP Engine。CEP Engine是Cloud Action的核心,它接收用戶定制的規則和Hyperic HQ采集的事件,獲取滿足規則的事件返回給UserPortal模塊。
而針對于底層的硬件資源監控模塊,為了適應于大規模場景,同時提供三個級別的數據信息:虛擬主機(VirtualHost)、虛擬主機集群(VirtualCluster)、虛擬主機結點(Node)。結點下可以區分多個集群,而虛擬主機集群可以將多個虛擬主機結合在一起進行管理,使得層次結構更為清晰。同時最后可以通過分析不同層次的數據,更好地進行管理。而且可以在上面配置更高層的整體的分析。

圖 1 Cloud Action云決策平臺

圖 2 Cloud Action系統結構