本發(fā)明涉及數(shù)據(jù)采集技術(shù)領(lǐng)域,具體為一種數(shù)據(jù)采集系統(tǒng)及其方法。
背景技術(shù):
近年來,隨著計(jì)算機(jī)、物聯(lián)網(wǎng)等相關(guān)技術(shù)領(lǐng)域的長(zhǎng)足發(fā)展,在包括生產(chǎn)和生活在內(nèi)的社會(huì)活動(dòng)層面里,使用了大量產(chǎn)生數(shù)據(jù)的傳感器和其它產(chǎn)生數(shù)據(jù)的軟硬件設(shè)備,這些數(shù)據(jù)為國(guó)民生產(chǎn)和日常生活帶來了極大的價(jià)值。伴隨產(chǎn)生數(shù)據(jù)的裝置設(shè)備數(shù)量的逐漸增加,特別是其中的一些物聯(lián)網(wǎng)設(shè)備具有運(yùn)行時(shí)間長(zhǎng)、數(shù)據(jù)產(chǎn)生頻率高、實(shí)時(shí)性強(qiáng)和數(shù)據(jù)量巨大等屬性,為數(shù)據(jù)采集、實(shí)時(shí)展示以及后續(xù)的數(shù)據(jù)分析帶來了很大的技術(shù)難題。面對(duì)這些技術(shù)難題,現(xiàn)有的數(shù)據(jù)采集技術(shù)不能有效解決,具體情況如下:面對(duì)大量的高頻并發(fā)數(shù)據(jù)采集需求,現(xiàn)有數(shù)據(jù)采集技術(shù)一般從兩個(gè)技術(shù)方向進(jìn)行展開:在硬件方向上,采用計(jì)算機(jī)集群架構(gòu)方式,增加大量的數(shù)據(jù)處理設(shè)備,該種方式需要不斷的投入更大量的硬件、增加了能耗和系統(tǒng)的管理運(yùn)維成本,使數(shù)據(jù)利用的綜合成本大量增加;在軟硬件結(jié)合方向上,采用軟件技術(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)并發(fā)的負(fù)載均衡處理,同時(shí)也需要一些專用的負(fù)載均衡硬件設(shè)備,該種方式的系統(tǒng)環(huán)境配置復(fù)雜、專業(yè)度及使用難度高、設(shè)備及軟件的采購(gòu)成本高,同時(shí)對(duì)運(yùn)維人員的技術(shù)和經(jīng)驗(yàn)要求也間接造成了系統(tǒng)的運(yùn)維成本高和穩(wěn)定性風(fēng)險(xiǎn)較大。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)以上問題的提出,而研制一種能夠滿足大量的高頻并發(fā)數(shù)據(jù)采集需求,同時(shí)有效減少運(yùn)算資源和降低硬件成本的數(shù)據(jù)采集系統(tǒng)及其方法。
本發(fā)明的技術(shù)手段如下:
一種數(shù)據(jù)采集系統(tǒng),包括:至少一個(gè)下位機(jī)、上位機(jī)、以及與上位機(jī)相連接的數(shù)據(jù)庫(kù);所述上位機(jī)包括通訊裝置和信息采集裝置;
所述通訊裝置包括:
與所述下位機(jī)相連接的通訊單元;所述通訊單元用于接收下位機(jī)上報(bào)的業(yè)務(wù)數(shù)據(jù)并傳輸給數(shù)據(jù)預(yù)處理單元;
與所述通訊單元相連接的數(shù)據(jù)預(yù)處理單元;所述數(shù)據(jù)預(yù)處理單元包括匯聚模塊和與所述匯聚模塊相連接的分發(fā)模塊;所述匯聚模塊用于對(duì)每條業(yè)務(wù)數(shù)據(jù)添加相應(yīng)的下位機(jī)設(shè)備標(biāo)識(shí)符信息和數(shù)據(jù)接收時(shí)間戳信息后發(fā)送給分發(fā)模塊;所述分發(fā)模塊用于將所述匯聚模塊處理后的業(yè)務(wù)數(shù)據(jù)保存至第一緩存單元;
所述信息采集裝置包括:
與所述數(shù)據(jù)預(yù)處理單元相連接的第一緩存單元;
與所述第一緩存單元相連接的緩存處理單元;所述緩存處理單元包括過濾模塊、與所述過濾模塊相連接的分類模塊和清理模塊;所述過濾模塊用于定時(shí)從所述第一緩存單元中批量提取業(yè)務(wù)數(shù)據(jù),并將第一緩存單元中保存的已被提取過的業(yè)務(wù)數(shù)據(jù)標(biāo)記為已處理,同時(shí)對(duì)所提取的業(yè)務(wù)數(shù)據(jù)進(jìn)行有效性判斷,根據(jù)業(yè)務(wù)數(shù)據(jù)有效性判斷結(jié)果對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行有效數(shù)據(jù)或無效數(shù)據(jù)標(biāo)記,以及對(duì)具有有效數(shù)據(jù)標(biāo)記的多個(gè)業(yè)務(wù)數(shù)據(jù)形成有效數(shù)據(jù)隊(duì)列;所述分類模塊用于對(duì)所述有效數(shù)據(jù)隊(duì)列中的多個(gè)業(yè)務(wù)數(shù)據(jù)按照預(yù)設(shè)分類規(guī)則進(jìn)行分類并將分類后的業(yè)務(wù)數(shù)據(jù)存儲(chǔ)至第二緩存單元;所述清理模塊用于按照預(yù)設(shè)清理周期對(duì)第一緩存單元中存儲(chǔ)的各業(yè)務(wù)數(shù)據(jù)的標(biāo)記進(jìn)行檢測(cè),并將標(biāo)記為已處理的業(yè)務(wù)數(shù)據(jù)從第一緩存單元中清除;
與所述緩存處理單元相連接的第二緩存單元;
與第二緩存單元相連接的信息存儲(chǔ)單元;所述信息存儲(chǔ)單元包括壓縮模塊和與所述壓縮模塊相連接的寫入模塊;所述壓縮模塊用于按照預(yù)設(shè)提取周期從所述第二緩存單元中提取業(yè)務(wù)數(shù)據(jù),并將已提取的符合數(shù)據(jù)抽樣間隔要求的業(yè)務(wù)數(shù)據(jù)形成業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列,對(duì)所述業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列進(jìn)行重復(fù)業(yè)務(wù)數(shù)據(jù)處理工作后生成非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列;所述寫入模塊按照預(yù)設(shè)打包周期對(duì)所述非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列進(jìn)行打包,并將打包后的業(yè)務(wù)數(shù)據(jù)批量保存到數(shù)據(jù)庫(kù);
進(jìn)一步地,通訊單元還用于檢測(cè)上位機(jī)與下位機(jī)之間的通訊狀態(tài)、以及檢測(cè)并更新下位機(jī)的工作狀態(tài);
進(jìn)一步地,所述數(shù)據(jù)預(yù)處理單元還包括與所述分發(fā)模塊相連接,用于按照預(yù)設(shè)展示周期對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行展示的實(shí)時(shí)展示模塊;所述分發(fā)模塊將所述匯聚模塊處理后的業(yè)務(wù)數(shù)據(jù)按照預(yù)設(shè)分發(fā)周期分發(fā)給所述實(shí)時(shí)展示模塊;
進(jìn)一步地,所述過濾模塊對(duì)所提取的業(yè)務(wù)數(shù)據(jù)進(jìn)行有效性判斷的過程為:判斷所提取的業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)號(hào)是否為感興趣的數(shù)據(jù)標(biāo)識(shí)號(hào),是則將該業(yè)務(wù)數(shù)據(jù)標(biāo)記為有效數(shù)據(jù),否則將該業(yè)務(wù)數(shù)據(jù)標(biāo)記為無效數(shù)據(jù);
進(jìn)一步地,
所述壓縮模塊對(duì)所述業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列進(jìn)行重復(fù)業(yè)務(wù)數(shù)據(jù)處理工作的具體過程為:壓縮模塊按照重復(fù)數(shù)據(jù)判斷規(guī)則判斷業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列中的相鄰數(shù)據(jù)是否屬于重復(fù)業(yè)務(wù)數(shù)據(jù),是則記錄所述重復(fù)業(yè)務(wù)數(shù)據(jù)中的其中一個(gè)的數(shù)據(jù)值和數(shù)據(jù)接收時(shí)間戳信息,否則記錄非重復(fù)業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)值和數(shù)據(jù)接收時(shí)間戳信息;
所述壓縮模塊根據(jù)所記錄的業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)值和數(shù)據(jù)接收時(shí)間戳信息生成非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列;對(duì)于已被壓縮模塊記錄下數(shù)據(jù)值的業(yè)務(wù)數(shù)據(jù),所述壓縮模塊將第二緩存單元中存儲(chǔ)的相對(duì)應(yīng)的業(yè)務(wù)數(shù)據(jù)標(biāo)記為已處理;所述寫入模塊在將打包后的非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列批量保存到數(shù)據(jù)庫(kù)之后,將第二緩存單元中被標(biāo)記為已處理的業(yè)務(wù)數(shù)據(jù)進(jìn)行清除;
進(jìn)一步地,所述通訊單元的工作流程如下:
A1:按照預(yù)設(shè)檢測(cè)周期對(duì)上位機(jī)與下位機(jī)之間的通訊狀態(tài)進(jìn)行檢測(cè),執(zhí)行A2;
A2:判斷上位機(jī)與下位機(jī)之間是否均能夠正常通訊?是則執(zhí)行A4,否則執(zhí)行A3;
A3:更新下位機(jī)的工作狀態(tài)為離線狀態(tài),執(zhí)行A7;
A4:判斷下位機(jī)的工作狀態(tài)是否正常?是則執(zhí)行A5,否則執(zhí)行A6;
A5:更新下位機(jī)的工作狀態(tài)為正常狀態(tài),執(zhí)行A7;
A6:更新下位機(jī)的工作狀態(tài)為故障狀態(tài),執(zhí)行A7;
A7:待下一預(yù)設(shè)檢測(cè)周期;
進(jìn)一步地,所述數(shù)據(jù)預(yù)處理單元的工作流程如下:
B1:匯聚模塊對(duì)接收到的每條業(yè)務(wù)數(shù)據(jù)添加相應(yīng)的下位機(jī)設(shè)備標(biāo)識(shí)符信息和數(shù)據(jù)接收時(shí)間戳信息后發(fā)送給分發(fā)模塊,執(zhí)行B2;
B2:分發(fā)模塊將匯聚模塊處理后的業(yè)務(wù)數(shù)據(jù)保存至第一緩存單元,執(zhí)行B3;
B3:分發(fā)模塊將匯聚模塊處理后的業(yè)務(wù)數(shù)據(jù)按照預(yù)設(shè)分發(fā)周期分發(fā)給實(shí)時(shí)展示模塊,執(zhí)行B4;
B4:實(shí)時(shí)展示模塊按照預(yù)設(shè)展示周期對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行展示;
在所述數(shù)據(jù)預(yù)處理單元的工作流程之前還具有如下工作流程:
上位機(jī)開啟數(shù)據(jù)接收狀態(tài),下位機(jī)向上位機(jī)上報(bào)業(yè)務(wù)數(shù)據(jù);
進(jìn)一步地,所述緩存處理單元的工作流程如下:
C1:過濾模塊定時(shí)從第一緩存單元中批量提取業(yè)務(wù)數(shù)據(jù),并將第一緩存單元中保存的已被提取過的業(yè)務(wù)數(shù)據(jù)標(biāo)記為已處理,執(zhí)行C2;
C2:過濾模塊判斷所提取的業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)號(hào)是否為感興趣的數(shù)據(jù)標(biāo)識(shí)號(hào),是則執(zhí)行C3,否則執(zhí)行C4;
C3:過濾模塊將該業(yè)務(wù)數(shù)據(jù)標(biāo)記為有效數(shù)據(jù),執(zhí)行C5;
C4:過濾模塊將該業(yè)務(wù)數(shù)據(jù)標(biāo)記為無效數(shù)據(jù);
C5:過濾模塊對(duì)具有有效數(shù)據(jù)標(biāo)記的多個(gè)業(yè)務(wù)數(shù)據(jù)形成有效數(shù)據(jù)隊(duì)列,執(zhí)行C6:
C6:分類模塊對(duì)所述有效數(shù)據(jù)隊(duì)列中的多個(gè)業(yè)務(wù)數(shù)據(jù)按照預(yù)設(shè)分類規(guī)則進(jìn)行分類并將分類后的業(yè)務(wù)數(shù)據(jù)存儲(chǔ)至第二緩存單元;
在步驟C1之后,所述緩存處理單元的工作流程還具有如下步驟:
清理模塊按照預(yù)設(shè)清理周期對(duì)第一緩存單元中存儲(chǔ)的各業(yè)務(wù)數(shù)據(jù)的標(biāo)記進(jìn)行檢測(cè),并將標(biāo)記為已處理的業(yè)務(wù)數(shù)據(jù)從第一緩存單元中清除;
進(jìn)一步地,所述信息存儲(chǔ)單元的工作流程如下:
D1:壓縮模塊按照預(yù)設(shè)提取周期從所述第二緩存單元中提取業(yè)務(wù)數(shù)據(jù),執(zhí)行D2;
D2:壓縮模塊將已提取的符合數(shù)據(jù)抽樣間隔要求的業(yè)務(wù)數(shù)據(jù)形成業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列,執(zhí)行D3;
D3:壓縮模塊按照重復(fù)數(shù)據(jù)判斷規(guī)則判斷業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列中的相鄰數(shù)據(jù)是否屬于重復(fù)業(yè)務(wù)數(shù)據(jù),是則執(zhí)行D4,否則執(zhí)行D5;
D4:記錄所述重復(fù)業(yè)務(wù)數(shù)據(jù)中的其中一個(gè)的數(shù)據(jù)值和數(shù)據(jù)接收時(shí)間戳信息,執(zhí)行D6;
D5:記錄非重復(fù)業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)值和數(shù)據(jù)接收時(shí)間戳信息,執(zhí)行D6;
D6:壓縮模塊根據(jù)所記錄的業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)值和數(shù)據(jù)接收時(shí)間戳信息生成非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列,執(zhí)行D7;
D7:對(duì)于已被壓縮模塊記錄下數(shù)據(jù)值的業(yè)務(wù)數(shù)據(jù),壓縮模塊將第二緩存單元中存儲(chǔ)的相對(duì)應(yīng)的業(yè)務(wù)數(shù)據(jù)標(biāo)記為已處理,同時(shí)寫入模塊按照預(yù)設(shè)打包周期對(duì)所述非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列進(jìn)行打包,并將打包后的業(yè)務(wù)數(shù)據(jù)批量保存到數(shù)據(jù)庫(kù),執(zhí)行D8;
D8:寫入模塊將第二緩存單元中被標(biāo)記為已處理的業(yè)務(wù)數(shù)據(jù)進(jìn)行清除。
一種數(shù)據(jù)采集方法,包括如下步驟:
步驟1:下位機(jī)按照一定業(yè)務(wù)數(shù)據(jù)上報(bào)周期向上位機(jī)上報(bào)業(yè)務(wù)數(shù)據(jù),執(zhí)行步驟2;
步驟2:上位機(jī)通過通訊單元接收下位機(jī)上報(bào)的業(yè)務(wù)數(shù)據(jù)并傳輸給數(shù)據(jù)預(yù)處理單元,執(zhí)行步驟3;
步驟3:上位機(jī)的數(shù)據(jù)預(yù)處理單元通過匯聚模塊對(duì)每條業(yè)務(wù)數(shù)據(jù)添加相應(yīng)的下位機(jī)設(shè)備標(biāo)識(shí)符信息和數(shù)據(jù)接收時(shí)間戳信息后發(fā)送給數(shù)據(jù)預(yù)處理單元所包括的分發(fā)模塊,執(zhí)行步驟4;
步驟4:分發(fā)模塊將匯聚模塊處理后的業(yè)務(wù)數(shù)據(jù)保存至上位機(jī)的第一緩存單元,執(zhí)行步驟5;
步驟5:上位機(jī)的緩存處理單元通過過濾模塊定時(shí)從第一緩存單元中批量提取業(yè)務(wù)數(shù)據(jù),并將第一緩存單元中保存的已被提取過的業(yè)務(wù)數(shù)據(jù)標(biāo)記為已處理,執(zhí)行步驟6;
步驟6:過濾模塊對(duì)所提取的業(yè)務(wù)數(shù)據(jù)進(jìn)行有效性判斷,根據(jù)業(yè)務(wù)數(shù)據(jù)有效性判斷結(jié)果對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行有效數(shù)據(jù)或無效數(shù)據(jù)標(biāo)記,以及對(duì)具有有效數(shù)據(jù)標(biāo)記的多個(gè)業(yè)務(wù)數(shù)據(jù)形成有效數(shù)據(jù)隊(duì)列,執(zhí)行步驟7;
步驟7:上位機(jī)的緩存處理單元通過分類模塊對(duì)所述有效數(shù)據(jù)隊(duì)列中的多個(gè)業(yè)務(wù)數(shù)據(jù)按照預(yù)設(shè)分類規(guī)則進(jìn)行分類并將分類后的業(yè)務(wù)數(shù)據(jù)存儲(chǔ)至上位機(jī)的第二緩存單元,執(zhí)行步驟8;
步驟8:上位機(jī)的緩存處理單元通過清理模塊按照預(yù)設(shè)清理周期對(duì)第一緩存單元中存儲(chǔ)的各業(yè)務(wù)數(shù)據(jù)的標(biāo)記進(jìn)行檢測(cè),并將標(biāo)記為已處理的業(yè)務(wù)數(shù)據(jù)從第一緩存單元中清除,執(zhí)行步驟9;
步驟9:上位機(jī)的信息存儲(chǔ)單元通過壓縮模塊按照預(yù)設(shè)提取周期從所述第二緩存單元中提取業(yè)務(wù)數(shù)據(jù),并將已提取的符合數(shù)據(jù)抽樣間隔要求的業(yè)務(wù)數(shù)據(jù)形成業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列,執(zhí)行步驟10;
步驟10:壓縮模塊對(duì)所述業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列進(jìn)行重復(fù)業(yè)務(wù)數(shù)據(jù)處理工作后生成非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列,執(zhí)行步驟11;
步驟11:上位機(jī)的信息存儲(chǔ)單元通過寫入模塊按照預(yù)設(shè)打包周期對(duì)所述非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列進(jìn)行打包,并將打包后的業(yè)務(wù)數(shù)據(jù)批量保存到數(shù)據(jù)庫(kù)。
由于采用了上述技術(shù)方案,本發(fā)明提供的數(shù)據(jù)采集系統(tǒng)及其方法,適用但不限于能源、建筑和農(nóng)業(yè)等有大量高頻數(shù)據(jù)采集需求的行業(yè);通過本發(fā)明所述數(shù)據(jù)采集系統(tǒng)及其方法可以將下位機(jī)上報(bào)的業(yè)務(wù)數(shù)據(jù)進(jìn)行預(yù)處理、有效性檢驗(yàn)、數(shù)據(jù)分類、數(shù)據(jù)壓縮和批量插入數(shù)據(jù)庫(kù)等一系列的操作,海量數(shù)據(jù)通過此種方式進(jìn)行高效采集處理,實(shí)現(xiàn)在不增加或者僅增加少量硬件投入的情況下,便能滿足高效的數(shù)據(jù)采集和處理需求。
附圖說明
圖1是本發(fā)明所述數(shù)據(jù)采集系統(tǒng)的結(jié)構(gòu)框圖;
圖2是本發(fā)明所述數(shù)據(jù)預(yù)處理單元的結(jié)構(gòu)框圖;
圖3是本發(fā)明所述緩存處理單元的結(jié)構(gòu)框圖;
圖4是本發(fā)明所述信息存儲(chǔ)單元的結(jié)構(gòu)框圖;
圖5是本發(fā)明所述通訊單元的工作流程圖;
圖6是本發(fā)明所述數(shù)據(jù)預(yù)處理單元的工作流程圖;
圖7是本發(fā)明所述緩存處理單元的工作流程圖;
圖8是本發(fā)明所述信息存儲(chǔ)單元的工作流程圖;
圖9是本發(fā)明所述方法的流程圖。
具體實(shí)施方式
如圖1、圖2、圖3、圖4、圖5、圖6、圖7和圖8所示的一種數(shù)據(jù)采集系統(tǒng),包括:至少一個(gè)下位機(jī)、上位機(jī)、以及與上位機(jī)相連接的數(shù)據(jù)庫(kù);所述上位機(jī)包括通訊裝置和信息采集裝置;
所述通訊裝置包括:
與所述下位機(jī)相連接的通訊單元;所述通訊單元用于接收下位機(jī)上報(bào)的業(yè)務(wù)數(shù)據(jù)并傳輸給數(shù)據(jù)預(yù)處理單元;
與所述通訊單元相連接的數(shù)據(jù)預(yù)處理單元;所述數(shù)據(jù)預(yù)處理單元包括匯聚模塊和與所述匯聚模塊相連接的分發(fā)模塊;所述匯聚模塊用于對(duì)每條業(yè)務(wù)數(shù)據(jù)添加相應(yīng)的下位機(jī)設(shè)備標(biāo)識(shí)符信息和數(shù)據(jù)接收時(shí)間戳信息后發(fā)送給分發(fā)模塊;所述分發(fā)模塊用于將所述匯聚模塊處理后的業(yè)務(wù)數(shù)據(jù)保存至第一緩存單元;
所述信息采集裝置包括:
與所述數(shù)據(jù)預(yù)處理單元相連接的第一緩存單元;
與所述第一緩存單元相連接的緩存處理單元;所述緩存處理單元包括過濾模塊、與所述過濾模塊相連接的分類模塊和清理模塊;所述過濾模塊用于定時(shí)從所述第一緩存單元中批量提取業(yè)務(wù)數(shù)據(jù),并將第一緩存單元中保存的已被提取過的業(yè)務(wù)數(shù)據(jù)標(biāo)記為已處理,同時(shí)對(duì)所提取的業(yè)務(wù)數(shù)據(jù)進(jìn)行有效性判斷,根據(jù)業(yè)務(wù)數(shù)據(jù)有效性判斷結(jié)果對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行有效數(shù)據(jù)或無效數(shù)據(jù)標(biāo)記,以及對(duì)具有有效數(shù)據(jù)標(biāo)記的多個(gè)業(yè)務(wù)數(shù)據(jù)形成有效數(shù)據(jù)隊(duì)列;所述分類模塊用于對(duì)所述有效數(shù)據(jù)隊(duì)列中的多個(gè)業(yè)務(wù)數(shù)據(jù)按照預(yù)設(shè)分類規(guī)則進(jìn)行分類并將分類后的業(yè)務(wù)數(shù)據(jù)存儲(chǔ)至第二緩存單元;所述清理模塊用于按照預(yù)設(shè)清理周期對(duì)第一緩存單元中存儲(chǔ)的各業(yè)務(wù)數(shù)據(jù)的標(biāo)記進(jìn)行檢測(cè),并將標(biāo)記為已處理的業(yè)務(wù)數(shù)據(jù)從第一緩存單元中清除;
與所述緩存處理單元相連接的第二緩存單元;
與第二緩存單元相連接的信息存儲(chǔ)單元;所述信息存儲(chǔ)單元包括壓縮模塊和與所述壓縮模塊相連接的寫入模塊;所述壓縮模塊用于按照預(yù)設(shè)提取周期從所述第二緩存單元中提取業(yè)務(wù)數(shù)據(jù),并將已提取的符合數(shù)據(jù)抽樣間隔要求的業(yè)務(wù)數(shù)據(jù)形成業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列,對(duì)所述業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列進(jìn)行重復(fù)業(yè)務(wù)數(shù)據(jù)處理工作后生成非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列;所述寫入模塊按照預(yù)設(shè)打包周期對(duì)所述非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列進(jìn)行打包,并將打包后的業(yè)務(wù)數(shù)據(jù)批量保存到數(shù)據(jù)庫(kù);
進(jìn)一步地,通訊單元還用于檢測(cè)上位機(jī)與下位機(jī)之間的通訊狀態(tài)、以及檢測(cè)并更新下位機(jī)的工作狀態(tài);
進(jìn)一步地,所述數(shù)據(jù)預(yù)處理單元還包括與所述分發(fā)模塊相連接,用于按照預(yù)設(shè)展示周期對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行展示的實(shí)時(shí)展示模塊;所述分發(fā)模塊將所述匯聚模塊處理后的業(yè)務(wù)數(shù)據(jù)按照預(yù)設(shè)分發(fā)周期分發(fā)給所述實(shí)時(shí)展示模塊;
進(jìn)一步地,所述過濾模塊對(duì)所提取的業(yè)務(wù)數(shù)據(jù)進(jìn)行有效性判斷的過程為:判斷所提取的業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)號(hào)是否為感興趣的數(shù)據(jù)標(biāo)識(shí)號(hào),是則將該業(yè)務(wù)數(shù)據(jù)標(biāo)記為有效數(shù)據(jù),否則將該業(yè)務(wù)數(shù)據(jù)標(biāo)記為無效數(shù)據(jù);
進(jìn)一步地,
所述壓縮模塊對(duì)所述業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列進(jìn)行重復(fù)業(yè)務(wù)數(shù)據(jù)處理工作的具體過程為:壓縮模塊按照重復(fù)數(shù)據(jù)判斷規(guī)則判斷業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列中的相鄰數(shù)據(jù)是否屬于重復(fù)業(yè)務(wù)數(shù)據(jù),是則記錄所述重復(fù)業(yè)務(wù)數(shù)據(jù)中的其中一個(gè)的數(shù)據(jù)值和數(shù)據(jù)接收時(shí)間戳信息,否則記錄非重復(fù)業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)值和數(shù)據(jù)接收時(shí)間戳信息;
所述壓縮模塊根據(jù)所記錄的業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)值和數(shù)據(jù)接收時(shí)間戳信息生成非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列;對(duì)于已被壓縮模塊記錄下數(shù)據(jù)值的業(yè)務(wù)數(shù)據(jù),所述壓縮模塊將第二緩存單元中存儲(chǔ)的相對(duì)應(yīng)的業(yè)務(wù)數(shù)據(jù)標(biāo)記為已處理;所述寫入模塊在將打包后的非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列批量保存到數(shù)據(jù)庫(kù)之后,將第二緩存單元中被標(biāo)記為已處理的業(yè)務(wù)數(shù)據(jù)進(jìn)行清除;
進(jìn)一步地,所述通訊單元的工作流程如下:
A1:按照預(yù)設(shè)檢測(cè)周期對(duì)上位機(jī)與下位機(jī)之間的通訊狀態(tài)進(jìn)行檢測(cè),執(zhí)行A2;
A2:判斷上位機(jī)與下位機(jī)之間是否均能夠正常通訊?是則執(zhí)行A4,否則執(zhí)行A3;
A3:更新下位機(jī)的工作狀態(tài)為離線狀態(tài),執(zhí)行A7;
A4:判斷下位機(jī)的工作狀態(tài)是否正常?是則執(zhí)行A5,否則執(zhí)行A6;
A5:更新下位機(jī)的工作狀態(tài)為正常狀態(tài),執(zhí)行A7;
A6:更新下位機(jī)的工作狀態(tài)為故障狀態(tài),執(zhí)行A7;
A7:待下一預(yù)設(shè)檢測(cè)周期;
進(jìn)一步地,所述數(shù)據(jù)預(yù)處理單元的工作流程如下:
B1:匯聚模塊對(duì)接收到的每條業(yè)務(wù)數(shù)據(jù)添加相應(yīng)的下位機(jī)設(shè)備標(biāo)識(shí)符信息和數(shù)據(jù)接收時(shí)間戳信息后發(fā)送給分發(fā)模塊,執(zhí)行B2;
B2:分發(fā)模塊將匯聚模塊處理后的業(yè)務(wù)數(shù)據(jù)保存至第一緩存單元,執(zhí)行B3;
B3:分發(fā)模塊將匯聚模塊處理后的業(yè)務(wù)數(shù)據(jù)按照預(yù)設(shè)分發(fā)周期分發(fā)給實(shí)時(shí)展示模塊,執(zhí)行B4;
B4:實(shí)時(shí)展示模塊按照預(yù)設(shè)展示周期對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行展示;
在所述數(shù)據(jù)預(yù)處理單元的工作流程之前還具有如下工作流程:
上位機(jī)開啟數(shù)據(jù)接收狀態(tài),下位機(jī)向上位機(jī)上報(bào)業(yè)務(wù)數(shù)據(jù);
進(jìn)一步地,所述緩存處理單元的工作流程如下:
C1:過濾模塊定時(shí)從第一緩存單元中批量提取業(yè)務(wù)數(shù)據(jù),并將第一緩存單元中保存的已被提取過的業(yè)務(wù)數(shù)據(jù)標(biāo)記為已處理,執(zhí)行C2;
C2:過濾模塊判斷所提取的業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)號(hào)是否為感興趣的數(shù)據(jù)標(biāo)識(shí)號(hào),是則執(zhí)行C3,否則執(zhí)行C4;
C3:過濾模塊將該業(yè)務(wù)數(shù)據(jù)標(biāo)記為有效數(shù)據(jù),執(zhí)行C5;
C4:過濾模塊將該業(yè)務(wù)數(shù)據(jù)標(biāo)記為無效數(shù)據(jù);
C5:過濾模塊對(duì)具有有效數(shù)據(jù)標(biāo)記的多個(gè)業(yè)務(wù)數(shù)據(jù)形成有效數(shù)據(jù)隊(duì)列,執(zhí)行C6:
C6:分類模塊對(duì)所述有效數(shù)據(jù)隊(duì)列中的多個(gè)業(yè)務(wù)數(shù)據(jù)按照預(yù)設(shè)分類規(guī)則進(jìn)行分類并將分類后的業(yè)務(wù)數(shù)據(jù)存儲(chǔ)至第二緩存單元;
在步驟C1之后,所述緩存處理單元的工作流程還具有如下步驟:
清理模塊按照預(yù)設(shè)清理周期對(duì)第一緩存單元中存儲(chǔ)的各業(yè)務(wù)數(shù)據(jù)的標(biāo)記進(jìn)行檢測(cè),并將標(biāo)記為已處理的業(yè)務(wù)數(shù)據(jù)從第一緩存單元中清除;
進(jìn)一步地,所述信息存儲(chǔ)單元的工作流程如下:
D1:壓縮模塊按照預(yù)設(shè)提取周期從所述第二緩存單元中提取業(yè)務(wù)數(shù)據(jù),執(zhí)行D2;
D2:壓縮模塊將已提取的符合數(shù)據(jù)抽樣間隔要求的業(yè)務(wù)數(shù)據(jù)形成業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列,執(zhí)行D3;
D3:壓縮模塊按照重復(fù)數(shù)據(jù)判斷規(guī)則判斷業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列中的相鄰數(shù)據(jù)是否屬于重復(fù)業(yè)務(wù)數(shù)據(jù),是則執(zhí)行D4,否則執(zhí)行D5;
D4:記錄所述重復(fù)業(yè)務(wù)數(shù)據(jù)中的其中一個(gè)的數(shù)據(jù)值和數(shù)據(jù)接收時(shí)間戳信息,執(zhí)行D6;
D5:記錄非重復(fù)業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)值和數(shù)據(jù)接收時(shí)間戳信息,執(zhí)行D6;
D6:壓縮模塊根據(jù)所記錄的業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)值和數(shù)據(jù)接收時(shí)間戳信息生成非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列,執(zhí)行D7;
D7:對(duì)于已被壓縮模塊記錄下數(shù)據(jù)值的業(yè)務(wù)數(shù)據(jù),壓縮模塊將第二緩存單元中存儲(chǔ)的相對(duì)應(yīng)的業(yè)務(wù)數(shù)據(jù)標(biāo)記為已處理,同時(shí)寫入模塊按照預(yù)設(shè)打包周期對(duì)所述非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列進(jìn)行打包,并將打包后的業(yè)務(wù)數(shù)據(jù)批量保存到數(shù)據(jù)庫(kù),執(zhí)行D8;
D8:寫入模塊將第二緩存單元中被標(biāo)記為已處理的業(yè)務(wù)數(shù)據(jù)進(jìn)行清除。
如圖9所示的一種數(shù)據(jù)采集方法,包括如下步驟:
一種數(shù)據(jù)采集方法,包括如下步驟:
步驟1:下位機(jī)按照一定業(yè)務(wù)數(shù)據(jù)上報(bào)周期向上位機(jī)上報(bào)業(yè)務(wù)數(shù)據(jù),執(zhí)行步驟2;
步驟2:上位機(jī)通過通訊單元接收下位機(jī)上報(bào)的業(yè)務(wù)數(shù)據(jù)并傳輸給數(shù)據(jù)預(yù)處理單元,執(zhí)行步驟3;
步驟3:上位機(jī)的數(shù)據(jù)預(yù)處理單元通過匯聚模塊對(duì)每條業(yè)務(wù)數(shù)據(jù)添加相應(yīng)的下位機(jī)設(shè)備標(biāo)識(shí)符信息和數(shù)據(jù)接收時(shí)間戳信息后發(fā)送給數(shù)據(jù)預(yù)處理單元所包括的分發(fā)模塊,執(zhí)行步驟4;
步驟4:分發(fā)模塊將匯聚模塊處理后的業(yè)務(wù)數(shù)據(jù)保存至上位機(jī)的第一緩存單元,執(zhí)行步驟5;
步驟5:上位機(jī)的緩存處理單元通過過濾模塊定時(shí)從第一緩存單元中批量提取業(yè)務(wù)數(shù)據(jù),并將第一緩存單元中保存的已被提取過的業(yè)務(wù)數(shù)據(jù)標(biāo)記為已處理,執(zhí)行步驟6;
步驟6:過濾模塊對(duì)所提取的業(yè)務(wù)數(shù)據(jù)進(jìn)行有效性判斷,根據(jù)業(yè)務(wù)數(shù)據(jù)有效性判斷結(jié)果對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行有效數(shù)據(jù)或無效數(shù)據(jù)標(biāo)記,以及對(duì)具有有效數(shù)據(jù)標(biāo)記的多個(gè)業(yè)務(wù)數(shù)據(jù)形成有效數(shù)據(jù)隊(duì)列,執(zhí)行步驟7;
步驟7:上位機(jī)的緩存處理單元通過分類模塊對(duì)所述有效數(shù)據(jù)隊(duì)列中的多個(gè)業(yè)務(wù)數(shù)據(jù)按照預(yù)設(shè)分類規(guī)則進(jìn)行分類并將分類后的業(yè)務(wù)數(shù)據(jù)存儲(chǔ)至上位機(jī)的第二緩存單元,執(zhí)行步驟8;
步驟8:上位機(jī)的緩存處理單元通過清理模塊按照預(yù)設(shè)清理周期對(duì)第一緩存單元中存儲(chǔ)的各業(yè)務(wù)數(shù)據(jù)的標(biāo)記進(jìn)行檢測(cè),并將標(biāo)記為已處理的業(yè)務(wù)數(shù)據(jù)從第一緩存單元中清除,執(zhí)行步驟9;
步驟9:上位機(jī)的信息存儲(chǔ)單元通過壓縮模塊按照預(yù)設(shè)提取周期從所述第二緩存單元中提取業(yè)務(wù)數(shù)據(jù),并將已提取的符合數(shù)據(jù)抽樣間隔要求的業(yè)務(wù)數(shù)據(jù)形成業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列,執(zhí)行步驟10;
步驟10:壓縮模塊對(duì)所述業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列進(jìn)行重復(fù)業(yè)務(wù)數(shù)據(jù)處理工作后生成非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列,執(zhí)行步驟11;
步驟11:上位機(jī)的信息存儲(chǔ)單元通過寫入模塊按照預(yù)設(shè)打包周期對(duì)所述非重復(fù)業(yè)務(wù)數(shù)據(jù)隊(duì)列進(jìn)行打包,并將打包后的業(yè)務(wù)數(shù)據(jù)批量保存到數(shù)據(jù)庫(kù)。
在所述通訊單元執(zhí)行步驟A1之前,其還具有如下工作流程:
①添加下位機(jī)列表并記錄每一下位機(jī)的屬性數(shù)據(jù),執(zhí)行②;
②為每一下位機(jī)分配上位機(jī),執(zhí)行③;
③判斷所述上位機(jī)是否能夠負(fù)載所轄下位機(jī),是則執(zhí)行④,否則執(zhí)行⑤;
④給每一下位機(jī)發(fā)送通訊指令,執(zhí)行⑥;
⑤針對(duì)不能負(fù)載所轄下位機(jī)的上位機(jī)進(jìn)行上位機(jī)增加或調(diào)配,返回③;
⑥針對(duì)每一下位機(jī),均執(zhí)行A1至A7;
本發(fā)明所述通訊單元還用于記錄下位機(jī)的屬性數(shù)據(jù)、設(shè)置下位機(jī)的業(yè)務(wù)數(shù)據(jù)上報(bào)周期、為每一下位機(jī)分配上位機(jī)、控制上位機(jī)處于數(shù)據(jù)接收狀態(tài)或數(shù)據(jù)不接收狀態(tài)、以及設(shè)置業(yè)務(wù)數(shù)據(jù)展示周期;本發(fā)明所述系統(tǒng)包括至少一個(gè)下位機(jī),當(dāng)下位機(jī)有多個(gè)時(shí),可以直接采用下位機(jī)集群,所述下位機(jī)集群是指各種業(yè)務(wù)系統(tǒng)的數(shù)據(jù)采集設(shè)備,一般以大量設(shè)備集群的形態(tài)出現(xiàn),沒有上限要求;本發(fā)明所述數(shù)據(jù)抽樣間隔要求可以由用戶通過上位機(jī)具有的人機(jī)交互界面來設(shè)定;壓縮模塊按照預(yù)設(shè)提取周期從第二緩存單元中提取業(yè)務(wù)數(shù)據(jù),根據(jù)所述預(yù)設(shè)提取周期能夠獲知相鄰業(yè)務(wù)數(shù)據(jù)提取操作之間的時(shí)間間隔,當(dāng)相鄰業(yè)務(wù)數(shù)據(jù)提取操作之間的時(shí)間間隔小于數(shù)據(jù)抽樣間隔要求時(shí),即認(rèn)為被壓縮模塊提取的業(yè)務(wù)數(shù)據(jù)符合數(shù)據(jù)抽樣間隔要求,壓縮模塊將按照業(yè)務(wù)數(shù)據(jù)的提取順序依次將業(yè)務(wù)數(shù)據(jù)存入業(yè)務(wù)數(shù)據(jù)待處理隊(duì)列中;本發(fā)明所述下位機(jī)可以按照一定的業(yè)務(wù)數(shù)據(jù)上報(bào)周期將業(yè)務(wù)數(shù)據(jù)上報(bào)給上位機(jī);各業(yè)務(wù)數(shù)據(jù)在上報(bào)之前均攜帶有唯一的數(shù)據(jù)標(biāo)識(shí)號(hào);過濾模塊對(duì)所提取的業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)號(hào)是否為感興趣的數(shù)據(jù)標(biāo)識(shí)號(hào)進(jìn)行判斷,是則將該業(yè)務(wù)數(shù)據(jù)標(biāo)記為有效數(shù)據(jù),否則將該業(yè)務(wù)數(shù)據(jù)標(biāo)記為無效數(shù)據(jù),其中,所述感興趣的數(shù)據(jù)標(biāo)識(shí)號(hào)的確定規(guī)則可事先進(jìn)行預(yù)設(shè),比如通過配置文件來定義;本發(fā)明所述數(shù)據(jù)接收時(shí)間戳信息指的是上位機(jī)即所述通訊單元接收到業(yè)務(wù)數(shù)據(jù)的時(shí)間戳信息;本發(fā)明所述重復(fù)數(shù)據(jù)判斷規(guī)則可以為相鄰業(yè)務(wù)數(shù)據(jù)的數(shù)值是否相等、相鄰業(yè)務(wù)數(shù)據(jù)之間是否遵循正弦規(guī)律或余弦規(guī)律;所述下位機(jī)的屬性數(shù)據(jù)至少包括下位機(jī)的設(shè)備標(biāo)識(shí)符(ID)、IP地址和端口號(hào);所述預(yù)設(shè)分類規(guī)則可以用于區(qū)分業(yè)務(wù)數(shù)據(jù)是由哪一下位機(jī)上報(bào)的哪種具體業(yè)務(wù)數(shù)據(jù),以及起到將業(yè)務(wù)數(shù)據(jù)按照不同應(yīng)用用途進(jìn)行分類的作用;這里的預(yù)設(shè)分類規(guī)則可以為不同的編碼規(guī)則;所述第一緩存單元和第二緩存單元是指能夠臨時(shí)存儲(chǔ)數(shù)據(jù)的高速存儲(chǔ)裝置;本發(fā)明通訊單元可以為每一下位機(jī)分配上位機(jī),具體地,根據(jù)通訊單元根據(jù)上位機(jī)的負(fù)載能力和數(shù)據(jù)情況進(jìn)行上位機(jī)分配;本發(fā)明所述匯聚模塊用于對(duì)每條業(yè)務(wù)數(shù)據(jù)添加相應(yīng)的下位機(jī)設(shè)備標(biāo)識(shí)符信息和數(shù)據(jù)接收時(shí)間戳信息后發(fā)送給分發(fā)模塊;下位機(jī)上報(bào)的每條業(yè)務(wù)數(shù)據(jù)至少包括字段名、數(shù)據(jù)值、所屬設(shè)備、所屬部件和所屬模塊;這些業(yè)務(wù)數(shù)據(jù)一般是高頻率上報(bào)且數(shù)量巨大;實(shí)時(shí)展示模塊按照預(yù)設(shè)展示周期對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行展示,具體地,將業(yè)務(wù)數(shù)據(jù)以可視化的形式展示在顯示器或其它監(jiān)視設(shè)備中;所述分類模塊用于對(duì)所述有效數(shù)據(jù)隊(duì)列中的多個(gè)業(yè)務(wù)數(shù)據(jù)按照預(yù)設(shè)分類規(guī)則進(jìn)行分類并將分類后的業(yè)務(wù)數(shù)據(jù)存儲(chǔ)至第二緩存單元,具體地,所述分類模塊會(huì)對(duì)分類后的業(yè)務(wù)數(shù)據(jù)添加分類標(biāo)識(shí);本發(fā)明業(yè)務(wù)數(shù)據(jù)經(jīng)過所述壓縮模塊的處理,能夠達(dá)到無損壓縮數(shù)據(jù)結(jié)構(gòu)的目的;所述下位機(jī)的業(yè)務(wù)數(shù)據(jù)上報(bào)周期可以為1mS、20mS、500mS、1S等。
本發(fā)明數(shù)據(jù)采集系統(tǒng)及其方法屬于物聯(lián)網(wǎng)大數(shù)據(jù)采集領(lǐng)域,適用但不限于能源、建筑和農(nóng)業(yè)等有大量高頻數(shù)據(jù)采集需求的行業(yè);通過本發(fā)明所述數(shù)據(jù)采集系統(tǒng)及其方法可以將下位機(jī)上報(bào)的業(yè)務(wù)數(shù)據(jù)進(jìn)行預(yù)處理、有效性檢驗(yàn)、數(shù)據(jù)分類、數(shù)據(jù)壓縮和批量插入數(shù)據(jù)庫(kù)等一系列的操作,海量數(shù)據(jù)通過此種方式進(jìn)行高效采集處理,本發(fā)明所述系統(tǒng)可以實(shí)現(xiàn)1臺(tái)上位機(jī)并發(fā)接入6至8臺(tái)下位機(jī),實(shí)現(xiàn)在不增加或者僅增加少量硬件投入的情況下,便能滿足高效的數(shù)據(jù)采集和處理需求。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),根據(jù)本發(fā)明的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。