亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于事件流處理和插件式開發(fā)框架的流數(shù)據(jù)處理方法

文檔序號(hào):8457141閱讀:799來源:國知局
一種基于事件流處理和插件式開發(fā)框架的流數(shù)據(jù)處理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及電力、交通、節(jié)能環(huán)保、新能源等外場感知傳感設(shè)備的實(shí)時(shí)數(shù)據(jù)采集處 理方法,特別是一種基于事件流處理和插件式開發(fā)框架的流數(shù)據(jù)處理方法。
【背景技術(shù)】
[0002] 目前在進(jìn)行外場感知設(shè)備的數(shù)據(jù)采集處理時(shí),通常要同時(shí)對(duì)接不同的外場感知設(shè) 備。由于不同的感知設(shè)備其通信協(xié)議不同,有的甚至差別很大,而傳統(tǒng)的做法一般都是針對(duì) 不同的外場感知設(shè)備的數(shù)據(jù)采集通常進(jìn)行專門的開發(fā)。
[0003] 當(dāng)傳感設(shè)備較多時(shí)采集的數(shù)據(jù)量比較大,數(shù)據(jù)處理的實(shí)時(shí)性難以保證。即使使用 消息中間件進(jìn)行數(shù)據(jù)的暫時(shí)緩存也會(huì)存在多個(gè)處理進(jìn)程爭用消息中間件的情況,此時(shí)消息 中間件成為了實(shí)時(shí)性提升的瓶頸。
[0004] 傳統(tǒng)的外場感知設(shè)備的數(shù)據(jù)采集處理方法往往把數(shù)據(jù)的采集、處理和分析耦合在 一起,進(jìn)而導(dǎo)致了數(shù)據(jù)處理整體性能的下降。

【發(fā)明內(nèi)容】

[0005] 發(fā)明目的:本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)的不足,提供了一種基于 事件流處理和插件式開發(fā)框架的流數(shù)據(jù)處理方法。
[0006] 為了解決上述技術(shù)問題,本發(fā)明公開了一種基于事件流處理和插件式開發(fā)框架的 流數(shù)據(jù)處理方法,包括以下步驟:
[0007] 步驟1,創(chuàng)建插件宿主程序;
[0008] 步驟2,定義插件宿主程序與插件之間的接口規(guī)范;
[0009] 步驟3,根據(jù)步驟2中的接口規(guī)范,針對(duì)各種不同的外場感知設(shè)備的數(shù)據(jù)采集協(xié) 議,生成與各種數(shù)據(jù)采集協(xié)議相對(duì)應(yīng)的數(shù)據(jù)采集插件;
[0010] 步驟4,基于Esper框架創(chuàng)建事件流處理引擎,作為實(shí)時(shí)事件驅(qū)動(dòng)框架,當(dāng)事件流 中有事件處理?xiàng)l件發(fā)生時(shí),事件流處理引擎觸發(fā)自定義動(dòng)作;
[0011] 步驟5,為事件流處理引擎定義時(shí)間窗口或長度窗口,時(shí)間窗口定義一定時(shí)間范圍 內(nèi)或者任意一個(gè)時(shí)間段內(nèi)的數(shù)據(jù),長度窗口定義最近若干個(gè)事件的數(shù)據(jù);
[0012] 步驟6,針對(duì)各種不同的外場感知設(shè)備的數(shù)據(jù)采集協(xié)議實(shí)現(xiàn)與各數(shù)據(jù)采集協(xié)議相 對(duì)應(yīng)的數(shù)據(jù)處理規(guī)則;
[0013] 步驟7,定義并注冊(cè)事件,針對(duì)各種不同的外場感知設(shè)備定義各種事件,每一類外 場感知設(shè)備定義為一個(gè)事件,并將各種事件注冊(cè)到事件流處理引擎中;
[0014] 步驟8,將步驟7中注冊(cè)的事件分別與步驟6中實(shí)現(xiàn)的各種數(shù)據(jù)處理規(guī)則相關(guān)聯(lián), 用于相應(yīng)的事件發(fā)生時(shí)能夠自動(dòng)觸發(fā)相關(guān)的自定義動(dòng)作;
[0015] 步驟9,設(shè)置事件處理?xiàng)l件;
[0016] 步驟10,創(chuàng)建源數(shù)據(jù)隊(duì)列PackageMessageQueue,存放各種不同的外場感知設(shè)備 發(fā)送過來的原始數(shù)據(jù),以及目標(biāo)隊(duì)列RecordMessageQueue,用來存放解碼處理后的目標(biāo)數(shù) 據(jù);
[0017] 步驟11,創(chuàng)建源數(shù)據(jù)消費(fèi)線程ConsumePackage和目標(biāo)數(shù)據(jù)消費(fèi)線程 ConsumeRecord :
[0018] (1)源數(shù)據(jù)消費(fèi)線程ConsumePackage不斷地從源數(shù)據(jù)隊(duì)列PackageMessageQueue 中取出數(shù)據(jù),并根據(jù)數(shù)據(jù)的類型將該數(shù)據(jù)包裝成對(duì)應(yīng)類型的事件對(duì)象,并發(fā)送給事件流處 理引擎,當(dāng)達(dá)到步驟9設(shè)置的事件處理?xiàng)l件時(shí)觸發(fā)相對(duì)應(yīng)的數(shù)據(jù)處理規(guī)則進(jìn)行處理,處理 后得到的數(shù)據(jù)放入步驟10中的目標(biāo)隊(duì)列RecordMessageQueue ;
[0019] (2)目標(biāo)數(shù)據(jù)消費(fèi)線程ConsumeRecord不斷地從目標(biāo)隊(duì)列RecordMessageQueue中 取出目標(biāo)數(shù)據(jù);
[0020] 步驟12,將步驟11得到的目標(biāo)數(shù)據(jù)導(dǎo)出到目的地,比如可導(dǎo)出到數(shù)據(jù)庫、文件、或 消息中間件中;
[0021] 步驟13,創(chuàng)建守護(hù)進(jìn)程,守護(hù)進(jìn)程負(fù)責(zé)檢測事件流數(shù)據(jù)引擎處理的工作狀態(tài),當(dāng)流 數(shù)據(jù)處理程序的工作狀態(tài)出現(xiàn)異?;蛘咄V构ぷ鲿r(shí)主動(dòng)關(guān)閉流數(shù)據(jù)處理程序并重新啟動(dòng)。
[0022] 本發(fā)明中,進(jìn)一步地,步驟1中所述的插件宿主程序包含以下功能:
[0023] (Ia)注冊(cè)插件:插件在使用之前在宿主程序中進(jìn)行注冊(cè),用于定位插件路徑;只 有注冊(cè)成功后才能正確的找到插件路徑;
[0024] (2)反注冊(cè)插件:當(dāng)宿主程序不再需要使用該插件的時(shí)候能夠?qū)Σ寮M(jìn)行反注 冊(cè),從而使其不再成為宿主程序的一部分;
[0025] (3)啟用插件:能夠啟用已經(jīng)注冊(cè)的插件;
[0026] (4)禁用插件:當(dāng)不再使用某個(gè)插件時(shí),能夠禁用正在運(yùn)行的插件。
[0027] 步驟3中的數(shù)據(jù)采集插件的功能可以通過動(dòng)態(tài)鏈接庫技術(shù)實(shí)現(xiàn)。
[0028] 步驟4中所述的事件流處理引擎的創(chuàng)建過程如下:
[0029] (4a)根據(jù)各種外場感知設(shè)備預(yù)先定義各種感知設(shè)備相對(duì)應(yīng)的事件,然后將各種事 件類型注冊(cè)到配置環(huán)境中,生成相關(guān)的配置對(duì)象;
[0030] (4b)以配置對(duì)象為參數(shù)創(chuàng)建事件流處理引擎實(shí)例,作為事件處理的容器環(huán)境;
[0031] (4c)創(chuàng)建或者導(dǎo)入事件處理規(guī)則;
[0032] (4d)創(chuàng)建監(jiān)聽器對(duì)象,并將監(jiān)聽器對(duì)象與事件處理規(guī)則相關(guān)聯(lián);
[0033] (4e)事件流處理引擎創(chuàng)建事件流處理的執(zhí)行環(huán)境對(duì)象,接收事件流,在引擎中與 事件處理?xiàng)l件進(jìn)行邏輯匹配;
[0034] (4f)執(zhí)行環(huán)境對(duì)象負(fù)責(zé)監(jiān)聽來到的所有事件,當(dāng)事件符合預(yù)先設(shè)定的事件處理?xiàng)l 件時(shí)觸發(fā)相應(yīng)的監(jiān)聽器對(duì)外場感知設(shè)備事件進(jìn)行處理得到目標(biāo)數(shù)據(jù)。
[0035] 步驟6中所述的數(shù)據(jù)處理規(guī)則指對(duì)外場感知設(shè)備的數(shù)據(jù)進(jìn)行接收并按照感知設(shè) 備的采集協(xié)議解碼,對(duì)解碼后的數(shù)據(jù)按照用戶需求處理。
[0036] 步驟7中所述的事件是一個(gè)三元組〈id,attrs,time〉,其中id是該事件的唯一標(biāo) 識(shí);attrs表示該事件的屬性,對(duì)于不同的外場感知設(shè)備產(chǎn)生的數(shù)據(jù)包裝而成的不同屬性 的事件,使用attrs屬性對(duì)各種不同的外場感知設(shè)備進(jìn)行標(biāo)識(shí),事件流處理引擎通過attrs 屬性來選擇對(duì)應(yīng)的數(shù)據(jù)處理規(guī)則;time表示事件發(fā)生的時(shí)間,標(biāo)識(shí)各種不同的外場感知設(shè) 備的數(shù)據(jù)采集的時(shí)間,并作為事件流處理的一個(gè)條件輸入。
[0037] 本發(fā)明通過將事件流處理和插件式開發(fā)框架相結(jié)合,提供了一種更加靈活更加高 效的實(shí)時(shí)流數(shù)據(jù)處理方法。與現(xiàn)有技術(shù)相比,具有的有益效果是:
[0038] (1)本發(fā)明將插件式開發(fā)框架引入到數(shù)據(jù)處理中,使得對(duì)各種外場感知設(shè)備傳輸 協(xié)議的適配通過加載插件的方式來完成,更加靈活,擴(kuò)展性強(qiáng)。
[0039] (2)本發(fā)明采用基于事件流處理的機(jī)制,基于事件流進(jìn)行數(shù)據(jù)處理,把要分析的數(shù) 據(jù)抽象為事件,當(dāng)事件流處理引擎接收到相關(guān)事件后會(huì)根據(jù)事件的輸入和最初注冊(cè)的處理 模型得到事件的處理結(jié)果,使得數(shù)據(jù)處理效率更高。
[0040] 通過引入事件流處理的機(jī)制,使得傳統(tǒng)數(shù)據(jù)處理平臺(tái)真正具備了流數(shù)據(jù)處理的特 征,不再關(guān)注數(shù)據(jù)的存儲(chǔ),而是在數(shù)據(jù)流過事件流處理引擎的同時(shí)獲取到用戶關(guān)心的數(shù)據(jù)。
[0041] (3)由于將數(shù)據(jù)轉(zhuǎn)換為事件進(jìn)行處理,能夠根據(jù)預(yù)先定義的時(shí)間窗口或長度窗口 對(duì)事件信息進(jìn)行統(tǒng)計(jì)分析,從而能夠快速發(fā)現(xiàn)采集到的異常數(shù)據(jù)(比如突然變大、突然變 小等等)并進(jìn)行響應(yīng),使業(yè)務(wù)系統(tǒng)能夠做到自控制自反饋。
[0042] (4)通過引入守護(hù)進(jìn)程,完成進(jìn)程自身的管理工作,當(dāng)出現(xiàn)停止工作或者工作狀態(tài) 異常的情況下能夠重啟流數(shù)據(jù)處理軟件,保證流數(shù)據(jù)處理軟件"永不停機(jī)"。
【附圖說明】
[0043] 下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明做更進(jìn)一步的具體說明,本發(fā)明的上述和 /或其他方面的優(yōu)點(diǎn)將會(huì)變得更加清楚。
[0044] 圖1是本發(fā)明基于事件流處理和插件式開發(fā)框架的流數(shù)據(jù)處理方法的實(shí)現(xiàn)過程。
[0045] 圖2是典型的插件式開發(fā)框架的體系結(jié)構(gòu)。
[0046] 圖3是宿主程序管理插件的流程圖。
[0047] 圖4是事件流處理引擎的創(chuàng)建過程。
[0048] 圖5是事件流處理引擎的執(zhí)行過程。
[0049] 圖6是事件流處理引擎的處理窗口示意圖。
[0050] 圖7為某個(gè)傳感器事件的類圖。
【具體實(shí)施方式】
[0051] 圖1為基于事件流處理和插件式開發(fā)框架的流數(shù)據(jù)處理方法的實(shí)現(xiàn)過程,其中需 要對(duì)各種不同的外場感知設(shè)備1、設(shè)備2...、設(shè)備N進(jìn)行實(shí)時(shí)數(shù)據(jù)采集處理,數(shù)據(jù)采集插件 負(fù)責(zé)各種不同傳感設(shè)備的數(shù)據(jù)采集,根據(jù)不同的外場感知設(shè)備數(shù)據(jù)傳輸協(xié)議對(duì)接不同的外 場感知設(shè)備,采集數(shù)據(jù),數(shù)據(jù)采集插件與設(shè)備的對(duì)應(yīng)關(guān)系通過配置信息接口讀取配置
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1