最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

面向物聯(lián)網(wǎng)的復(fù)雜事件處理引擎狀態(tài)監(jiān)控與災(zāi)難恢復(fù)方法與流程

文檔序號(hào):11519488閱讀:395來(lái)源:國(guó)知局
面向物聯(lián)網(wǎng)的復(fù)雜事件處理引擎狀態(tài)監(jiān)控與災(zāi)難恢復(fù)方法與流程

本發(fā)明涉及物聯(lián)網(wǎng)傳感器網(wǎng)絡(luò)、物聯(lián)網(wǎng)中間件、復(fù)雜事件處理等技術(shù)領(lǐng)域,具體涉及復(fù)雜事件處理引擎的狀態(tài)監(jiān)控及引擎災(zāi)難恢復(fù)方法。



背景技術(shù):

物聯(lián)網(wǎng)傳感器網(wǎng)絡(luò)是一種由獨(dú)立分布的節(jié)點(diǎn)以及網(wǎng)關(guān)構(gòu)成的傳感器網(wǎng)絡(luò)。傳感器的類(lèi)型多種多樣,所以物聯(lián)網(wǎng)能夠促進(jìn)各種應(yīng)用在不同領(lǐng)域的發(fā)展,例如家居自動(dòng)化、工業(yè)自動(dòng)化、醫(yī)療援助、移動(dòng)醫(yī)療保健、老年人輔助、智能能源管理、智能網(wǎng)格自動(dòng)化交通管理等等其他方面。在物聯(lián)網(wǎng)傳感器網(wǎng)絡(luò)中,安放在不同地點(diǎn)的傳感器節(jié)點(diǎn)不斷采集著外界的物理信息,如溫度、聲音、震動(dòng)等。傳感器網(wǎng)絡(luò)的每個(gè)節(jié)點(diǎn)都能夠?qū)崿F(xiàn)采集,數(shù)據(jù)的簡(jiǎn)單處理,還能接收來(lái)自其他節(jié)點(diǎn)的數(shù)據(jù),并最終將數(shù)據(jù)發(fā)送到網(wǎng)關(guān)。開(kāi)發(fā)者或工程師可以從網(wǎng)關(guān)獲取數(shù)據(jù),查看歷史數(shù)據(jù)記錄或進(jìn)行分析。

物聯(lián)網(wǎng)中間件技術(shù)是在當(dāng)前物聯(lián)網(wǎng)環(huán)境下,解決設(shè)備異構(gòu)、信息海量、數(shù)據(jù)類(lèi)型多等問(wèn)題的通用服務(wù)平臺(tái),實(shí)現(xiàn)對(duì)物的管理、交互和信息處理等功能。物聯(lián)網(wǎng)中間件處于系統(tǒng)架構(gòu)的中間部分,介于物聯(lián)網(wǎng)底層硬件/操作系統(tǒng)和上層應(yīng)用程序之間,其作用是減輕上層應(yīng)用的數(shù)據(jù)處理負(fù)擔(dān),屏蔽物聯(lián)網(wǎng)環(huán)境中的異構(gòu)性,提高可移植性。當(dāng)前物聯(lián)網(wǎng)環(huán)境中,使用最廣泛的傳感器設(shè)備是rfid傳感器,因此rfid中間件占據(jù)了主流,它的主要任務(wù)是對(duì)閱讀器傳來(lái)的與標(biāo)簽相關(guān)的事件、數(shù)據(jù)進(jìn)行清洗、過(guò)濾和計(jì)算,減少?gòu)拈喿x器傳往企業(yè)應(yīng)用的巨量原始數(shù)據(jù),提取出有意義的信息供企業(yè)使用。

復(fù)雜事件處理技術(shù)是一種把數(shù)據(jù)流作為輸入,根據(jù)一系列預(yù)定義的規(guī)則,把數(shù)據(jù)(或部分?jǐn)?shù)據(jù))重定向給監(jiān)聽(tīng)者們;又或者是當(dāng)發(fā)現(xiàn)數(shù)據(jù)中的隱含的模式(pattern)時(shí),觸發(fā)事件。在大量數(shù)據(jù)產(chǎn)生出來(lái)并需要進(jìn)行實(shí)時(shí)地分析的場(chǎng)景下,復(fù)雜事件處理技術(shù)可以有效地分析數(shù)據(jù),找出其中包含的事件。目前復(fù)雜事件處理技術(shù)的研究有很多,它們主要集中在兩個(gè)方面,分別是復(fù)雜事件處理語(yǔ)言和復(fù)雜事件檢測(cè)。復(fù)雜事件處理語(yǔ)言有比較成熟的epl(eventprocessinglanguage)語(yǔ)言,使用一系列的子句,從事件流中查找復(fù)雜事件。復(fù)雜事件檢測(cè)也有很多成熟的算法,比如基于有向圖的、基于petri網(wǎng)的等等。

現(xiàn)有的復(fù)雜事件處理技術(shù)主要集中在對(duì)復(fù)雜事件處理引擎的研究上,其中主要對(duì)事件檢測(cè)、事件匹配和事件處理性能的研究。當(dāng)復(fù)雜事件處理引擎應(yīng)用在物聯(lián)網(wǎng)環(huán)境中時(shí),人們不僅要關(guān)注復(fù)雜事件處理引擎本身的性能,還要使復(fù)雜事件處理引擎在復(fù)雜的物聯(lián)網(wǎng)環(huán)境中能夠保證實(shí)時(shí)可用性與可恢復(fù)性,滿(mǎn)足實(shí)際業(yè)務(wù)的需求。于是本發(fā)明就針對(duì)這兩點(diǎn)特性描述了一種能夠?qū)?fù)雜事件處理引擎狀態(tài)監(jiān)控與災(zāi)難恢復(fù)的方法。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的在于克服現(xiàn)有技術(shù)存在上述不足,提供了面向物聯(lián)網(wǎng)的復(fù)雜事件處理引擎狀態(tài)監(jiān)控與災(zāi)難恢復(fù)方法,具體包括對(duì)復(fù)雜事件處理引擎的狀態(tài)監(jiān)聽(tīng)和控制方法,以及引擎發(fā)生故障后對(duì)故障期間的事件流進(jìn)行暫存和重加載的方法。

面向物聯(lián)網(wǎng)的復(fù)雜事件處理引擎狀態(tài)監(jiān)控與災(zāi)難恢復(fù)方法:對(duì)復(fù)雜事件處理引擎esper(下文所述復(fù)雜事件處理引擎皆指esper引擎)的狀態(tài)進(jìn)行監(jiān)聽(tīng)和控制,并且在復(fù)雜事件處理引擎發(fā)生故障重啟之后能夠?qū)收掀陂g丟失的原子事件,即傳感器讀取到的初始事件,進(jìn)行再次處理,幫助復(fù)雜事件處理引擎從災(zāi)難中恢復(fù);復(fù)雜事件處理引擎狀態(tài)監(jiān)控是指:服務(wù)器端的復(fù)雜事件處理引擎的運(yùn)行狀態(tài)能夠被前端實(shí)時(shí)監(jiān)聽(tīng),前端在監(jiān)聽(tīng)到復(fù)雜事件處理引擎狀態(tài)后還能夠根據(jù)實(shí)施情況對(duì)復(fù)雜事件處理引擎的狀態(tài)進(jìn)行控制,包括對(duì)復(fù)雜事件處理引擎的暫停,重新實(shí)例化操作;

復(fù)雜事件處理引擎災(zāi)難恢復(fù)是指:當(dāng)復(fù)雜事件處理引擎發(fā)生故障后,故障期間輸入的原子事件流將被保存到數(shù)據(jù)庫(kù)中進(jìn)行暫存,在對(duì)復(fù)雜事件處理引擎重新實(shí)例化后將故障期間暫存的原子事件流輸入復(fù)雜事件處理引擎進(jìn)行復(fù)雜事件處理;為使復(fù)雜事件處理引擎能夠在故障中恢復(fù),需建立一個(gè)多級(jí)的數(shù)據(jù)持久化模塊,使用事件緩存區(qū)、臨時(shí)數(shù)據(jù)庫(kù)和永久數(shù)據(jù)庫(kù)三層存儲(chǔ)方式進(jìn)行事件的數(shù)據(jù)暫存和數(shù)據(jù)長(zhǎng)期持久化,進(jìn)行多級(jí)別的事件存儲(chǔ)。

進(jìn)一步地,前端不斷監(jiān)聽(tīng)來(lái)自服務(wù)器端復(fù)雜事件處理引擎的狀態(tài)消息,當(dāng)復(fù)雜事件處理引擎的狀態(tài)是正常運(yùn)行時(shí),前端不做任何處理,當(dāng)復(fù)雜事件處理引擎的狀態(tài)處于錯(cuò)誤狀態(tài)時(shí),前端將會(huì)及時(shí)報(bào)告復(fù)雜事件處理引擎錯(cuò)誤信息,并且能根據(jù)前端使用者的選擇進(jìn)行下一步操作,進(jìn)行復(fù)雜事件處理引擎的重新啟動(dòng)或故障排除。

進(jìn)一步地,對(duì)復(fù)雜事件處理引擎的監(jiān)聽(tīng)控制模塊運(yùn)行在服務(wù)器端,監(jiān)聽(tīng)控制模塊包括監(jiān)聽(tīng)器和控制器兩個(gè)部分。監(jiān)聽(tīng)控制模塊的監(jiān)聽(tīng)器對(duì)復(fù)雜事件處理引擎的狀態(tài)進(jìn)行監(jiān)聽(tīng),并且將復(fù)雜事件處理引擎狀態(tài)信息報(bào)告給前端;監(jiān)聽(tīng)控制模塊的控制器對(duì)引擎進(jìn)行控制,包括掛起、繼續(xù)、重啟、關(guān)閉。

進(jìn)一步地,監(jiān)聽(tīng)控制模塊中控制器對(duì)復(fù)雜事件處理引擎的控制操作不僅是暫停、繼續(xù),還包括根據(jù)復(fù)雜事件處理引擎當(dāng)前狀態(tài)決定是重啟動(dòng)還是加載不同的數(shù)據(jù)源重新實(shí)例化。

進(jìn)一步地,復(fù)雜事件處理引擎發(fā)生錯(cuò)誤時(shí)監(jiān)聽(tīng)控制模塊中的控制器能夠?qū)⑦€在源源不斷輸入的事件流輸出到一個(gè)臨時(shí)數(shù)據(jù)庫(kù)暫時(shí)存儲(chǔ)起來(lái),在復(fù)雜事件處理引擎重啟動(dòng)之后,根據(jù)前端的指令決定是從臨時(shí)數(shù)據(jù)庫(kù)加載數(shù)據(jù)還是從傳感器直接接收數(shù)據(jù)。

進(jìn)一步地,復(fù)雜事件處理引擎從災(zāi)難中恢復(fù)并且重啟之后,如果從臨時(shí)數(shù)據(jù)庫(kù)加載數(shù)據(jù),那么傳感器輸入的事件流將會(huì)存到臨時(shí)緩存區(qū),臨時(shí)緩存區(qū)創(chuàng)建于內(nèi)存中提高讀取速度。

進(jìn)一步地,對(duì)于復(fù)雜事件處理引擎的狀態(tài)監(jiān)控與災(zāi)難恢復(fù),需要在服務(wù)器端創(chuàng)建監(jiān)聽(tīng)控制模塊,該模塊中的監(jiān)聽(tīng)器listener對(duì)復(fù)雜事件處理引擎的運(yùn)行狀態(tài)進(jìn)行監(jiān)聽(tīng),并且將引擎的狀態(tài)信息返回給前端,前端實(shí)時(shí)更新引擎的狀態(tài)信息供前端使用者查看。前端可以向服務(wù)器端的控制器發(fā)送消息,控制復(fù)雜事件處理引擎的狀態(tài)。當(dāng)監(jiān)聽(tīng)器監(jiān)聽(tīng)到復(fù)雜事件處理引擎發(fā)生故障,將啟動(dòng)災(zāi)難恢復(fù)的處理操作。

進(jìn)一步地,當(dāng)復(fù)雜事件處理引擎發(fā)生故障時(shí),監(jiān)聽(tīng)器得到這一消息會(huì)做兩件事情,首先將來(lái)自傳感器的原子事件流存到臨時(shí)數(shù)據(jù)庫(kù)中,同時(shí)返回引擎發(fā)生故障的信息發(fā)送給前端。在這種情況下,前端的使用者可以選擇對(duì)復(fù)雜事件引擎進(jìn)行故障排除或重新啟動(dòng)的操作。

進(jìn)一步地,前端向服務(wù)器端的控制器發(fā)出控制指令,該指令中包含了控制的方式,包括掛起、繼續(xù)、重啟、關(guān)閉??刂破魇盏絹?lái)自前端的指令,直接對(duì)復(fù)雜事件處理引擎進(jìn)行相應(yīng)的控制。

進(jìn)一步地,如果控制器controller收到來(lái)自前端的重啟指令后,根據(jù)指令內(nèi)容對(duì)復(fù)雜事件處理引擎進(jìn)行重啟操作。如果控制器controller收到重新實(shí)例化的指令,將對(duì)復(fù)雜事件處理引擎進(jìn)行重新實(shí)例化,舊的復(fù)雜事件處理引擎實(shí)例將被銷(xiāo)毀。

進(jìn)一步地,重啟或者重新實(shí)例化之后的復(fù)雜事件處理引擎根據(jù)指令不同會(huì)加載不同的數(shù)據(jù)源,包括從臨時(shí)數(shù)據(jù)庫(kù)加載和從實(shí)時(shí)原子事件流加載兩種方式。臨時(shí)數(shù)據(jù)庫(kù)中存儲(chǔ)的故障期間的原子事件流會(huì)在重啟動(dòng)之后被傳入引擎或者直接轉(zhuǎn)存到事件永久數(shù)據(jù)庫(kù)中,以供進(jìn)行歷史記錄查詢(xún)。

進(jìn)一步地,如果引擎在重啟后從臨時(shí)數(shù)據(jù)庫(kù)加載數(shù)據(jù),此時(shí)從傳感器傳入的事件流保存到創(chuàng)建在內(nèi)存中的緩存區(qū)eventbuffer,等待臨時(shí)數(shù)據(jù)庫(kù)中的事件被引擎讀取完之后,再?gòu)木彺鎱^(qū)讀取事件,最后接收來(lái)自傳感器的實(shí)時(shí)事件流。

進(jìn)一步地,通過(guò)對(duì)復(fù)雜事件處理引擎的監(jiān)聽(tīng)與控制,并且利用多級(jí)的數(shù)據(jù)持久化模塊,實(shí)現(xiàn)物聯(lián)網(wǎng)環(huán)境下的復(fù)雜事件處理引擎的狀態(tài)監(jiān)控與災(zāi)難恢復(fù),提高復(fù)雜事件處理引擎的可靠性與可恢復(fù)性。

與現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)點(diǎn)和技術(shù)效果:

(1)在服務(wù)器端創(chuàng)建監(jiān)聽(tīng)控制模塊,保證對(duì)引擎的監(jiān)聽(tīng)實(shí)時(shí)性

復(fù)雜事件處理引擎esper雖然提供了復(fù)雜事件查詢(xún)的功能,但是對(duì)于引擎的控制還只能通過(guò)簡(jiǎn)單的實(shí)例化運(yùn)行,如果引擎發(fā)生故障,將不能及時(shí)報(bào)告給使用者。因此,在服務(wù)器端創(chuàng)建監(jiān)聽(tīng)控制模塊,對(duì)引擎的狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)聽(tīng),能夠讓使用者在前端及時(shí)知道引擎的運(yùn)行狀態(tài),并且,服務(wù)器端的監(jiān)聽(tīng)器與引擎運(yùn)行在同一臺(tái)主機(jī)上,保證了二者之間是綁定的關(guān)系,保證了對(duì)引擎監(jiān)聽(tīng)的實(shí)時(shí)性。

(2)設(shè)計(jì)前端與服務(wù)器端監(jiān)聽(tīng)控制模塊的通信方式,保證對(duì)引擎的可控性

前端不直接控制復(fù)雜事件處理引擎,而是與部署在服務(wù)器端的監(jiān)聽(tīng)控制模塊進(jìn)行通信,監(jiān)聽(tīng)控制模塊將引擎的狀態(tài)信息不斷報(bào)告給前端,前端對(duì)引擎的控制指令發(fā)送給監(jiān)聽(tīng)控制模塊,再通過(guò)監(jiān)聽(tīng)控制模塊實(shí)現(xiàn)對(duì)引擎的控制,包括掛起、繼續(xù)、重啟、關(guān)閉操作,這樣保證使用者通過(guò)前端對(duì)引擎的可控性。

(3)設(shè)計(jì)多級(jí)備份存儲(chǔ)的方式,保證事件流的可恢復(fù)性

通過(guò)建立緩存區(qū)eventbuffer、臨時(shí)數(shù)據(jù)庫(kù)tempdb、永久數(shù)據(jù)庫(kù)permdb的方式,對(duì)事件流做不同級(jí)別的存儲(chǔ)。當(dāng)引擎工作運(yùn)行時(shí),事件流被引擎處理的同時(shí)直接存入永久數(shù)據(jù)庫(kù)做數(shù)據(jù)持久化;當(dāng)引擎發(fā)生故障時(shí),事件流被存入臨時(shí)數(shù)據(jù)庫(kù)做備份,當(dāng)引擎重新啟動(dòng)之后再?gòu)呐R時(shí)數(shù)據(jù)庫(kù)導(dǎo)入引擎,這時(shí)如果來(lái)自物聯(lián)網(wǎng)傳感器的事件流傳入引擎,但是臨時(shí)數(shù)據(jù)庫(kù)中的事件還未處理完,那么實(shí)時(shí)事件流將被存入緩存區(qū)進(jìn)行暫存,等到臨時(shí)數(shù)據(jù)庫(kù)中的事件處理完成就讀取緩存區(qū)的事件。通過(guò)這種多級(jí)的備份存儲(chǔ)方式,保證了引擎在發(fā)生故障時(shí)不會(huì)遺漏重要的事件,保證了事件流的可恢復(fù)性。

(4)設(shè)計(jì)不同的引擎重啟方式,保證事件的實(shí)時(shí)處理性或完整性

對(duì)于發(fā)生故障的復(fù)雜事件處理引擎,當(dāng)故障被解決之后,引擎重啟有兩種方式可供選擇,一種是丟棄故障期間的事件流直接重啟引擎,第二種是加載臨時(shí)數(shù)據(jù)庫(kù),讀取故障期間的事件流,再讀取實(shí)時(shí)事件流。通過(guò)這兩種方式滿(mǎn)足事件處理的實(shí)時(shí)處理性或者完整性。

附圖說(shuō)明

圖1為系統(tǒng)功能架構(gòu)圖。

圖2為系統(tǒng)部署結(jié)構(gòu)圖。

圖3為原子事件組成示意圖。

圖4為復(fù)雜事件處理引擎實(shí)例化簡(jiǎn)要過(guò)程圖。

圖5為引擎的監(jiān)控流程圖。

圖6為引擎的災(zāi)難恢復(fù)圖。

具體實(shí)施方式

為了使本發(fā)明的技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,下面結(jié)合附圖,進(jìn)行進(jìn)一步的詳細(xì)說(shuō)明,但本發(fā)明的實(shí)施和保護(hù)不限于此,需指出的是,以下文字或附圖中若有未特別詳細(xì)說(shuō)明之處如字符均是本領(lǐng)域及人員可參照現(xiàn)有技術(shù)理解或?qū)崿F(xiàn)的。

本實(shí)例采用如下復(fù)雜事件處理系統(tǒng)來(lái)作為面向物聯(lián)網(wǎng)的復(fù)雜事件處理引擎狀態(tài)監(jiān)控與災(zāi)難恢復(fù)方法的實(shí)例。

整個(gè)系統(tǒng)的總體架構(gòu)如圖1所示,其中物聯(lián)網(wǎng)中間件由設(shè)備適配層(deviceadapter)、設(shè)備管理層(devicemanager)、和ale服務(wù)層(aleservice)以及規(guī)則管理調(diào)度層(ruleadapter)組成,復(fù)雜事件處理系統(tǒng)由事件輸入適配層(eventinputadapter)、規(guī)則輸入適配層(ruleinputadapter)、規(guī)則/事件分組策略層(streamgroupingmanager)、復(fù)雜事件處理引擎(complexeventprocessor)以及復(fù)雜事件輸出適配層(eventoutputadapter)組成,監(jiān)聽(tīng)/控制模塊由監(jiān)聽(tīng)器(listener)和控制器(controller)組成,多級(jí)存儲(chǔ)層由事件緩存區(qū)(eventbuffer)、臨時(shí)數(shù)據(jù)庫(kù)(tempdb)以及永久數(shù)據(jù)庫(kù)(permdb)組成,前端監(jiān)控由用戶(hù)界面(userinterface)和遠(yuǎn)程訪問(wèn)模塊(remoteaccessmodule)組成。物聯(lián)網(wǎng)傳感器采集的數(shù)據(jù)經(jīng)由ale服務(wù)層進(jìn)行預(yù)處理,然后以ecreport的形式傳遞給輸入適配層,輸入適配層將數(shù)據(jù)轉(zhuǎn)換為原子事件并通過(guò)事件流分組策略層以pojo的形式輸入復(fù)雜事件處理引擎。而規(guī)則管理調(diào)度層與規(guī)則輸入適配層進(jìn)行交互,再將預(yù)先制定好的規(guī)則調(diào)度元數(shù)據(jù)推送到規(guī)則/事件分組策略層,分組策略層將規(guī)則和事件傳入復(fù)雜事件處理引擎。

想要實(shí)現(xiàn)本發(fā)明所述方法,系統(tǒng)的部署應(yīng)該按照如圖2所示部署,其中復(fù)雜事件處理引擎和對(duì)引擎進(jìn)行監(jiān)控的監(jiān)聽(tīng)/控制模塊部署在服務(wù)器端,其中特別指出的是,物聯(lián)網(wǎng)中間件在整個(gè)系統(tǒng)架構(gòu)中提供設(shè)備抽象化的功能與規(guī)則管理調(diào)度的功能,它與復(fù)雜事件處理系統(tǒng)關(guān)系緊密,也部署在服務(wù)器端。同時(shí),多個(gè)客戶(hù)端可通過(guò)網(wǎng)絡(luò)與服務(wù)器端連接,前端監(jiān)控系統(tǒng)就部署在客戶(hù)端上,供不同的用戶(hù)訪問(wèn)使用,對(duì)服務(wù)器端的復(fù)雜事件處理引擎進(jìn)行監(jiān)控。

物聯(lián)網(wǎng)原子事件組成事件流:在系統(tǒng)中,物聯(lián)網(wǎng)傳感器作為底層硬件設(shè)備不斷地向物聯(lián)網(wǎng)中間件發(fā)送數(shù)據(jù),這些數(shù)據(jù)經(jīng)過(guò)ale服務(wù)層的封裝進(jìn)入事件輸入適配層,在事件適配層中物聯(lián)網(wǎng)原子事件是一個(gè)java對(duì)象,它的示意圖如圖3所示,其中id指該事件對(duì)應(yīng)的唯一事件編號(hào),epc指rfid標(biāo)簽的epc碼,type指?jìng)鞲衅鲗?duì)應(yīng)的實(shí)體類(lèi)型,readtime指該事件產(chǎn)生的時(shí)間,reader指產(chǎn)生該事件的傳感器id。不斷產(chǎn)生的原子事件被傳入復(fù)雜事件處理引擎,形成事件流。

復(fù)雜事件處理引擎的狀態(tài)監(jiān)控實(shí)施包括:

(1)esper引擎實(shí)例化

在系統(tǒng)中,前端用戶(hù)界面發(fā)出啟動(dòng)復(fù)雜事件處理引擎的指令,復(fù)雜事件處理引擎進(jìn)行實(shí)例化之后開(kāi)始進(jìn)入正常運(yùn)行狀態(tài)。一個(gè)簡(jiǎn)要的對(duì)復(fù)雜事件處理引擎進(jìn)行實(shí)例化的過(guò)程如圖4所示,第一步創(chuàng)建esper引擎的配置信息,并且為esper配置添加事件類(lèi)型定義;第二步,創(chuàng)建esper引擎實(shí)例,提供運(yùn)行epruntime(引擎實(shí)例運(yùn)行接口)和epadministrator(引擎管理接口)的入口,并且聲明引擎實(shí)例運(yùn)行接口,能實(shí)現(xiàn)為引擎實(shí)例接收數(shù)據(jù)并發(fā)送給引擎處理的功能;第三步,創(chuàng)建statement(復(fù)雜事件查詢(xún)函數(shù))的管理接口實(shí)例,并創(chuàng)建一個(gè)簡(jiǎn)單的epl查詢(xún)語(yǔ)句實(shí)例;第四步,為statement實(shí)例添加監(jiān)聽(tīng)。以上四步是一個(gè)最簡(jiǎn)化的esper引擎實(shí)例化過(guò)程,描述了整個(gè)實(shí)例過(guò)程。

(2)引擎監(jiān)控流程

在esper引擎成功實(shí)例化并且運(yùn)行正常時(shí),位于監(jiān)聽(tīng)/控制模塊中的監(jiān)聽(tīng)器對(duì)esper引擎的狀態(tài)進(jìn)行監(jiān)聽(tīng),并且將引擎的狀態(tài)報(bào)告給前端遠(yuǎn)程訪問(wèn)模塊,如圖5所示。前端遠(yuǎn)程訪問(wèn)模塊根據(jù)引擎的狀態(tài)信息,向控制器發(fā)送指令,對(duì)引擎的狀態(tài)進(jìn)行更改操作。當(dāng)引擎發(fā)生故障時(shí),事件輸入適配層在監(jiān)聽(tīng)/控制模塊的作用下第一時(shí)間對(duì)事件輸入適配層進(jìn)行影響,將事件流傳入到臨時(shí)數(shù)據(jù)庫(kù)中保存,當(dāng)引擎運(yùn)行正常后臨時(shí)數(shù)據(jù)庫(kù)中的事件會(huì)被存入到永久數(shù)據(jù)庫(kù),臨時(shí)數(shù)據(jù)庫(kù)等待下一次故障時(shí)傳入的事件流。最后復(fù)雜事件處理引擎將符合條件的復(fù)雜事件輸出。

引擎的災(zāi)難恢復(fù)實(shí)施包括:

當(dāng)復(fù)雜事件處理引擎從災(zāi)難中恢復(fù)時(shí),系統(tǒng)內(nèi)部進(jìn)行的處理流程如圖6所示,當(dāng)災(zāi)難發(fā)生時(shí),事件輸入適配層會(huì)將事件流存入臨時(shí)數(shù)據(jù)庫(kù),控制器會(huì)使用與正常啟動(dòng)不同的配置對(duì)復(fù)雜事件處理引擎重新實(shí)例化,包括把數(shù)據(jù)源從事件輸入適配層改為臨時(shí)數(shù)據(jù)庫(kù),并且創(chuàng)建一個(gè)滿(mǎn)足條件的緩沖區(qū)對(duì)實(shí)時(shí)事件流進(jìn)行存儲(chǔ),臨時(shí)數(shù)據(jù)庫(kù)中的事件被引擎處理完成之后對(duì)緩沖區(qū)事件進(jìn)行加載,如果引擎的吞吐性能足夠強(qiáng),臨時(shí)數(shù)據(jù)庫(kù)中的事件會(huì)被很快處理完畢,緩沖區(qū)的事件數(shù)量很少,不會(huì)影響接下來(lái)對(duì)實(shí)時(shí)事件流的處理,引擎故障期間錯(cuò)過(guò)地復(fù)雜事件也被完整的輸出,完成引擎的災(zāi)難恢復(fù)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1