一種海量物聯(lián)網(wǎng)感知數(shù)據(jù)的接入及標(biāo)準(zhǔn)化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于物聯(lián)網(wǎng)技術(shù)領(lǐng)域,涉及一種物聯(lián)網(wǎng)海量感知異構(gòu)數(shù)據(jù)的接入及標(biāo)準(zhǔn)化方法。
【背景技術(shù)】
[0002]物聯(lián)網(wǎng)領(lǐng)域中,為實(shí)現(xiàn)物物相連,需要通過(guò)射頻識(shí)別(RFID)、紅外感應(yīng)器、全球定位系統(tǒng)、激光掃描器等信息傳感設(shè)備,對(duì)物品信息進(jìn)行采集、處理。就要面臨海量異構(gòu)感知數(shù)據(jù)的接入處理,這些數(shù)據(jù)不僅數(shù)據(jù)類型異構(gòu),如報(bào)警、定位、人像等不同的數(shù)據(jù)信息,而且同種數(shù)據(jù)類型由于被應(yīng)用的領(lǐng)域或分屬的類別不同也有不同的數(shù)據(jù)格式,如井蓋數(shù)據(jù)中聯(lián)通井蓋與交管井蓋的數(shù)據(jù)類型就有所差異。這些異構(gòu)數(shù)據(jù)導(dǎo)致了系統(tǒng)間信息交互和互操作非常困難,數(shù)據(jù)更新不能同步,并且在開(kāi)發(fā)過(guò)程中,程序重復(fù)度較高,人員投入量大,維護(hù)困難等問(wèn)題。
[0003]目前在海量數(shù)據(jù)通信中通常采用多線程技術(shù),并存在許多封裝好的多線程庫(kù),但這些多線程庫(kù)在使用過(guò)程中亦存在一些問(wèn)題。例如Apple公司DarwinInclude,主要是針對(duì)流媒體服務(wù)器的庫(kù)文件,一方面其對(duì)Socket的封裝性較低,對(duì)開(kāi)發(fā)人員不夠簡(jiǎn)化;另一方面,該庫(kù)并不是針對(duì)安保領(lǐng)域中海量數(shù)據(jù)的接入,因此在業(yè)務(wù)需求上存在大量二次重復(fù)開(kāi)發(fā),增加了人力與時(shí)間成本。目前普遍存在的使用xml技術(shù)來(lái)解決異構(gòu)數(shù)據(jù)的差異性,但是xml技術(shù)在解決這種實(shí)時(shí)的海量的異構(gòu)數(shù)據(jù)接入方面存在數(shù)據(jù)量大,時(shí)間較慢、并且較為復(fù)雜等缺點(diǎn)。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是提供一種海量異構(gòu)數(shù)據(jù)的接入及標(biāo)準(zhǔn)化方法的解決方案,該方案主要面向開(kāi)發(fā)人員,解決目前海量異構(gòu)數(shù)據(jù)接入開(kāi)發(fā)周期長(zhǎng),開(kāi)發(fā)過(guò)程復(fù)雜,重復(fù)性開(kāi)發(fā)過(guò)多等問(wèn)題。
[0005]本發(fā)明的技術(shù)方案如下:
[0006]一種海量物聯(lián)網(wǎng)感知數(shù)據(jù)的接入及標(biāo)準(zhǔn)化方法,其特征在于:在應(yīng)用系統(tǒng)中設(shè)置兩個(gè)模塊,包括通信適配模塊和數(shù)據(jù)標(biāo)準(zhǔn)化模塊,通信適配模塊與發(fā)送感知數(shù)據(jù)的前端系統(tǒng)建立連接,接收數(shù)據(jù),將接收到的數(shù)據(jù)交予數(shù)據(jù)標(biāo)準(zhǔn)化模塊進(jìn)行處理,數(shù)據(jù)標(biāo)準(zhǔn)化模塊將處理過(guò)的數(shù)據(jù)返回給通信適配模塊,由通信模塊將標(biāo)準(zhǔn)化數(shù)據(jù)發(fā)送給需要的外部系統(tǒng)。
[0007]所述通信適配模塊主要包括通信適配配置工具和通信適配服務(wù)程序兩個(gè)部分,其中通信適配配置工具主要負(fù)責(zé)為用戶提供界面化操作,配置與前端系統(tǒng)、外部系統(tǒng)建立鏈接的相關(guān)信息,生成配置文件,以供通信適配服務(wù)程序初始化讀取,通信適配服務(wù)程序采用微軟提供的完成端口通信模型,并在其上進(jìn)行滿足實(shí)際需要的改進(jìn)與封裝;
[0008]所述數(shù)據(jù)標(biāo)準(zhǔn)化模塊分為數(shù)據(jù)標(biāo)準(zhǔn)化配置工具和數(shù)據(jù)標(biāo)準(zhǔn)化服務(wù)程序兩個(gè)部分,其中數(shù)據(jù)標(biāo)準(zhǔn)化配置工具主要負(fù)責(zé)為用戶提供界面化操作,配置與前端系統(tǒng)、外部系統(tǒng)之間交換的數(shù)據(jù)類型、數(shù)據(jù)格式以及數(shù)據(jù)標(biāo)準(zhǔn)化的規(guī)則,生成配置文件,以供數(shù)據(jù)標(biāo)準(zhǔn)化服務(wù)程序初始化讀取,數(shù)據(jù)標(biāo)準(zhǔn)化服務(wù)程序負(fù)責(zé)判斷數(shù)據(jù)類型和對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化。
[0009]本發(fā)明針對(duì)物聯(lián)網(wǎng)感知數(shù)據(jù)接入及標(biāo)準(zhǔn)化的開(kāi)發(fā)人員,通過(guò)配置工具靈活配置,設(shè)計(jì)通用的感知數(shù)據(jù)接入及標(biāo)準(zhǔn)化方法,解決針對(duì)每種感知數(shù)據(jù),都要開(kāi)發(fā)一個(gè)接入及標(biāo)準(zhǔn)化的程序的問(wèn)題。只需修改配置,就可以一個(gè)程序,多次使用。因此使得開(kāi)發(fā)過(guò)程更簡(jiǎn)單,開(kāi)發(fā)周期更短,維護(hù)更加簡(jiǎn)單。對(duì)非正常通信斷開(kāi)的鏈接,具有自動(dòng)重連功能。本方案使用標(biāo)準(zhǔn)化模塊解決數(shù)據(jù)異構(gòu)問(wèn)題,使程序擁有更好的可擴(kuò)展性和更快的運(yùn)行效果。
【附圖說(shuō)明】
[0010]圖1是感知數(shù)據(jù)接入及標(biāo)準(zhǔn)化構(gòu)成圖
[0011]圖2是感知數(shù)據(jù)接入及標(biāo)準(zhǔn)化應(yīng)用示意圖
【具體實(shí)施方式】
[0012]本發(fā)明主要有兩部分組成,如圖1所示,包括通信適配模塊和數(shù)據(jù)標(biāo)準(zhǔn)化模塊,通信適配模塊與發(fā)送感知數(shù)據(jù)的前端系統(tǒng)建立連接,接收數(shù)據(jù),將接收到的數(shù)據(jù)交予數(shù)據(jù)標(biāo)準(zhǔn)化模塊進(jìn)行處理,數(shù)據(jù)標(biāo)準(zhǔn)化模塊將處理過(guò)的數(shù)據(jù)返回給通信適配模塊,由通信模塊將標(biāo)準(zhǔn)化數(shù)據(jù)發(fā)送給需要的外部系統(tǒng),具體流程如圖2所示。
[0013]通信適配模塊:
[0014]主要負(fù)責(zé)與外部系統(tǒng)、前端系統(tǒng)建立鏈接,接收、發(fā)送數(shù)據(jù)并維護(hù)鏈路。通信適配模塊主要包括兩個(gè)部分:通信適配配置工具和通信適配服務(wù)程序。
[0015]通信適配配置工具:主要負(fù)責(zé)為用戶提供界面化操作,配置與前端系統(tǒng)、外部系統(tǒng)建立鏈接的相關(guān)信息,生成配置文件,以供通信適配服務(wù)程序初始化讀取。
[0016]通信適配服務(wù)程序:在實(shí)際應(yīng)用中,對(duì)通信適配模塊的可靠性與穩(wěn)定性要求較高,支持高并發(fā)的連接訪問(wèn)以及海量異構(gòu)數(shù)據(jù)的接入。為滿足這些要求,通信適配模塊采用微軟提供的完成端口通信模型,并在其上進(jìn)行滿足實(shí)際需要的改進(jìn)與封裝。
[0017]完成端口充分利用Windows內(nèi)核來(lái)進(jìn)行I/O的調(diào)度,是用于C / S通信模式(windows)中性能最好的網(wǎng)絡(luò)通信模型。因此,使用完成端口模型,在底層就保證系統(tǒng)的最優(yōu)性能。
[0018]線程封裝,基于完成端口通信模型,該模塊封裝的相關(guān)的線程有4種:使用者線程、管理線程、Ac^pt線程和工作線程。
[0019]使用者線程:通過(guò)調(diào)用Start / Stop / Send等組件方法操作組件的一個(gè)或多個(gè)線程,通常是程序的主線程或其它業(yè)務(wù)邏輯線程。
[0020]管理線程:主要實(shí)現(xiàn)作為客戶端套接字的定時(shí)重連,為實(shí)際應(yīng)用所設(shè)計(jì)。
[0021]Accept線程:使用AcceptExO接收客戶端連接請(qǐng)求并創(chuàng)建Client Socket的線程,將其獨(dú)立出來(lái),實(shí)現(xiàn)為單獨(dú)的線程將使組件的模塊劃分更清晰,更重要的是避免與業(yè)務(wù)邏輯和通信處理的相互影響??偸潜3侄鄠€(gè)套接字處于監(jiān)聽(tīng)狀態(tài),因此可同時(shí)接受多個(gè)客戶端的鏈接。Accept線程在初始化時(shí)建立一些套接字,用于監(jiān)聽(tīng)外部客戶端的鏈接,響應(yīng)主線程中的接受事件,若存在接受事件,Accept線程將建立新的套接字,用于和外部客戶端建立鏈接保持通信。
[0022]工作線程:使用GetQueuedComplet1nStatus O監(jiān)聽(tīng)網(wǎng)絡(luò)事件并處理網(wǎng)絡(luò)交互的多個(gè)線程,工作線程處理完網(wǎng)絡(luò)事件后會(huì)向上層應(yīng)用發(fā)送OnAcapt / OnSend /OnReceive等組件通知。工作線程的數(shù)量可以根據(jù)實(shí)際情況之行設(shè)置(通常建議為:CPUCoreNumber*2+2)。
[0023]如果上層應(yīng)用在接收到OnAccept/OnSend / OnReceive這些組件通知時(shí)直接進(jìn)行業(yè)務(wù)邏輯處理并在其中操作組件,則工作線程也成為了使用者線程。另外,如果要處理的業(yè)務(wù)邏輯比較耗時(shí),上層應(yīng)用應(yīng)該在接收到組件通知后交由其他線程處理。
[0024]心跳機(jī)制:因?yàn)橐紤]到一個(gè)服務(wù)器通常會(huì)連接多個(gè)客戶端,因此由用戶在應(yīng)用層自己實(shí)現(xiàn)心跳包,代碼較多且稍顯復(fù)雜,而利用TCP / IP協(xié)議層為內(nèi)置的Ke印Alive功能來(lái)實(shí)現(xiàn)心跳功能則簡(jiǎn)單得多。不論是服務(wù)端還是客戶端