(湖南聯(lián)智科技股份有限公司 湖南 410073)
針對目前各物聯(lián)網(wǎng)相關(guān)領(lǐng)域?qū)τ跀?shù)據(jù)接入的多元化需求且單一傳感器數(shù)據(jù)很難滿足服務(wù)的現(xiàn)狀,本文主要在闡述了物聯(lián)網(wǎng)數(shù)據(jù)接入的基本概念、原理和方法的基礎(chǔ)上,介紹了在數(shù)據(jù)接入架構(gòu)設(shè)計(jì)中使用的相關(guān)技術(shù);分析了在數(shù)據(jù)接入鏈路及數(shù)據(jù)清洗、解析過程的應(yīng)用需求,分別利用系統(tǒng)架構(gòu)圖和數(shù)據(jù)流程圖及平臺部署結(jié)構(gòu)圖對系統(tǒng)的數(shù)據(jù)和過程進(jìn)行設(shè)計(jì);給出了基于微服務(wù)的數(shù)據(jù)接入架構(gòu)設(shè)計(jì),設(shè)計(jì)了系統(tǒng)多個不同的子系統(tǒng)和模塊與各種常用傳輸協(xié)議下不同解析協(xié)議的通用方法,且使用多種設(shè)計(jì)模式,形成可自定義擴(kuò)展的數(shù)據(jù)方法;實(shí)現(xiàn)了兼容各類型感知設(shè)備,自動配置配合可視化,自定義配置自動接入數(shù)據(jù)的數(shù)據(jù)中心架構(gòu)。
在傳統(tǒng)的軟件技術(shù)架構(gòu)系統(tǒng)中,基本上將業(yè)務(wù)功能集中在單一應(yīng)用內(nèi),或者是單一進(jìn)程中。盡管現(xiàn)代化的軟件架構(gòu)理論以及設(shè)計(jì)原則已推廣多年,但實(shí)際技術(shù)衍化的速度遲緩并且變革動力不足。
微服務(wù)是用模塊化分解系統(tǒng)功能,通過模塊內(nèi)部通訊來構(gòu)建一個應(yīng)用,服務(wù)獨(dú)立運(yùn)行在不同的進(jìn)程中,服務(wù)之間通過輕量的通訊機(jī)制進(jìn)行交互。
每個服務(wù)模塊根據(jù)功能劃分,服務(wù)只需要關(guān)注自身需要解決的問題。傳統(tǒng)的整體風(fēng)格的架構(gòu)在構(gòu)建部署和擴(kuò)展伸縮方面有很大的局限性,笨重且不可拆分。微服務(wù)架構(gòu)將系統(tǒng)以組件化的方式分解為多個服務(wù),服務(wù)之間相對獨(dú)立且松耦合,單一功能的改變只需要重新構(gòu)建部署相應(yīng)的服務(wù)即可。
微服務(wù)架構(gòu)拋棄了傳統(tǒng)單體服務(wù)一體化開發(fā)部署方式,微服務(wù)架構(gòu)是高內(nèi)聚的,每個服務(wù)處理相應(yīng)的業(yè)務(wù),所有的業(yè)務(wù)邏輯應(yīng)該盡量在服務(wù)內(nèi)部處理,且服務(wù)間的通信盡可能輕量化,比如使用Restful的方式。
每個微服務(wù)只會關(guān)注特定的業(yè)務(wù)功能,所以服務(wù)的業(yè)務(wù)清晰、代碼量較少。開發(fā)和維護(hù)單個微服務(wù)相對簡單。一般來說,對某個微服務(wù)進(jìn)行修改,只需要重新部署這個服務(wù)即可。
數(shù)據(jù)中心系統(tǒng),在上層物聯(lián)網(wǎng)應(yīng)用中的作用越來越重要,該系統(tǒng)是應(yīng)用系統(tǒng)的數(shù)據(jù)支持,也是設(shè)備與應(yīng)用平臺之間的橋梁。因此,支持多協(xié)議并支持自定義擴(kuò)展的系統(tǒng)設(shè)計(jì)就變得至關(guān)重要,一是能提供統(tǒng)一數(shù)據(jù)接入中心,只需要根據(jù)需求選擇內(nèi)置接入?yún)f(xié)議和使用通用解析策略和自定義解析策略就能快速接入感知設(shè)備;二是提供數(shù)據(jù)統(tǒng)一管理中心,上層應(yīng)用再也不用關(guān)注平臺數(shù)據(jù)存儲,傳輸,解析等問題;三是系統(tǒng)提供所有過程數(shù)據(jù)鏈路存儲以及日志記錄,應(yīng)用開發(fā)人員能在快速定位問題后通過問題排除策略解決數(shù)據(jù)接入問題。
綜上所述,對數(shù)據(jù)中心系統(tǒng)的總體分析,可以清晰理解為,數(shù)據(jù)系統(tǒng)主要是作為應(yīng)用平臺整體架構(gòu)的核心部分,不僅對數(shù)據(jù)進(jìn)行接入、解析、清晰等工作,同時為物聯(lián)網(wǎng)應(yīng)用平臺解決數(shù)據(jù)存儲及提供穩(wěn)定的數(shù)據(jù)服務(wù)功能。底層感知設(shè)備以及網(wǎng)絡(luò)傳輸層具有協(xié)議類型多、設(shè)備種類多、設(shè)備數(shù)據(jù)協(xié)議不一、設(shè)備邊緣計(jì)算能力有限及存儲空間小的特點(diǎn),所以對于平臺設(shè)計(jì)兼容多種主流通訊協(xié)議,且整合封裝行業(yè)中大量使用的傳感器解析協(xié)議,確保數(shù)據(jù)流轉(zhuǎn)通穩(wěn)定通暢,且接入設(shè)備簡單方便。
數(shù)據(jù)中心系統(tǒng)具有數(shù)據(jù)接入服務(wù)、數(shù)據(jù)解析服務(wù)、數(shù)據(jù)清洗分析服務(wù)、數(shù)據(jù)存儲服務(wù)、數(shù)據(jù)輸入輸出服務(wù)等功能模塊。
數(shù)據(jù)中心系統(tǒng)應(yīng)用架構(gòu)如圖1 所示。展現(xiàn)層主要為上層物聯(lián)網(wǎng)應(yīng)用平臺,其中可為安全監(jiān)測平臺、智慧城市、智慧交通等其他物聯(lián)網(wǎng)平臺。服務(wù)層與基礎(chǔ)設(shè)施層為上層應(yīng)用平臺提供數(shù)據(jù)支撐。服務(wù)層為本系統(tǒng)的核心基礎(chǔ),包括外部協(xié)議接入,數(shù)據(jù)處理兩部分。數(shù)據(jù)層主要包含本系統(tǒng)中的數(shù)據(jù)存儲服務(wù),根據(jù)業(yè)務(wù)情況分庫進(jìn)行存儲;通過統(tǒng)一數(shù)據(jù)出入庫接口進(jìn)行管理;避免數(shù)據(jù)庫切換導(dǎo)致系統(tǒng)重新開發(fā)。且整個系統(tǒng)在設(shè)計(jì)中考慮系統(tǒng)安全、數(shù)據(jù)安全、服務(wù)安全、網(wǎng)絡(luò)傳輸安全多項(xiàng)安全因素;系統(tǒng)開發(fā)遵循各項(xiàng)技術(shù)規(guī)范,數(shù)據(jù)格式、數(shù)據(jù)庫設(shè)計(jì)、數(shù)據(jù)接口設(shè)計(jì)均遵守標(biāo)準(zhǔn)化信息體系。
圖1 數(shù)據(jù)中心整體架構(gòu)
系統(tǒng)技術(shù)架構(gòu)擬采用微服務(wù)架構(gòu),將配置中心和分布式服務(wù)均納入Nacos 管理,可集中管理服務(wù)和系統(tǒng)配置;在數(shù)據(jù)輸入輸出端采用Spring-Cloud-Gateway 提供數(shù)據(jù)接口,內(nèi)置負(fù)載均衡機(jī)制和熔斷、重試機(jī)制,保障服務(wù)穩(wěn)定運(yùn)行。在數(shù)據(jù)中心系統(tǒng)中每項(xiàng)子服務(wù)均可分布式部署,解決系統(tǒng)性能瓶頸。數(shù)據(jù)庫存儲可考慮采用非關(guān)系型數(shù)據(jù)庫存儲大量傳感器數(shù)據(jù),其他業(yè)務(wù)、配置相關(guān)可采用關(guān)系型數(shù)據(jù)庫;服務(wù)過程中使用高效緩存提升系統(tǒng)整體效率;另外文件服務(wù)器可用于數(shù)據(jù)文件備份,原始數(shù)據(jù)存檔等。具體技術(shù)結(jié)構(gòu)如下圖2 所示:
圖2 數(shù)據(jù)中心技術(shù)架構(gòu)
數(shù)據(jù)接入服務(wù),主要負(fù)責(zé)接入感知設(shè)備通過網(wǎng)絡(luò)協(xié)議接入到平臺,進(jìn)行初步的數(shù)據(jù)校驗(yàn)和過濾功能。目前主要集成TCP、Mqtt、LoRa、NB-Iot 四種協(xié)議,且支持協(xié)議擴(kuò)展,可自定義協(xié)議接入模塊。多種協(xié)議配置均存入數(shù)據(jù)庫,上層應(yīng)用可根據(jù)需求通過接口形式配置自身使用的不同協(xié)議。另外,每種協(xié)議內(nèi)置自動數(shù)據(jù)處理器,同時開發(fā)者可擴(kuò)展自定義后置數(shù)據(jù)處理器。該模塊僅負(fù)責(zé)接受傳感器上報(bào)的原始數(shù)據(jù),并將原始數(shù)據(jù)進(jìn)行存儲后將數(shù)據(jù)壓入數(shù)據(jù)處理隊(duì)列,交給下游服務(wù)進(jìn)行解析處理;在數(shù)據(jù)處理各項(xiàng)過程中都有節(jié)點(diǎn)日志記錄以及設(shè)備上下線日志記錄。根據(jù)設(shè)備需求,如果有需要命令下發(fā)的情況,該服務(wù)啟動獲取命令下發(fā)隊(duì)列,根據(jù)傳感器策略中的采集策略配置自動下發(fā)系統(tǒng)采集命令。
數(shù)據(jù)解析服務(wù),系統(tǒng)模塊通過監(jiān)聽數(shù)據(jù)處理隊(duì)列,采用多線程技術(shù)將數(shù)據(jù)接入服務(wù)接收回來的數(shù)據(jù)進(jìn)行解析;主要根據(jù)系統(tǒng)配置的不同類型傳感器的解析策略進(jìn)行數(shù)據(jù)分解;根據(jù)不同情況可分為字節(jié)碼解析、Json 體等解析,同時根據(jù)配置要求解析后對數(shù)據(jù)進(jìn)行數(shù)據(jù)解密且校驗(yàn)數(shù)據(jù)校驗(yàn)碼是否正確,最后存儲解析后的數(shù)據(jù),然后將數(shù)據(jù)壓入解析數(shù)據(jù)處理隊(duì)列,交給下游服務(wù)進(jìn)行清洗分析處理;在數(shù)據(jù)解析過程中各節(jié)點(diǎn)進(jìn)行日志記錄以及數(shù)據(jù)異常日志記錄。該模塊僅負(fù)責(zé)數(shù)據(jù)解析轉(zhuǎn)換及存儲部分,根據(jù)設(shè)備解析策略中的采集策略部分,根據(jù)采集策略生產(chǎn)設(shè)備數(shù)據(jù)采集命令,根據(jù)采集下發(fā)采集命令到命令下發(fā)隊(duì)列,供數(shù)據(jù)接入層使用;該模塊為數(shù)據(jù)中心系統(tǒng)的核心模塊,是上下服務(wù)之間的紐帶。
數(shù)據(jù)清洗分析服務(wù),系統(tǒng)模塊通過監(jiān)聽解析數(shù)據(jù)處理隊(duì)列,采用多線程技術(shù)處理經(jīng)過解析服務(wù)處理后的數(shù)據(jù),根據(jù)數(shù)據(jù)清洗策略,對數(shù)據(jù)進(jìn)行清洗,過濾掉超限或異常數(shù)據(jù),然后根據(jù)以往的數(shù)據(jù)進(jìn)行分析,判斷當(dāng)前數(shù)據(jù)是否是噪聲數(shù)據(jù);根據(jù)相關(guān)設(shè)備數(shù)據(jù)進(jìn)一步來判斷相關(guān)數(shù)據(jù)是否存在異常,如有異常,根據(jù)數(shù)據(jù)修復(fù)策略來修復(fù)異常點(diǎn)數(shù)據(jù),避免噪聲數(shù)據(jù)、設(shè)備采集異常等情況導(dǎo)致出現(xiàn)的調(diào)變影響上層應(yīng)用決策分析;最后將正確的數(shù)據(jù)壓入數(shù)據(jù)存儲隊(duì)列,供下游服務(wù)進(jìn)行統(tǒng)一存儲;同樣該服務(wù)所有節(jié)點(diǎn)均記錄處理日志以及存在的異常日志。該模塊主要負(fù)責(zé)數(shù)據(jù)清洗和分析服務(wù),與上下游服務(wù)關(guān)系松耦合。
數(shù)據(jù)存儲服務(wù),系統(tǒng)模塊監(jiān)聽數(shù)據(jù)存儲隊(duì)列,將數(shù)據(jù)存入數(shù)據(jù)庫中;該模塊主要功能是集成多樣化存儲數(shù)據(jù)庫,如Mongodb、Kafka、Hbase、Hive 等,開發(fā)者可根據(jù)應(yīng)用需求擴(kuò)展不同存儲服務(wù)。
數(shù)據(jù)輸入輸出服務(wù),該模塊是處理與外部應(yīng)用對接的角色,通過標(biāo)準(zhǔn)Restful 接口,向外暴露數(shù)據(jù)。主要數(shù)據(jù)接口類型包括:解析策略相關(guān)接口、數(shù)據(jù)清洗、分析策略相關(guān)接口、數(shù)據(jù)相關(guān)接口、日志查詢相關(guān)接口及各項(xiàng)參數(shù)模塊使用配置相關(guān)接口等,通過上述接口向外部應(yīng)用提供數(shù)據(jù)服務(wù)和管理配置數(shù)據(jù)中心服務(wù)等。同樣,該服務(wù)有詳細(xì)的調(diào)用日志記錄。
現(xiàn)存物聯(lián)網(wǎng)技術(shù)的核心數(shù)據(jù)來源于感知層,隨著物聯(lián)網(wǎng)技術(shù)和網(wǎng)絡(luò)傳輸技術(shù)的高速發(fā)展,以后會出現(xiàn)更多的物聯(lián)網(wǎng)平臺應(yīng)用,所有的日常設(shè)備,基礎(chǔ)設(shè)施,地標(biāo)都會上線,做到萬物互聯(lián);這些應(yīng)用都需要大量設(shè)備來為其提供數(shù)據(jù)支撐,而在物聯(lián)網(wǎng)高速發(fā)展節(jié)點(diǎn),當(dāng)下環(huán)境也存在很多問題,比如說層出不窮的網(wǎng)絡(luò)傳輸協(xié)議,各廠家自主研發(fā)的感知設(shè)備沒有任何標(biāo)準(zhǔn),且在傳輸過程中有很多不確定影響因素等等。因此本文在經(jīng)過多個項(xiàng)目的實(shí)踐及參考已有的研究成果之后;設(shè)計(jì)實(shí)現(xiàn)了一套兼容各類協(xié)議和大部分傳感器設(shè)備數(shù)據(jù)協(xié)議的數(shù)據(jù)中心系統(tǒng);集數(shù)據(jù)接入、解析、存儲為一體,整體封裝打包進(jìn)行封閉管理;統(tǒng)一數(shù)據(jù)出入口,解決數(shù)據(jù)接入難點(diǎn)和適配各種不標(biāo)準(zhǔn)的問題,為上層業(yè)務(wù)邏輯應(yīng)用開發(fā)提供核心基礎(chǔ)服務(wù)。