新四季網

基於雲計算架構實現複雜事件處理的系統及其方法

2023-07-12 09:16:56

專利名稱:基於雲計算架構實現複雜事件處理的系統及其方法
技術領域:
本發明涉及計算機軟體領域,特別涉及企業級高實時事件流分析系統領域,具體是指ー種基於雲計算架構實現複雜事件處理的系統及其方法。
背景技術:
複雜事件處理(Comp I ex Event Processing, CEP)技術是一種新興的實時數據分析處理技術。傳統數據挖掘技術是對海量數據進行事後處理,其特點是數據量龐大、分析邏輯複雜;傳統的資料庫分析技術是對一定規模的數據進行統計分析,其特點是數據量規模適中,分析邏輯較為簡単。而複雜事件處理技術可以針對高速數據流進行實時的分析,具有 數據量大,實時性高的特點。複雜事件處理技術可以被應用於實時風險管理、實時產品營銷等業務領域。一般地,複雜事件處理系統包括規則開發工具、事件輸入流適配器、事件輸出流適配器、事件處理引擎、關係型資料庫等主要功能模塊。目前複雜事件處理主要包含以下幾個核心功能模塊事件處理規則開發工具、事件處理引擎、外部資料庫、數據接入接出適配器。複雜事件處理的技術實現主要存在兩種模式,一種是傳統的資料庫或中間件廠商以關係型資料庫為核心,對資料庫核心進行改造和優化。另ー種是基於JVM (Java Virtual Machine)進程的複雜事件處理技術,即在ー個進程空間內完成事件的接收、事件的處理、事件的輸出。以關係型資料庫為核心的複雜事件處理技木,需要在上層封裝所需要的數據接入適配、數據接出適配,其處理過程的本質還是將數據導入到資料庫進行類SQL (StructuredQuery Language)的數據查詢。以JVM進程為基礎的複雜事件處理技術,除了同樣要進行接入、接出數據適配外,需要對事件處理語言EPL (Event Processing Language)進行釋義,再對數據流進行業務分析,其特點是處理過程中的業務數據大部分都保存在內存中。目前CEP引擎的開源實現以EsperTech公司的Esper處理引擎應用較為廣泛。採用關係型資料庫為核心的複雜事件處理技木,由於資料庫架構的制約,當高實時數據量到達一定規模後,一方面容易產生資料庫I/o的瓶頸,另一方面類SQL語言在大數據量的場景中性能優化較為複雜,適應多變的業務需求成本較高。採用JVM進程為核心的複雜事件處理技木,因為處理過程中相關的業務數據都在內存中,所以I/o操作影響較小,但由於每個進程可分配的內存空間有限,當發生大數據流時,容易造成JVM的內存耗盡,進ー步會導致業務的停滯。因此,JVM進程為核心的複雜事件處理技術其性能瓶頸是內存容量。同時需要注意的是,以內存計算為核心的複雜事件處理技術,不具備業務數據的持久化操作,在各種原因發生故障導致進程異常退出時,內存中的數據將發生丟失,這將直接導致上層業務功能的不可用。

發明內容
本發明的目的是克服了上述現有技術中的缺點,提供ー種能夠滿足大數據流、高並發、高實時性數據分析要求、保持業務連續性、實現對系統處理節點的動態調整、工作性能穩定可靠、適用範圍較為廣泛的基於雲計算架構實現複雜事件處理的系統及其方法。為了實現上述的目的,本發明的基於雲計算架構實現複雜事件處理的系統及其方法如下該基於雲計算架構實現複雜事件處理的系統,其主要特點是,所述的系統包括事件分發節點,將高速到達的事件流分發到不同的事件處理節點中,並接收節點管理器的通知消息;多個事件處理節點,包含已有的通用事件處理引擎,接收來自所述的事件分發節點的事件,同時將處理後的新事件傳遞給事件去重節點,事件處理過程由所述的已有的通用事件處理引擎完成;事件處理節點組,包含至少二個所述的事件處理節點,且組內的每個事件處理節點完成相同的複雜事件處理業務邏輯; 事件去重節點,對新事件進行整理,去除重複事件所產生的輸出事件;節點管理器,對所述的事件處理節點進行控制,並通知所述的事件分發節點事件處理相應的通知消息。該基於雲計算架構實現複雜事件處理的系統中的通知消息為事件處理節點的新增或者事件處理節點的退出。該利用上述的系統實現基於雲計算架構進行複雜事件處理的方法,其主要特點是,所述的方法包括複雜事件處理操作和複雜事件處理故障恢復操作,所述的複雜事件處理操作包括以下步驟(I)所述的事件分發節點進行初始化操作;(2)所述的事件分發節點對輸入事件進行分發操作;(3)所述的事件處理節點對接收到的事件進行匹配和處理操作;(4)所述的事件去重節點接收各個所述的事件處理節點輸出的事件;(5)所述的事件去重節點進行事件去重操作;(6)所述的事件去重節點將產生的事件發送至外部系統,由外部系統進行後續業務處理;所述的複雜事件處理故障恢復操作,包括以下步驟(a)所述的節點管理器將發生故障的事件處理節點的標識發送到所述的事件分發節點;(b)所述的事件分發節點根據該事件處理節點的標識找到相應的事件處理節點組;(C)所述的事件分發節點將發生故障的事件處理節點移出該事件處理節點組,即將發生故障的事件處理節點的標識從與其對應的事件處理節點組的標識映射關係中刪除;(d)隨機選擇發生故障的事件處理節點所對應的事件處理節點組中的一個正常工作的事件處理節點作為被複製節點;(e)調用所述的被複製節點的對外接口,暫停其業務處理工作;(f)調用所述的被複製節點的對外接口,讀取該被複製節點的業務狀態上下文數據C;
(g)調用所述的被複製節點的對外接ロ,讀取該被複製節點當前已經接收的最後ー個事件序號N ;(h)調用所述的被複製節點的對外接ロ,恢復該被複製節點的業務處理工作;(i)以啟動進程的方式,創建新的事件處理節點;( j )所述的新的事件處理節點進行初始化,設置相應的節點標識;(k)所述的節點管理器將所述的業務狀態上下文數據C寫入所創建的該新的事件處理節點中;(I)所述的節點管理器將記錄的當前已經處理的最後ー個事件序列號N寫入所創建的該新的事件處理節點中;
(m)所述的節點管理器同時將新的事件處理節點標識、URL發送給所述的事件分發節點進行註冊;(η)所述的事件分發節點將所述的新的事件處理標識加入到相應的事件處理節點組中,並更新事件處理節點組標識與事件處理節點標識的映射關係;(O)所述的節點管理器將事件序列號N、新的事件處理節點標識發送至所述的事件分發節點,通知該事件分發節點發送後續事件;(P)所述的事件分發節點向所創建的所述的新的事件處理節點發送序號為N的事件以及後續的事件;(q)所創建的所述的新的事件分發節點對序列號N的及以後的事件進行正常處理。該實現基於雲計算架構進行複雜事件處理的方法中的事件分發節點的初始化操作,包括以下步驟;( 11)加載事件類型,為每個事件實例找到唯一的事件類型;(12)加載EPL列表,所述的EPL列表中的每條記錄均包含EPL唯一標識和EPL語句;( 13)加載事件處理節點組列表,ー個事件處理組標識將對應多個事件處理節點URL,所述的事件處理節點組列表中的每條記錄均包含事件處理節點組標識和事件處理節點 URL ;(14)以事件類型和EPL列表為基礎生成事件類型與EPL關係映射表,其中ー個事件類型對應到多個EPL語句,同時,ー個EPL語句中包含多個事件類型,該事件類型與EPL關係映射表中的每條記錄均包含事件類型和EPL唯一標識;(15)以EPL列表和事件處理節點組為列表生成EPL與事件處理節點組映射關係表,每個EPL語句都唯一對應ー個事件處理節點組標識,該EPL與事件處理節點組映射關係表中的每條記錄均包含EPL唯一標識和事件處理節點組標識;(16)根據事件類型與EPL關係映射表和EPL與事件處理節點組映射關係表生成事件類型與事件處理節組映射表,該事件類型與事件處理節組映射表中的每條記錄均包含事件類型和事件處理節點組標識;(17)為每個事件處理節點組初始化事件序號值為O。該實現基於雲計算架構進行複雜事件處理的方法中的事件分發節點對輸入事件進行分發操作,包括以下步驟;
(21)所述的事件分發節點收到來自於系統外部的新事件;(22)根據輸入的新事件判斷事件所屬的事件類型;(23)根據事件類型,在事件類型與處理節點組映射關係表中找對應的事件處理節點組標識;(24)獲得目標事件處理節點組中的事件序號值N ;(25)將事件序號標記為N;(26)將目標事件處理節點組中的事件序號值變更為N + I ;(27 )根據事件處理節點標識在事件處理節點組列表中查找全部的事件處理節點URL列表;
(28)對內存中的事件進行序列化編碼,得到編碼後可在網絡上進行傳輸的報文;(29)對節點處理URL列表中的每個URL進行遍歷,將事件報文依次發送到目標URL。該實現基於雲計算架構進行複雜事件處理的方法中的事件處理節點對收到的事件進行匹配和處理,包括以下步驟(31)所述的事件處理節點對最後接收到的事件序號X進行初始化;(32)從網絡中接收到事件報文;(33)對事件報文進行反序列化解碼,得到事件的內存對象;(34)從事件對象中提取事件序號y ;(35)將事件序號y與最後接收事件序號x進行比較,如果y < x,則表明已經接收過該事件,並對事件進行拋棄處理後返回步驟(4);否則,繼續執行步驟(36);(36)根據事件類型,判斷本節點的EPL是否包含該事件類型,如果不包含,則拋棄該事件,並結束;否則,接納該事件;(37)將最後接收事件序列號X的值更新為X + I ;(38)調用已有複雜事件處理引擎接口,由其執行後續複雜事件處理業務步驟。該實現基於雲計算架構進行複雜事件處理的方法中的事件去重節點的事件去重操作,包括以下步驟(41)所述的事件去重節點進行初始化,加載事件處理節點組與事件處理節點映射關係;(42)從網絡中接收到事件報文,並對報文進行反序列化解碼,得到事件對象E ;(43)記錄來源事件處理節點標識pn ;(44)計算事件E的摘要值ed ;(45)記錄來源事件處理節點標識pn、事件摘要值ed 二元組;(46)根據來源事件處理節點標識pn查找對應的事件處理節點組png ;(47)在對應的事件處理節點組png中,通過步驟(48)遍歷除事件處理節點pn以外的每個事件處理節點pn』 ;(48)查找是否存在事件處理節點pn』、事件摘要值ed 二元組,若存在,則拋棄該事件,步驟執行結束;否則繼續執行步驟(49);(49)將該事件作為輸出事件,進行序列化編碼,得到編碼後可在網絡上進行傳輸的報文。
採用了該發明的基於雲計算架構實現複雜事件處理的系統及其方法,由於其中能夠根據事件處理節點的實際運行負載,並對系統規模進行水平擴展和伸縮,使得整個系統可以承載高並發、大量的事件數據,同時,本發明的系統中設置了事件分發節點,在新事件到達時可以被自動分配至合適ー個事件處理組內的多個事件處理節點;並加入了事件去重節點,以保證多個事件處理節點所產生的重複相同事件被去除,從而保證了輸出事件的唯一性;另外,所設置的節點管理器可以對系統中的事件處理節點規模進行動態調整,在某個事件處理節點發生故障時,可以從其對應的事件處理節點組中隨機選擇ー個正常節點進行複製,以保證整個事件處理節點組的高可用性,從而保證了上層業務的連續性,大大提高了複雜事件處理系統的整體可靠性,滿足了大數據流、高並發、高實時性數據分析要求,在系統運行過程中保持業務連續性的條件下,完成對系統處理節點的動態調整,工作性能穩定可靠,適用範圍廣泛。


圖I為本發明的基於雲計算架構實現複雜事件處理的系統的整體架構示意圖。
圖2為本發明的基於雲計算架構實現複雜事件處理的方法中的事件分發節點初始化流程示意圖。圖3為本發明的基於雲計算架構實現複雜事件處理的方法中的事件分發流程示意圖。圖4為本發明的基於雲計算架構實現複雜事件處理的方法中的事件處理節點的事件序號匹配流程圖。圖5為本發明的基於雲計算架構實現複雜事件處理方法中的事件去重流程示意圖。圖6為本發明的基於雲計算架構實現複雜事件處理方法中的事件處理節點狀態同步流程示意圖。
具體實施例方式為了能夠更清楚地理解本發明的技術內容,特舉以下實施例詳細說明。請參閱圖I所示,該基於雲計算架構實現複雜事件處理的系統,其主要特點是,所述的系統包括(I)事件分發節點,將高速到達的事件流分發到不同的事件處理節點中,並接收節點管理器的通知消息;該通知消息為事件處理節點的新增或者事件處理節點的退出;(2)多個事件處理節點,包含已有的通用事件處理引擎,接收來自所述的事件分發節點的事件,同時將處理後的新事件傳遞給事件去重節點,事件處理過程由所述的已有的通用事件處理引擎完成;(3)事件處理節點組,包含至少ニ個所述的事件處理節點,且組內的每個事件處理節點完成相同的複雜事件處理業務邏輯;(4)事件去重節點,對新事件進行整理,去除重複事件所產生的輸出事件;(5)節點管理器,對所述的事件處理節點進行控制,並通知所述的事件分發節點事件處理相應的通知消息。
再請參閱圖2至圖6所示,該利用上述的系統實現基於雲計算架構進行複雜事件處理的方法,其中包括複雜事件處理操作和複雜事件處理故障恢復操作,所述的複雜事件處理操作包括以下步驟(I)所述的事件分發節點進行初始化操作,包括以下步驟;( 11)加載事件類型,為每個事件實例找到唯一的事件類型;(12)加載EPL列表,所述的EPL列表中的每條記錄均包含EPL唯一標識和EPL語句;( 13)加載事件處理節點組列表,一個事件處理組標識將對應多個事件處理節點URL,所述的事件處理節點組列表中的每條記錄均包含事件處理節點組標識和事件處理節點 URL ;(14)以事件類型和EPL列表為基礎生成事件類型與EPL關係映射表,其中一個事 件類型對應到多個EPL語句,同時,一個EPL語句中包含多個事件類型,該事件類型與EPL關係映射表中的每條記錄均包含事件類型和EPL唯一標識;(15)以EPL列表和事件處理節點組為列表生成EPL與事件處理節點組映射關係表,每個EPL語句都唯一對應一個事件處理節點組標識,該EPL與事件處理節點組映射關係表中的每條記錄均包含EPL唯一標識和事件處理節點組標識;(16)根據事件類型與EPL關係映射表和EPL與事件處理節點組映射關係表生成事件類型與事件處理節組映射表,該事件類型與事件處理節組映射表中的每條記錄均包含事件類型和事件處理節點組標識;(17)為每個事件處理節點組初始化事件序號值為O ;(2)所述的事件分發節點對輸入事件進行分發操作,包括以下步驟;(21)所述的事件分發節點收到來自於系統外部的新事件;(22)根據輸入的新事件判斷事件所屬的事件類型;(23)根據事件類型,在事件類型與處理節點組映射關係表中找對應的事件處理節點組標識;(24)獲得目標事件處理節點組中的事件序號值N ;(25)將事件序號標記為N;(26)將目標事件處理節點組中的事件序號值變更為N + I ;(27)根據事件處理節點標識在事件處理節點組列表中查找全部的事件處理節點URL列表;(28)對內存中的事件進行序列化編碼,得到編碼後可在網絡上進行傳輸的報文;(29)對節點處理URL列表中的每個URL進行遍歷,將事件報文依次發送到目標URL ;(3)所述的事件處理節點對接收到的事件進行匹配和處理操作,包括以下步驟(31)所述的事件處理節點對最後接收到的事件序號X進行初始化;(32)從網絡中接收到事件報文;(33)對事件報文進行反序列化解碼,得到事件的內存對象;(34)從事件對象中提取事件序號y ;(35)將事件序號y與最後接收事件序號x進行比較,如果y < x,則表明已經接收過該事件,並對事件進行拋棄處理後返回步驟(4);否則,繼續執行步驟(36);(36)根據事件類型,判斷本節點的EPL是否包含該事件類型,如果不包含,則拋棄該事件,並結束;否則,接納該事件;(37)將最後接收事件序列號X的值更新為X + I ;(38)調用已有複雜事件處理引擎接ロ,由其執行後續複雜事件處理業務步驟;(4)所述的事件去重節點接收各個所述的事件處理節點輸出的事件;(5)所述的事件去重節點進行事件去重操作,包括以下步驟( 51)所述的事件去重節點進行初始化,加載事件處理節點組與事件處理節點映射 關係;(52)從網絡中接收到事件報文,並對報文進行反序列化解碼,得到事件對象E ;(53)記錄來源事件處理節點標識pn ;(54)計算事件E的摘要值ed ;(55)記錄來源事件處理節點標識pn、事件摘要值ed ニ元組;(56)根據來源事件處理節點標識pn查找對應的事件處理節點組png ;(57)在對應的事件處理節點組png中,通過步驟(48)遍歷除事件處理節點pn以外的每個事件處理節點pn』 ;(58)查找是否存在事件處理節點pn』、事件摘要值ed ニ元組,若存在,則拋棄該事件,步驟執行結束;否則繼續執行步驟(59);(59)將該事件作為輸出事件,進行序列化編碼,得到編碼後可在網絡上進行傳輸的報文;(6)所述的事件去重節點將產生的事件發送至外部系統,由外部系統進行後續業務處理;所述的複雜事件處理故障恢復操作,包括以下步驟(a)所述的節點管理器將發生故障的事件處理節點的標識發送到所述的事件分發節點;(b)所述的事件分發節點根據該事件處理節點的標識找到相應的事件處理節點組;(C)所述的事件分發節點將發生故障的事件處理節點移出該事件處理節點組,即將發生故障的事件處理節點的標識從與其對應的事件處理節點組的標識映射關係中刪除;(d)隨機選擇發生故障的事件處理節點所對應的事件處理節點組中的ー個正常エ作的事件處理節點作為被複製節點;(e)調用所述的被複製節點的對外接ロ,暫停其業務處理工作;(f)調用所述的被複製節點的對外接ロ,讀取該被複製節點的業務狀態上下文數據C ;(g)調用所述的被複製節點的對外接ロ,讀取該被複製節點當前已經接收的最後ー個事件序號N ;(h)調用所述的被複製節點的對外接ロ,恢復該被複製節點的業務處理工作;(i)以啟動進程的方式,創建新的事件處理節點;(j)所述的新的事件處理節點進行初始化,設置相應的節點標識;
(k)所述的節點管理器將所述的業務狀態上下文數據C寫入所創建的該新的事件處理節點中;(I)所述的節點管理器將記錄的當前已經處理的最後一個事件序列號N寫入所創建的該新的事件處理節點中;(m)所述的節點管理器同時將新的事件處理節點標識、URL發送給所述的事件分發節點進行註冊;(η)所述的事件分發節點將所述的新的事件處理標識加入到相應的事件處理節點組中,並更新事件處理節點組標識與事件處理節點標識的映射關係;(O)所述的節點管理器將事件序列號N、新的事件處理節點標識發送至所述的事件分發節點,通知該事件分發節點發送後續事件;(P)所述的事件分發節點向所創建的所述的新的事件處理節點發送序號為N的事 件以及後續的事件;(q)所創建的所述的新的事件分發節點對序列號N的及以後的事件進行正常處理。在實際使用當中,請參閱圖I所示,該實現複雜事件處理的系統包括事件分發節點、事件處理節點、事件去重節點、節點管理器。事件分發節點第一,可以將高速到達的事件流分發到不同的處理節點中;第二,可以接收節點管理器的通知消息(事件處理節點的新增和退出)。事件處理節點主要包含已有的通用事件處理引擎(如Esper),節點可以接收來自事件分發節點的事件,同時將處理後的新事件傳遞給事件去重節點,事件處理過程由已有的通用事件處理引擎完成。事件處理節點組包含多個事件處理節點,同時組內的每個事件處理節點可以完成相同的複雜事件處理業務邏輯。該系統中存在多個事件處理節點組。事件去重節點對新事件進行整理,去除重複事件產生輸出事件。節點管理器第一,具備對事件處理節點的控制能力,如停止、啟動;第三,可以通知事件分發節點事件處理節點的增加和退出。該基於上述的系統實現複雜事件處理在雲計算環境中實現的方法,包括複雜事件處理系統的處理操作和複雜事件處理系統的故障恢復操作,複雜事件處理系統的處理操作包括如下步驟(I)事件分發節點的初始化操作;(2)事件分發節點對輸入事件進行分發操作;(3)事件處理節點對接收到的事件進行匹配和處理操作;(4)事件去重節點接收多個事件處理節點輸出的事件;(5)事件去重節點的事件去重操作;(6)事件去重節點將產生的事件發送至其他外部系統,由其他系統進行業務處理。所述的複雜事件處理系統的故障恢復操作包括如下步驟(501)節點管理器將發生故障的事件處理節點標識發送到事件分發節點;(502)事件分發節點根據事件處理節點標識找到事件處理組;(503)事件分發節點將故障節點移出事件處理節點組,即將發生故障的事件處理節點標識從與其對應的事件處理節點組標識映射關係中刪除;(504)隨機選擇發生故障的事件處理節點組中的ー個正常工作的事件處理節點作為被複製節點;(505)調用被複製節點的對外接ロ,暫停其業務處理工作;(506)調用被複製節點的對外接ロ,讀取被複製節點的業務狀態上下文數據(記為c);(507)調用被複製節點的對外接ロ,讀取被複製節點當前已經接收的最後ー個事件序號N ;(508)調用被複製節點的對外接ロ,恢復被複製節點的業務處理工作;(509)以啟動進程的方式,創建新的事件處理節點; (510)新的事件處理節點進行初始化,設置節點標識;(511)節點管理器將中業務狀態c上下文數據寫入新創建的事件處理節點中;(512)節點管理器將記錄的當前已經處理的最後ー個事件序列號η寫入新創建的事件處理節點中;(513)節點管理器同時將新的事件處理節點標識、URL發送給事件分發節點進行注
ΠΠ
冊;(514)事件分發節點將新的事件處理標識加入到事件處理組中,並更新事件處理節點組標識與事件處理節點標識的映射關係;(515)節點管理器將事件序列號η、新的事件處理節點標識發送至事件分發節點,通知其發送後續事件;(516)事件分發節點向新創建節點發送序號為η以及後續的事件;(517)新創建的事件分發節點對序列號η及以後的事件進行正常處理。由於暫停以恢復被複製事件處理節點、建立的新事件處理節點的過程中,都會產生時間消耗。在此過程中這兩個節點所產生的事件將落後於相同事件處理節點組內的其他正常節點,這部分事件可以在通過事件去重節點進行過濾。請參閱圖2所示,所述的事件分發節點的初始化操作,操作包括以下步驟;(11)加載事件類型,即能夠為每個事件實例找到唯一的事件類型;(12)加載EPL列表,列表中的每條記錄都包含· EPL P隹一標識.EPL 語句( 13)加載事件處理節點組列表,ー個事件處理組標識將對應多個事件處理節點URL,列表中的每條記錄包含·事件處理節點組標識 事件處理節點URL(14)以事件類型和EPL列表為基礎生成事件類型與EPL關係映射表。一方面,一個事件類型對應到多個EPL語句;另一方面,ー個EPL語句中包含多個事件類型。列表中的每條記錄包含·事件類型· EPL P隹一標識
(15)以EPL列表和事件處理節點組為列表生成EPL與事件處理節點組映射關係表,每個EPL語句都唯一對應一個事件處理節點組標識,每條記錄包含· EPL 唯一標識·事件處理節點組標識(16)根據事件類型與EPL關係映射表和EPL與事件處理節點組映射關係表生成事件類型與事件處理節組映射表,每條記錄包含·事件類型·事件處理節點組標識(17)為每個事件處理節點組初始化事件序號值為O。
在事件分發節點初始化後,可以根據事件實例獲得事件類型,進而可以查找到事件處理節點組標識。請參閱圖3所示,所述的事件分發節點對輸入事件進行分發操作包含以下步驟(21)事件分發節點收到來自於系統外部的新事件;(22)根據輸入的新事件判斷事件所屬的事件類型;(23)根據事件類型,在事件類型與處理節點組映射關係表中找對應的事件處理節點組標識;(24)獲得目標事件處理節點組中的事件序號值η ;(25)將事件序號標記為η ;(26)將目標事件處理節點組中的事件序號值變更為η+1 ;(27 )根據事件處理節點標識在事件處理節點組列表中查找全部的事件處理節點URL列表;(28)對內存中的事件進行序列化編碼,得到編碼後可在網絡上進行傳輸的報文;(29)對節點處理URL列表中的每個URL進行遍歷,將事件報文依次發送到目標URL。請參閱圖4所示,所述的事件處理節點對收到的事件進行匹配和處理,該過程包含以下步驟(31)事件處理節點對最後接收到的事件序號X進行初始化;(32)從網絡中接收到事件報文;(33)對事件報文進行反序列化解碼,得到事件的內存對象;(34)從事件對象中提取事件序號y ;(35)將事件序號y與最後接收事件序號X進行比較,如果y〈X則表明已經接收過該事件,對事件進行拋棄處理,並退出本過程;否則,繼續執行;(36)根據事件類型,判斷本節點的EPL是否包含該事件類型,如果不包含,則拋棄該事件,結束本流程;否則,接納該事件;(37)將最後接收事件序列號X的值更新為x+1 ;(38)調用已有複雜事件處理引擎接口,由其執行後續複雜事件處理業務步驟。請參閱圖5所示,所述的事件去重節點的事件去重操作包括以下步驟(41)事件去重節點進行初始化,加載事件處理節點組與事件處理節點映射關係;(42)從網絡中接收到事件報文,並對報文進行反序列化解碼,得到事件對象(記為E);(43)記錄來源事件處理節點標識(記為pn);(44)計算事件E的摘要值(記為ed);(45)記錄來源事件處理節點標識(pn)、事件摘要值(ed) ニ元組;(46)根據來源事件處理節點標識(pn)查找對應的事件處理節點組(記為png);(47)在對應的事件處理節點組(png)中,通過步驟(48)遍歷除事件處理節點(pn)以外的每個事件處理節點(記為pn』 );(48)查找是否存在事件處理節點(pn』)、事件摘要值(ed) ニ元組,若存在(表明已 經接收過該事件),則拋棄該事件,步驟執行結束;否則繼續執行;(49)將該事件作為輸出事件,進行序列化編碼,得到編碼後可在網絡上進行傳輸的報文。所述的事件分發節點進行初始化操作,其中I.事件類型以java語言為例事件類型即每個java對象的類。在java語言中,獲得事件所屬的事件類型可以用object. getClassO. getName 方法獲得,其值例如com. example, event. TypeA2. EPL 列表EPL 卩隹一標識可以通過生成(Universally Unique Identif ier, UUID進行標識)。EPL語句例如select*from stream a。其中是a事件類型,stream則代表事件流,類似於SQL語句中的表(Table)。3.事件處理節點組列表事件節點處理組標識可以通過生成(Universally Unique Identifier, UUID進行標識)。事件處理節點URL 即一般意義上的URL地址。所述的事件分發過程,其中;I.根據事件判斷事件所屬的事件類型在java語言中可以使用相關方法獲得類名稱作為事件類型,例如String type=event. getClass O · getName O。2.根據事件類型在事件類型與處理節點組映射關係表中找對應的事件處理節點組標識在java語言中可以用HashMap實現映射關係表,記為eventType2NodeGroupMap,ηodeGroupId=eventType2NodeGroupMap. get(type)。3.獲得目標事件處理節點組中的事件序號值n :依次執行nodeGroup=nodes.getNodeByld(nodeGroupId) ;sequence=nodeGroup. getSequence。4.將事件序號標記為η :在java語言中,可以調用event的相關方法,例如event, setbeqnece (sequence)。5.將目標事件處理節點組中的事件序號值增加在java語言中,可以調用事件處理卡;曰、組(nodeGroup)的相關刀法noaeGroup. increaseSequence O ;6.根據事件處理節點標識在事件處理節點組列表中查找全部的事件處理節點URL 列表urls=nodeGroup. getNodeUrls O。7.對內存中的事件進行序列化編碼使用java內置的序列化方法,再進行Base64編碼。所述的事件處理節點對收到的事件進行匹配和處理,其中I.事件處理節點對最後接收到的事件序號X進行初始化即對變量進行複製X=IastSequence, IastSequence值可以存儲與數據或者本地文件中在初始化時讀取數據;2.對事件報文進行反序列化解碼,得到事件的內存對象先進行Base64解碼,再使用java內置的反序列化方法,得到內存對象;3.從事件對象中提取事件序號y :y=node. getSequence O ;4.將事件序號I與最後接收事件序號X進行比較,如果y〈x則表明已經接收過該事件,對事件進行拋棄處理,並退出本過程;否則,繼續執行;5.根據事件類型,判斷本節點的EPL是否包含該事件類型,如果不包含,則拋棄該事件,結束本流程;否則,接納該事件;6.將最後接收事件序列號X的值更新為x+1 :即執行X++ ;7.調用已有複雜事件處理引擎接口,由其執行後續複雜事件處理業務步驟以Esper作為事件處理引擎為例,即調用Esper的發送事件接口。所述的事件去重節點,其中I.進行初始化,加載事件處理節點組與事件處理節點映射關係以HashMap存儲,此處記為 node2nodeGroupMap ;2.記錄來源事件處理節點標識(記為pn) :pn=event. getSourceNodeldO ;3.計算事件 event 的摘要值(記為 ed) :ed=even. hashCode O ;
4.記錄來源事件處理節點標識(pn)、事件摘要值(ed) 二元組定義一個java類NodeDigest,其中包含兩個私有屬性pn、ed,並可以通過類的構造方法設置對應值,同時NodeDigest還提供equals (NodeDigest another)方法與另外的一個對象實例進行比較;NodeDigest nd=new NodeDigest(pn, ed)5.將二元組進行存儲,存儲介質可以是關係型資料庫(記為storage):即storage, push (nd);6.根據來源事件處理節點標識(PN)查找對應的事件處理節點組(記為PNG)nodeGroup=node2nodeGroup. get (PN);7.在對應的事件處理節點組(PNG)中,查找是否存在事件處理節點(PN』)、事件摘要值(ED) 二元組即對每一組pn』、ed在storage中查找是否存在booleanexist=storage. find (new NodeDigest (pn,,ed));如果 exist 值為真,則拋棄該事件;否則向系統外輸出該事件。所述的複雜事件處理在雲計算環境中的實現方法具備對事件處理節點組內的某個處理節點進行複製的能力,其中I.判斷某個事件處理節點是否出現故障的方法,可以是通過腳本定時判斷該節點對應的線程是否存在(例如在Linux或者Unix系統中執行ps_ef );也可以通過腳本定時判斷該節點所監聽的埠是否存在(例如在Linux或者Unix系統中執行netstat_an)。2.事件處理節點應當區分不同的線程類型,將進行複雜事件處理業務的線程定義為業務線程;將可以對業務線程執行過程進行管理的線程定義為管理線程。3.事件處理節點中的管理線程,在對業務線程進行暫停執行操作時,可以使用Thread類中的waitFor O方法;在對業務線程進行恢復執行操作時,可以使用Thread類中的notify O方法。4.事件處理節點中的業務線程所使用的業務狀態上下文數據以及當前已經接收的最後ー個事件序列號N可以以ー個或者ー組java類實例的方式在內存中存儲。某個事件處理節點成為被複製節點後,用管理線程對業務線程進行暫停操作,可以通過對象序列化的方式將上述數據轉換成靜態數據(ConteXt,byte[]形式),由對外接ロ提供這部分數據的讀取能力。5.對被複製節點進行業務狀態讀取的過程中,首先,由管理線程暫停業務線程,使其業務狀態靜態化;其次,通過對外接ロ讀取業務狀態數據;最後,由管理線程恢復業務線程的業務執行。6.在複製過程中,新創建的事件處理節點在創建後,可以通過接ロ調用方式,向其寫入業務狀態上下文數據以及事件序列號N的靜態數據Context。 7.在新創建的事件處理節點收到Context後,可以通對象的反序列化方式將byte[]形式轉換成內存對象,即恢復出使用的業務狀態上下文數據以及當前已經接收的最後ー個事件序列號N所對應的ー個或者ー組java類實例。8.當新創建的事件處理節點完成業務狀態恢復後,由管理線程啟動業務線程,使其進行正常的業務處理。為了保持平臺所提供的業務處理能力的連續性,每個事件處理節點組中至少存在3個事件處理節點,並且組中的每個處理節點完成相同的業務處理邏輯。當組內的某個事件處理節點NI發生故障時,可以通過以下步驟完成被複製節點的選擇,以java語言為例I.以List類型存儲事件處理節點組(nodeGroup)的各事件處理節點的信息,其中故障節點的信息已經被移除。2.獲得事件處理節點組的大小size=nodeGroup. size O。3.生成隨機數 index=new Ramdon O · nextlnt (size-1)。4.獲得被複製節點的信息node=nodeGroup. get (index)。採用了上述的基於雲計算架構實現複雜事件處理的系統及其方法,由於其中能夠根據事件處理節點的實際運行負載,並對系統規模進行水平擴展和伸縮,使得整個系統可以承載高並發、大量的事件數據,同時,本發明的系統中設置了事件分發節點,在新事件到達時可以被自動分配至合適ー個事件處理組內的多個事件處理節點;並加入了事件去重節點,以保證多個事件處理節點所產生的重複相同事件被去除,從而保證了輸出事件的唯一性;另外,所設置的節點管理器可以對系統中的事件處理節點規模進行動態調整,在某個事件處理節點發生故障時,可以從其對應的事件處理節點組中隨機選擇ー個正常節點進行複製,以保證整個事件處理節點組的高可用性,從而保證了上層業務的連續性,大大提高了複雜事件處理系統的整體可靠性,滿足了大數據流、高並發、高實時性數據分析要求,在系統運行過程中保持業務連續性的條件下,完成對系統處理節點的動態調整,工作性能穩定可靠,適用範圍廣泛。在此說明書中,本發明已參照其特定的實施例作了描述。但是,很顯然仍可以作出各種修改和變換而不背離本發明的精神和範圍。因此,說明書和附圖應被認為是說明性的而非限制性的。
權利要求
1.一種基於雲計算架構實現複雜事件處理的系統,其特徵在於,所述的系統包括 事件分發節點,將高速到達的事件流分發到不同的事件處理節點中,並接收節點管理器的通知消息; 多個事件處理節點,包含已有的通用事件處理引擎,接收來自所述的事件分發節點的事件,同時將處理後的新事件傳遞給事件去重節點,事件處理過程由所述的已有的通用事件處理引擎完成; 事件處理節點組,包含至少二個所述的事件處理節點,且組內的每個事件處理節點完成相同的複雜事件處理業務邏輯; 事件去重節點,對新事件進行整理,去除重複事件所產生的輸出事件; 節點管理器,對所述的事件處理節點進行控制,並通知所述的事件分發節點事件處理相應的通知消息。
2.根據權利要求I所述的基於雲計算架構實現複雜事件處理的系統,其特徵在於,所述的通知消息為事件處理節點的新增或者事件處理節點的退出。
3.一種利用權利要求I所述的系統實現基於雲計算架構進行複雜事件處理的方法,其特徵在於,所述的方法包括複雜事件處理操作和複雜事件處理故障恢復操作,所述的複雜事件處理操作包括以下步驟 (1)所述的事件分發節點進行初始化操作; (2)所述的事件分發節點對輸入事件進行分發操作; (3)所述的事件處理節點對接收到的事件進行匹配和處理操作; (4)所述的事件去重節點接收各個所述的事件處理節點輸出的事件; (5)所述的事件去重節點進行事件去重操作; (6)所述的事件去重節點將產生的事件發送至外部系統,由外部系統進行後續業務處理;所述的複雜事件處理故障恢復操作,包括以下步驟 (a)所述的節點管理器將發生故障的事件處理節點的標識發送到所述的事件分發節佔. (b )所述的事件分發節點根據該事件處理節點的標識找到相應的事件處理節點組; (C)所述的事件分發節點將發生故障的事件處理節點移出該事件處理節點組,即將發生故障的事件處理節點的標識從與其對應的事件處理節點組的標識映射關係中刪除; Cd)隨機選擇發生故障的事件處理節點所對應的事件處理節點組中的一個正常工作的事件處理節點作為被複製節點; Ce)調用所述的被複製節點的對外接口,暫停其業務處理工作; Cf)調用所述的被複製節點的對外接口,讀取該被複製節點的業務狀態上下文數據C ; (g)調用所述的被複製節點的對外接口,讀取該被複製節點當前已經接收的最後一個事件序號N ; (h)調用所述的被複製節點的對外接口,恢復該被複製節點的業務處理工作; (i)以啟動進程的方式,創建新的事件處理節點; (j)所述的新的事件處理節點進行初始化,設置相應的節點標識; (k)所述的節點管理器將所述的業務狀態上下文數據C寫入所創建的該新的事件處理節點中;(I)所述的節點管理器將記錄的當前已經處理的最後一個事件序列號N寫入所創建的該新的事件處理節點中; (m)所述的節點管理器同時將新的事件處理節點標識、URL發送給所述的事件分發節點進行註冊; (n)所述的事件分發節點將所述的新的事件處理標識加入到相應的事件處理節點組中,並更新事件處理節點組標識與事件處理節點標識的映射關係; (O)所述的節點管理器將事件序列號N、新的事件處理節點標識發送至所述的事件分發節點,通知該事件分發節點發送後續事件; (P)所述的事件分發節點向所創建的所述的新的事件處理節點發送序號為N的事件以及後續的事件; (q)所創建的所述的新的事件分發節點對序列號N的及以後的事件進行正常處理。
4.根據權利要求3所述的實現基於雲計算架構進行複雜事件處理的方法,其特徵在於,所述的事件分發節點的初始化操作,包括以下步驟; (II)加載事件類型,為每個事件實例找到唯一的事件類型; (12)加載EPL列表,所述的EPL列表中的每條記錄均包含EPL唯一標識和EPL語句; (13)加載事件處理節點組列表,一個事件處理組標識將對應多個事件處理節點URL,所述的事件處理節點組列表中的每條記錄均包含事件處理節點組標識和事件處理節點URL ; (14)以事件類型和EPL列表為基礎生成事件類型與EPL關係映射表,其中一個事件類型對應到多個EPL語句,同時,一個EPL語句中包含多個事件類型,該事件類型與EPL關係映射表中的每條記錄均包含事件類型和EPL唯一標識; (15)以EPL列表和事件處理節點組為列表生成EPL與事件處理節點組映射關係表,每個EPL語句都唯一對應一個事件處理節點組標識,該EPL與事件處理節點組映射關係表中的每條記錄均包含EPL唯一標識和事件處理節點組標識; (16)根據事件類型與EPL關係映射表和EPL與事件處理節點組映射關係表生成事件類型與事件處理節組映射表,該事件類型與事件處理節組映射表中的每條記錄均包含事件類型和事件處理節點組標識; (17)為每個事件處理節點組初始化事件序號值為O。
5.根據權利要求3所述的實現基於雲計算架構進行複雜事件處理的方法,其特徵在於,所述的事件分發節點對輸入事件進行分發操作,包括以下步驟; (21)所述的事件分發節點收到來自於系統外部的新事件; (22)根據輸入的新事件判斷事件所屬的事件類型; (23)根據事件類型,在事件類型與處理節點組映射關係表中找對應的事件處理節點組標識; (24)獲得目標事件處理節點組中的事件序號值N; (25)將事件序號標記為N; (26)將目標事件處理節點組中的事件序號值變更為N+ I ; (27)根據事件處理節點標識在事件處理節點組列表中查找全部的事件處理節點URL列表; (28)對內存中的事件進行序列化編碼,得到編碼後可在網絡上進行傳輸的報文;(29)對節點處理URL列表中的每個URL進行遍歷,將事件報文依次發送到目標URL。
6.根據權利要求3所述的實現基於雲計算架構進行複雜事件處理的方法,其特徵在於,所述的事件處理節點對收到的事件進行匹配和處理,包括以下步驟 (31)所述的事件處理節點對最後接收到的事件序號X進行初始化; (32)從網絡中接收到事件報文; (33)對事件報文進行反序列化解碼,得到事件的內存對象; (34)從事件對象中提取事件序號y; (35)將事件序號y與最後接收事件序號X進行比較,如果y< X,則表明已經接收過該事件,並對事件進行拋棄處理後返回步驟(4);否則,繼續執行步驟(36); (36)根據事件類型,判斷本節點的EPL是否包含該事件類型,如果不包含,則拋棄該事件,並結束;否則,接納該事件; (37)將最後接收事件序列號X的值更新為X+ I ; (38)調用已有複雜事件處理引擎接口,由其執行後續複雜事件處理業務步驟。
7.根據權利要求3所述的實現基於雲計算架構進行複雜事件處理的方法,其特徵在於,所述的事件去重節點的事件去重操作,包括以下步驟 (41)所述的事件去重節點進行初始化,加載事件處理節點組與事件處理節點映射關係; (42)從網絡中接收到事件報文,並對報文進行反序列化解碼,得到事件對象E; (43)記錄來源事件處理節點標識pn; (44)計算事件E的摘要值ed; (45)記錄來源事件處理節點標識pn、事件摘要值ed二元組; (46)根據來源事件處理節點標識pn查找對應的事件處理節點組png; (47)在對應的事件處理節點組png中,通過步驟(48)遍歷除事件處理節點pn以外的每個事件處理節點pn』 ; (48)查找是否存在事件處理節點pn』、事件摘要值ed二元組,若存在,則拋棄該事件,步驟執行結束;否則繼續執行步驟(49); (49)將該事件作為輸出事件,進行序列化編碼,得到編碼後可在網絡上進行傳輸的報文。
全文摘要
本發明涉及一種基於雲計算架構實現複雜事件處理的系統,其中包括事件分發節點、多個事件處理節點、事件處理節點組、事件去重節點、節點管理器。本發明還涉及一種利用該系統實現基於雲計算架構進行複雜事件處理的方法。採用該種基於雲計算架構實現複雜事件處理的系統及其方法,使得整個系統可以承載高並發、大量的事件數據,保證了輸出事件的唯一性,並可以從其對應的事件處理節點組中隨機選擇一個正常節點進行複製,保證了上層業務的連續性,大大提高了複雜事件處理系統的整體可靠性,滿足了大數據流、高並發、高實時性數據分析要求,在系統運行過程中保持業務連續性的條件下,完成對系統處理節點的動態調整,工作性能穩定可靠,適用範圍廣泛。
文檔編號G06F9/46GK102968339SQ20121055538
公開日2013年3月13日 申請日期2012年12月19日 優先權日2012年12月19日
發明者王延炯 申請人:上海普元信息技術股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀