邱祝禮,牛思先,田章武,唐文龍,蘇富斌
(百色學(xué)院信息工程學(xué)院 廣西 百色 533000)
物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,產(chǎn)生了大量的數(shù)據(jù),物聯(lián)網(wǎng)大數(shù)據(jù)的特征,使得傳統(tǒng)數(shù)據(jù)處理方式效率低下;同時(shí)由于聯(lián)網(wǎng)設(shè)備的異構(gòu)性,需要不同通信協(xié)議之間的轉(zhuǎn)換及統(tǒng)一。而通過網(wǎng)關(guān)程序開發(fā),可以轉(zhuǎn)換不同的協(xié)議,做到數(shù)據(jù)協(xié)議的統(tǒng)一。采用發(fā)布/訂閱模式的MQTT 協(xié)議,比較適合物聯(lián)網(wǎng)實(shí)時(shí)通信,通過ZigBee 與MQTT 的協(xié)議轉(zhuǎn)換以及ModBus 與MQTT 的協(xié)議轉(zhuǎn)換,可以解決多協(xié)議統(tǒng)一問題;而Flume日志采集工具由于其可靠性、Kafka 發(fā)布訂閱系統(tǒng)由于其高吞吐量,因此可以用來向大數(shù)據(jù)存儲(chǔ)體系傳輸數(shù)據(jù),從而為物聯(lián)網(wǎng)大數(shù)據(jù)存儲(chǔ)、分析、展示,設(shè)備控制做準(zhǔn)備。
物聯(lián)網(wǎng),是互聯(lián)網(wǎng)的延伸,是萬物互聯(lián)的網(wǎng)絡(luò)。通過網(wǎng)絡(luò)把各種傳感設(shè)備、射頻識(shí)別設(shè)備連接在一起,并把這些設(shè)備采集到的信息通過通信設(shè)備傳輸?shù)皆贫嘶蚍?wù)器,通過對信息的處理,實(shí)現(xiàn)設(shè)備識(shí)別、定位、監(jiān)控、管理的一種技術(shù)[1]。物聯(lián)網(wǎng)技術(shù)的核心是各種智能傳感器和低功耗的無線傳輸技術(shù),可分為感知層、通信網(wǎng)絡(luò)層和應(yīng)用層。
最早提出物聯(lián)網(wǎng)這一概念的是美國麻省理工學(xué)院的Kevin Ashton 等[2]。他在1999年研究RFID 與無線傳感網(wǎng)絡(luò)時(shí),希望通過計(jì)算機(jī)實(shí)現(xiàn)對物品自動(dòng)識(shí)別,于是成就了現(xiàn)在的物聯(lián)網(wǎng)行業(yè)。而首次明確提出物聯(lián)網(wǎng)這一概念的是國際電信聯(lián)盟(International Telecommunications Union,ITU)[3]。2009年IBM CEO 提出“智慧地球=物聯(lián)網(wǎng)+互聯(lián)網(wǎng)”這一理念。2010年我國再次強(qiáng)調(diào)并將“加快物聯(lián)網(wǎng)的研究發(fā)明”納入重點(diǎn)產(chǎn)業(yè)振興計(jì)劃。自此,國內(nèi)物聯(lián)網(wǎng)技術(shù)開啟了由研究到應(yīng)用的發(fā)展大幕,被列入國務(wù)院發(fā)展規(guī)劃綱要中[4-5]。
物聯(lián)網(wǎng)使得傳統(tǒng)設(shè)備不再孤立,設(shè)備接入網(wǎng)絡(luò)使得設(shè)備信息采集效率更高、設(shè)備的控制更加快速、準(zhǔn)確,能夠及時(shí)了解設(shè)備信息,更好地發(fā)揮設(shè)備的功能。隨著社會(huì)與技術(shù)的發(fā)展,物聯(lián)網(wǎng)必將深入影響人們的生活、工作、科研等。目前,物聯(lián)網(wǎng)已經(jīng)應(yīng)用于智慧城市、智慧園區(qū)、智能樓宇、智慧醫(yī)療、智慧運(yùn)維、智能家居、森林消防、數(shù)字車間等領(lǐng)域,并取得了較好的效果。
隨著物聯(lián)網(wǎng)的發(fā)展,獲得數(shù)據(jù)的渠道也越來越多,工業(yè)、農(nóng)業(yè)、服務(wù)業(yè)等領(lǐng)域都大量使用傳感器來感知環(huán)境的各種參數(shù)。這些信息被轉(zhuǎn)換成電信號(hào)后通過各類網(wǎng)絡(luò)傳送到上層應(yīng)用系統(tǒng)[8]。由于網(wǎng)絡(luò)中感知節(jié)點(diǎn)采集數(shù)據(jù)具有數(shù)據(jù)量大、速度快、實(shí)時(shí)產(chǎn)生、動(dòng)態(tài)變化等特點(diǎn)[1],又是異構(gòu)的,具有時(shí)效性[6],深入處理、挖掘這些海量數(shù)據(jù),使之反映出研究對象的本質(zhì)和規(guī)律,并能進(jìn)行學(xué)習(xí)與改進(jìn)、控制成為物聯(lián)網(wǎng)領(lǐng)域研究的當(dāng)務(wù)之急[1,7]。
大數(shù)據(jù)技術(shù)基于分布式存儲(chǔ)與計(jì)算技術(shù),有成熟的理論基礎(chǔ)和應(yīng)用組件。大數(shù)據(jù)集群的架構(gòu)使得高效、快速處理海量、異構(gòu)化的數(shù)據(jù)成為現(xiàn)實(shí),被廣泛應(yīng)用于包括物聯(lián)網(wǎng)在內(nèi)的眾多領(lǐng)域。但大量數(shù)據(jù)傳輸對于存儲(chǔ)能力和帶寬有限的傳感器網(wǎng)絡(luò),是一個(gè)很大的挑戰(zhàn)。這必然要求優(yōu)化數(shù)據(jù)傳輸架構(gòu)和數(shù)據(jù)傳輸?shù)哪芰?,建立可靠的?yōu)化模型,以滿足對感知數(shù)據(jù)的完整性、準(zhǔn)確性、安全性和及時(shí)性的要求[9]。
本文試圖構(gòu)建異構(gòu)傳感設(shè)備的數(shù)據(jù)采集網(wǎng)絡(luò),通過網(wǎng)關(guān)傳輸?shù)椒?wù)器,并通過Flume 實(shí)時(shí)傳輸給Kafka,作為大數(shù)據(jù)存儲(chǔ)系統(tǒng)的數(shù)據(jù)采集通道。
物聯(lián)網(wǎng)信息具有大量、冗余、多源、異構(gòu)的特征,因此需要將其轉(zhuǎn)化為統(tǒng)一標(biāo)準(zhǔn)格式的信息[10]。同時(shí),為了解決物聯(lián)網(wǎng)傳感設(shè)備數(shù)據(jù)采集協(xié)議、傳輸協(xié)議異構(gòu)的問題,很多場景在物聯(lián)網(wǎng)數(shù)據(jù)實(shí)時(shí)感知與處理模型中引入云服務(wù)架構(gòu)[6]。朱和林等[9]對智慧園區(qū)異構(gòu)數(shù)據(jù)的統(tǒng)一技術(shù)進(jìn)行了分析,認(rèn)為要將大數(shù)據(jù)采集與大數(shù)據(jù)存儲(chǔ)、處理、分析、學(xué)習(xí)技術(shù)相銜接,要從協(xié)同供應(yīng)商修改通信協(xié)議和統(tǒng)一數(shù)據(jù)庫選型兩方面入手,因此提出采用數(shù)據(jù)集成方法實(shí)現(xiàn)異構(gòu)數(shù)據(jù)的統(tǒng)一標(biāo)準(zhǔn)接口。何朝陽[10]在滑坡實(shí)時(shí)監(jiān)測預(yù)警系統(tǒng)中定義了一套地質(zhì)災(zāi)害監(jiān)測數(shù)據(jù)格式標(biāo)準(zhǔn),聯(lián)合設(shè)備商在設(shè)備端對數(shù)據(jù)傳輸模塊進(jìn)行升級(jí),實(shí)現(xiàn)了基于MQTT 協(xié)議的數(shù)據(jù)傳輸模式。李睿[11]選用無線ZigBee 和有線ModBus 兩種協(xié)議作為接入端,通過MQTT 消息代理,解決多協(xié)議統(tǒng)一的問題。
羅家文[8]對移動(dòng)平臺(tái)設(shè)備通過ZigBee 進(jìn)行無線通信,將信息傳輸給對應(yīng)網(wǎng)關(guān),網(wǎng)關(guān)通過有線的形式連接到上位機(jī)來采集。周辰宇等[12]通過智能網(wǎng)關(guān)模塊在網(wǎng)絡(luò)層以上實(shí)現(xiàn)網(wǎng)絡(luò)互連,采用TCP/IP 協(xié)議,通過Socket 編程實(shí)現(xiàn)協(xié)調(diào)器串口數(shù)據(jù)的網(wǎng)絡(luò)傳輸,將數(shù)據(jù)通過Wi-Fi 路由器轉(zhuǎn)發(fā)給網(wǎng)絡(luò)。李成豪[13]在森林消防車上搭載微環(huán)境實(shí)時(shí)監(jiān)測系統(tǒng),把采集到的數(shù)據(jù)進(jìn)行打包并存在本地SD 卡中,通過單片機(jī)接收北斗模塊的定位信息并且將數(shù)據(jù)傳給北斗模塊進(jìn)而使用衛(wèi)星通信將數(shù)據(jù)上傳到服務(wù)器。
近年來,很多學(xué)者致力于設(shè)計(jì)高效的無線傳感網(wǎng)絡(luò)優(yōu)化模型,提高傳感網(wǎng)的可靠性。孟超等[7]設(shè)計(jì)了傳感網(wǎng)大數(shù)據(jù)采集和傳輸?shù)姆抡婕軜?gòu),實(shí)現(xiàn)了對移動(dòng)車輛感知節(jié)點(diǎn)的實(shí)時(shí)定位和監(jiān)控。謝添[5]認(rèn)為物聯(lián)網(wǎng)底層的傳感器節(jié)點(diǎn)和大數(shù)據(jù)工具缺乏有效的融合,由此提出了采用物聯(lián)網(wǎng)終端與通信設(shè)備來進(jìn)行數(shù)據(jù)采集,通過大數(shù)據(jù)技術(shù)來存儲(chǔ)海量工業(yè)數(shù)據(jù)。張前進(jìn)[4]采用Apache Flume日志系統(tǒng)實(shí)現(xiàn)各種實(shí)時(shí)感知數(shù)據(jù)源的快速接入。許多研究人員采用Flume 和Kafka 項(xiàng)結(jié)合的方式,通過Flume 從終端設(shè)備、網(wǎng)關(guān)、邊緣計(jì)算服務(wù)器等采集數(shù)據(jù),然后通過將數(shù)據(jù)發(fā)送至Kafka 消息隊(duì)列系統(tǒng),進(jìn)而傳遞給大數(shù)據(jù)實(shí)時(shí)處理或存儲(chǔ)系統(tǒng),實(shí)現(xiàn)物聯(lián)網(wǎng)大數(shù)據(jù)的實(shí)時(shí)傳輸與歷史數(shù)據(jù)存儲(chǔ)。
綜上所述,目前物聯(lián)網(wǎng)技術(shù)從數(shù)據(jù)采集、傳輸上存在通信協(xié)議不統(tǒng)一、數(shù)據(jù)格式多樣、數(shù)據(jù)具有異構(gòu)性、數(shù)據(jù)量大、傳統(tǒng)數(shù)據(jù)存儲(chǔ)方式難以適應(yīng)物聯(lián)網(wǎng)大數(shù)據(jù)的要求等問題。構(gòu)建涵蓋物聯(lián)網(wǎng)數(shù)據(jù)采集、傳輸、存儲(chǔ)、處理、學(xué)習(xí)、展示,并能進(jìn)行設(shè)備控制的物聯(lián)網(wǎng)體系,從而搭建適應(yīng)于智慧城市、智慧園區(qū)、智慧農(nóng)業(yè)、智能樓宇、智能交通等物聯(lián)網(wǎng)應(yīng)用領(lǐng)域的大數(shù)據(jù)平臺(tái)是比較合理的解決方案。接下來本文試圖從兼容多種協(xié)議、網(wǎng)關(guān)程序開發(fā)、充分與大數(shù)據(jù)系統(tǒng)銜接的角度架構(gòu)物聯(lián)網(wǎng)數(shù)據(jù)采集、傳輸、接入系統(tǒng)。
本物聯(lián)網(wǎng)大數(shù)據(jù)采集與傳輸架構(gòu)分為設(shè)備組網(wǎng)方式、協(xié)議轉(zhuǎn)換統(tǒng)一與數(shù)據(jù)融合技術(shù)、數(shù)據(jù)傳輸3 部分。設(shè)備組網(wǎng)方式提供異構(gòu)設(shè)備多協(xié)議通信支持,對于不同設(shè)備采用不同的協(xié)議,直接與設(shè)備進(jìn)行通信。設(shè)備管理模塊啟動(dòng)后,就會(huì)在網(wǎng)關(guān)上開放多個(gè)通信端口,每個(gè)端口對應(yīng)一個(gè)通信協(xié)議。這些端口負(fù)責(zé)監(jiān)聽設(shè)備的連接請求,當(dāng)接收到設(shè)備向該端口發(fā)起的連接請求后,就會(huì)建立連接,等待設(shè)備上傳數(shù)據(jù)。無線傳感網(wǎng)絡(luò)層中的傳感器節(jié)點(diǎn)中產(chǎn)生的原始數(shù)據(jù)每隔固定的采集間隔就會(huì)被通過接口或無線通信發(fā)送到網(wǎng)關(guān),網(wǎng)關(guān)識(shí)別特定的數(shù)據(jù)包然后進(jìn)行處理并通過以太網(wǎng)將數(shù)據(jù)以指定格式轉(zhuǎn)發(fā)給邊緣計(jì)算服務(wù)器。然后由Flume采集數(shù)據(jù)并匯總,傳輸給Kafka,以作為大數(shù)據(jù)存儲(chǔ)系統(tǒng)的數(shù)據(jù)來源(見圖1)。
圖1 物聯(lián)網(wǎng)大數(shù)據(jù)采集與傳輸架構(gòu)
網(wǎng)關(guān)的功能就是實(shí)現(xiàn)協(xié)議的轉(zhuǎn)換和數(shù)據(jù)的分發(fā)。通過網(wǎng)關(guān)能夠?qū)崿F(xiàn)不同網(wǎng)絡(luò)協(xié)議的轉(zhuǎn)換,將數(shù)據(jù)轉(zhuǎn)換為統(tǒng)一的格式進(jìn)行封裝,從而解決異構(gòu)網(wǎng)絡(luò)間的互聯(lián)互通問題。網(wǎng)關(guān)還可以實(shí)現(xiàn)對傳感設(shè)備的控制,包括獲取傳感器設(shè)備的狀態(tài)和屬性信息,以及遠(yuǎn)程喚醒、控制和維護(hù)等。此外,為保證系統(tǒng)的完善和自動(dòng)化處理能力,需要傳感網(wǎng)絡(luò)層和大數(shù)據(jù)平臺(tái)之間添加相關(guān)軟件及腳本以完成不同網(wǎng)絡(luò)和模塊間的銜接[15]。又由于無線節(jié)點(diǎn)入網(wǎng)時(shí)要在網(wǎng)關(guān)上進(jìn)行注冊,記錄相關(guān)的設(shè)備信息:網(wǎng)關(guān)識(shí)別、處理、傳輸數(shù)據(jù)包。這就需要將設(shè)備數(shù)據(jù)的處理模塊加入到網(wǎng)關(guān)的原程序中。
本文擬采用ZigBee 無線組網(wǎng)與ModBus 有線組網(wǎng)相結(jié)合。ZigBee 作為比較典型的無線傳輸方式,具有低成本、低功耗、自組網(wǎng)、接入設(shè)備快、支持設(shè)備多等特點(diǎn)。ModBus 是最常見的有線傳輸方式,支持多種電氣接口和簡潔的幀格式,已經(jīng)在多種領(lǐng)域廣泛使用。在組網(wǎng)過程中,可以加入ZigBee 中繼器提升網(wǎng)絡(luò)傳輸性能。ZigBee 協(xié)調(diào)器匯聚來自傳感設(shè)備或中繼器的數(shù)據(jù),然后數(shù)據(jù)通過串口接入物聯(lián)網(wǎng)網(wǎng)關(guān),而ModBus 則通過串口與物聯(lián)網(wǎng)網(wǎng)關(guān)進(jìn)行連接[16]。同時(shí)設(shè)計(jì)與實(shí)現(xiàn)網(wǎng)關(guān)服務(wù)器的應(yīng)用軟件,負(fù)責(zé)ZigBee 協(xié)議、ModBus 協(xié)議與MQTT 協(xié)議的轉(zhuǎn)換,以及傳感器數(shù)據(jù)的接收和存儲(chǔ)。
本文根據(jù)MQTT、ZigBee 和ModBus 協(xié)議的具體情況,自己定義數(shù)據(jù)幀格式,通過協(xié)議解包和封包實(shí)現(xiàn)不同通信技術(shù)的協(xié)議轉(zhuǎn)換,即ZigBee 與MQTT 的協(xié)議轉(zhuǎn)換以及ModBus 與MQTT 的協(xié)議轉(zhuǎn)換。在數(shù)據(jù)采集時(shí),網(wǎng)關(guān)可以將來自不同傳感器網(wǎng)絡(luò)的數(shù)據(jù)封裝成統(tǒng)一的標(biāo)準(zhǔn)格式,再通過通信網(wǎng)絡(luò)發(fā)送給邊緣計(jì)算服務(wù)器。在對設(shè)備進(jìn)行控制時(shí),網(wǎng)關(guān)將通過網(wǎng)絡(luò)接收到的數(shù)據(jù)信息解析成標(biāo)準(zhǔn)幀格式,再根據(jù)不同的底層感知網(wǎng)絡(luò)轉(zhuǎn)換成對應(yīng)通信協(xié)議的數(shù)據(jù)和命令,最后通過網(wǎng)絡(luò)將這些數(shù)據(jù)和命令發(fā)送給終端設(shè)備,從而實(shí)現(xiàn)控制功能[17]。
數(shù)據(jù)傳輸負(fù)責(zé)為數(shù)據(jù)處理集群快速接入數(shù)據(jù)源。
阿帕奇Flume 是一個(gè)分布式、可靠,易用的高效數(shù)據(jù)采集系統(tǒng),它能夠從各種不同的數(shù)據(jù)源聚集大量日志數(shù)據(jù),并把它們移動(dòng)到一個(gè)中央數(shù)據(jù)倉庫。Flume 的數(shù)據(jù)來源可以定制,除了收集日志文件,它還可以收集網(wǎng)絡(luò)流量數(shù)據(jù)、社會(huì)媒體數(shù)據(jù)、郵件消息等數(shù)據(jù),甚至可以說是任意來源的數(shù)據(jù)。
針對實(shí)時(shí)數(shù)據(jù)流量較大,數(shù)據(jù)處理模塊的處理能力可能無法達(dá)到的問題,采用阿帕奇Kafka 集群進(jìn)行物聯(lián)網(wǎng)大數(shù)據(jù)接入與分發(fā)。阿帕奇Kafka 系統(tǒng)是一個(gè)開源、分布式事件流平臺(tái),適合處理大規(guī)模實(shí)時(shí)數(shù)據(jù),成千上萬的公司采用它來作為高性能數(shù)據(jù)管道、流分析工具,進(jìn)行數(shù)據(jù)集成以及關(guān)鍵技術(shù)應(yīng)用[18]。
本文采用數(shù)據(jù)采集系統(tǒng)Flume 作為收集物聯(lián)網(wǎng)大數(shù)據(jù)的工具,通過不同的分支節(jié)點(diǎn)采用不同網(wǎng)關(guān)或邊緣計(jì)算服務(wù)器上的數(shù)據(jù),然后匯集到中樞Flume 節(jié)點(diǎn),并將其作為Kafka 的數(shù)據(jù)生產(chǎn)者,將實(shí)時(shí)物聯(lián)網(wǎng)大數(shù)據(jù)傳入Kafka 計(jì)算集群的代理,將分布式大數(shù)據(jù)存儲(chǔ)平臺(tái)HDFS 作為Kafka數(shù)據(jù)的消費(fèi)者。Kafka 的事件流能夠確保數(shù)據(jù)的持續(xù)流通和解析,保證任何一個(gè)主題分區(qū)的消費(fèi)者可以按照消息產(chǎn)生順序原封不動(dòng)對它進(jìn)行讀取,這樣不僅不會(huì)丟失數(shù)據(jù),還能實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)傳輸。
本文在分析物聯(lián)網(wǎng)特征、對數(shù)據(jù)采集與傳輸?shù)囊?,以及現(xiàn)有數(shù)據(jù)采集與傳輸方式優(yōu)缺點(diǎn)的基礎(chǔ)上,提出通過使用網(wǎng)關(guān)及開發(fā)網(wǎng)關(guān)程序通信協(xié)議轉(zhuǎn)換,采用MQTT 協(xié)議、Flume 數(shù)據(jù)采集工具、Kafka 發(fā)布訂閱系統(tǒng)進(jìn)行傳感器數(shù)據(jù)采集與傳輸?shù)募軜?gòu),為將來物聯(lián)網(wǎng)大數(shù)據(jù)存儲(chǔ)、處理做好數(shù)據(jù)來源準(zhǔn)備??蔀槲锫?lián)網(wǎng)大數(shù)據(jù)采集、傳輸、存儲(chǔ)、分析、學(xué)習(xí)、展示以及設(shè)備控制的物聯(lián)網(wǎng)平臺(tái)體系做好數(shù)據(jù)源的基礎(chǔ),并可結(jié)合Cesium 數(shù)字孿生技術(shù),將此方法體系推廣應(yīng)用到智慧城市、智慧園區(qū)、智能樓宇、智慧農(nóng)業(yè)、智能交通等多種物聯(lián)網(wǎng)相關(guān)領(lǐng)域。