麻凱雄,鄭海寧
(航天海鷹安全技術(shù)工程有限公司,北京 100074)
隨著計(jì)算機(jī)信息技術(shù)的飛速發(fā)展,信息管理系統(tǒng)被廣泛應(yīng)用于各個(gè)領(lǐng)域,相比于傳統(tǒng)人工管理方式,使用計(jì)算機(jī)進(jìn)行信息管理具有無法比擬的優(yōu)勢:數(shù)據(jù)處理效率高、數(shù)據(jù)查詢快速準(zhǔn)確以及信息便于長期保存等。近年來,越來越多的城市開啟了“智慧城市”的建設(shè)熱潮。在線監(jiān)測類系統(tǒng)作為“智慧城市”的重要組成部分,其數(shù)據(jù)處理的一般流程為:數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)計(jì)算及數(shù)據(jù)調(diào)用。其中,數(shù)據(jù)采集和存儲(chǔ)為整個(gè)流程的基礎(chǔ)部分,能否實(shí)現(xiàn)快速的數(shù)據(jù)采集和高效的數(shù)據(jù)存儲(chǔ),將直接影響整個(gè)信息系統(tǒng)的工作效率。此外,開發(fā)“智慧城市”在線監(jiān)測類系統(tǒng)時(shí),每次都將數(shù)據(jù)采集和存儲(chǔ)模塊進(jìn)行重新設(shè)計(jì)與實(shí)現(xiàn),造成單個(gè)系統(tǒng)的開發(fā)速度慢、周期長,開發(fā)效率低下。
在空氣懸浮風(fēng)機(jī)云平臺(tái)設(shè)計(jì)實(shí)現(xiàn)過程中,本文針對以上在線監(jiān)測類系統(tǒng)開發(fā)中存在的問題,在軟件復(fù)用思想下,設(shè)計(jì)實(shí)現(xiàn)基于ActiveMQ消息中間件和協(xié)議解析模型庫的通用型數(shù)據(jù)網(wǎng)關(guān),并設(shè)計(jì)了OpenTSDB時(shí)序數(shù)據(jù)庫,更在此基礎(chǔ)上,設(shè)計(jì)實(shí)現(xiàn)了空氣懸浮風(fēng)機(jī)云。
云平臺(tái)系統(tǒng)框架體系結(jié)構(gòu)如圖1所示。系統(tǒng)主要包括物聯(lián)感知層、數(shù)據(jù)層、中間層和應(yīng)用層。風(fēng)機(jī)DTU設(shè)備借助Modbus TCP協(xié)議傳輸風(fēng)機(jī)運(yùn)行參數(shù)數(shù)據(jù),通用型數(shù)據(jù)網(wǎng)關(guān)接收參數(shù)數(shù)據(jù),完成數(shù)據(jù)解析工作后,將數(shù)據(jù)推送給ActiveMQ消息中間件和OpenTSDB時(shí)序數(shù)據(jù)庫。為降低系統(tǒng)耦合性,設(shè)計(jì)實(shí)現(xiàn)通用型數(shù)據(jù)網(wǎng)關(guān),并將其作為獨(dú)立系統(tǒng)部署于數(shù)據(jù)網(wǎng)關(guān)服務(wù)器上。
圖1 系統(tǒng)框架體系結(jié)構(gòu)
圖2所示為空氣懸浮風(fēng)機(jī)云平臺(tái)功能模塊組織結(jié)構(gòu),云平臺(tái)主要?jiǎng)澐譃閿?shù)據(jù)采集與通信、風(fēng)機(jī)數(shù)據(jù)實(shí)時(shí)監(jiān)測、數(shù)據(jù)統(tǒng)計(jì)與分析、風(fēng)機(jī)歷史數(shù)據(jù)查詢、風(fēng)機(jī)銷售管理、風(fēng)機(jī)設(shè)備管理、報(bào)警模塊管理和系統(tǒng)管理。數(shù)據(jù)采集與通信模塊負(fù)責(zé)風(fēng)機(jī)運(yùn)行參數(shù)數(shù)據(jù)接收、協(xié)議解析、預(yù)處理、數(shù)據(jù)推送;風(fēng)機(jī)數(shù)據(jù)實(shí)時(shí)監(jiān)測通過一張圖和列表的方式,將數(shù)據(jù)采集與通信模塊處理后的風(fēng)機(jī)實(shí)時(shí)運(yùn)行參數(shù)數(shù)據(jù)展示給用戶;風(fēng)機(jī)歷史數(shù)據(jù)查詢模塊支持用戶自由選擇風(fēng)機(jī)運(yùn)行參數(shù),查詢風(fēng)機(jī)歷史數(shù)據(jù);報(bào)警模塊管理包括報(bào)警信息查看、報(bào)警信息的確認(rèn)和處置等。
圖2 系統(tǒng)功能模塊組織結(jié)構(gòu)
數(shù)據(jù)采集為設(shè)備、傳感器在線監(jiān)測類系統(tǒng)中的關(guān)鍵模塊,將其與在線監(jiān)測類系統(tǒng)作為一個(gè)整體進(jìn)行開發(fā),使得系統(tǒng)耦合性高、可復(fù)用性差,導(dǎo)致系統(tǒng)開發(fā)周期長、效率低下。為此,本文單獨(dú)設(shè)計(jì)了基于ActiveMQ的通用型數(shù)據(jù)網(wǎng)關(guān),解決在線監(jiān)測類系統(tǒng)中的數(shù)據(jù)采集問題。通用型數(shù)據(jù)網(wǎng)關(guān)設(shè)計(jì)模型如圖3所示。
圖3 通用型數(shù)據(jù)網(wǎng)關(guān)設(shè)計(jì)模型
為提高數(shù)據(jù)網(wǎng)關(guān)的普適性,使其支持多種協(xié)議解析,設(shè)計(jì)了協(xié)議解析模型庫,支持多種協(xié)議的動(dòng)態(tài)添加。設(shè)備、傳感器產(chǎn)生的流式數(shù)據(jù)經(jīng)過通用型數(shù)據(jù)網(wǎng)關(guān)中相關(guān)協(xié)議解析模型解析,將解析后的風(fēng)機(jī)實(shí)時(shí)監(jiān)測數(shù)據(jù)推送至ActiveMQ消息中間件。通過ActiveMQ,應(yīng)用程序可直接獲取中間件消息隊(duì)列中的風(fēng)機(jī)實(shí)時(shí)監(jiān)測數(shù)據(jù),無需與數(shù)據(jù)庫交互,極大降低了用戶的響應(yīng)延遲。此外,通過ActiveMQ消息中間件可實(shí)現(xiàn)通用型數(shù)據(jù)網(wǎng)關(guān)與應(yīng)用程序間的解耦。
在實(shí)際風(fēng)機(jī)運(yùn)行數(shù)據(jù)采集時(shí),需要采集的風(fēng)機(jī)參數(shù)數(shù)量多,并且不同風(fēng)機(jī)設(shè)備需要采集的參數(shù)內(nèi)容和數(shù)量不同;通過關(guān)系型數(shù)據(jù)庫存儲(chǔ)風(fēng)機(jī)實(shí)時(shí)運(yùn)行參數(shù)數(shù)據(jù),數(shù)據(jù)存儲(chǔ)和查詢效率低下。針對以上數(shù)據(jù)采集特點(diǎn),考慮到數(shù)據(jù)存儲(chǔ)和查詢效率問題,將通用型數(shù)據(jù)網(wǎng)關(guān)采集和處理后的風(fēng)機(jī)實(shí)時(shí)運(yùn)行參數(shù)數(shù)據(jù)推送至OpenTSDB時(shí)序數(shù)據(jù)庫,數(shù)據(jù)經(jīng)過時(shí)序數(shù)據(jù)庫處理,結(jié)合產(chǎn)生的時(shí)間戳,存入HBase分布式、面向列的數(shù)據(jù)庫中。風(fēng)機(jī)運(yùn)行數(shù)據(jù)采集、處理和存儲(chǔ)流程如圖4所示。
圖4 風(fēng)機(jī)運(yùn)行數(shù)據(jù)處理流程
系統(tǒng)采用關(guān)系型和非關(guān)系型結(jié)合的方式存儲(chǔ)數(shù)據(jù)。系統(tǒng)的業(yè)務(wù)配置數(shù)據(jù)、用戶數(shù)據(jù)等量級小且事務(wù)性要求較高的數(shù)據(jù),被存儲(chǔ)在MySQL數(shù)據(jù)庫中;設(shè)備實(shí)時(shí)運(yùn)行參數(shù)數(shù)據(jù)和報(bào)警數(shù)據(jù)等,其增長速度較快,且需要被查詢和統(tǒng)計(jì)分析,存儲(chǔ)于在HBase中。這種關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫相結(jié)合的數(shù)據(jù)存儲(chǔ)方式在保證數(shù)據(jù)一致性和完整性的前提下,提高了整體存儲(chǔ)結(jié)構(gòu)的高效性和穩(wěn)定性。
空氣懸浮風(fēng)機(jī)云平臺(tái)基于Spring Boot開發(fā)框架搭建,使用Java開發(fā)語言,平臺(tái)前端采用Vue框架,開發(fā)工具采用InteliJ IDEA。采用前后端分離的開發(fā)模式,解除了傳統(tǒng)開發(fā)技術(shù)框架帶來的前后臺(tái)緊耦合問題,可分別對前后端代碼進(jìn)行升級優(yōu)化。空氣懸浮風(fēng)機(jī)通過 DTU(Data Transfer Unit)數(shù)據(jù)傳輸單元將風(fēng)機(jī)設(shè)備運(yùn)行參數(shù)數(shù)據(jù)借助Modbus TCP協(xié)議發(fā)送至通用型數(shù)據(jù)網(wǎng)關(guān)服務(wù)器。為此,設(shè)計(jì)實(shí)現(xiàn)Modbus TCP協(xié)議解析模型,并添加到協(xié)議解析模型庫中??諝鈶腋★L(fēng)機(jī)云平臺(tái)如圖5所示。在試運(yùn)行階段,系統(tǒng)表現(xiàn)出良好的實(shí)用性,且運(yùn)行穩(wěn)定。風(fēng)機(jī)數(shù)據(jù)實(shí)時(shí)監(jiān)測模塊和歷史數(shù)據(jù)查詢模塊均能較好地滿足用戶實(shí)際使用需求??諝鈶腋★L(fēng)機(jī)云平臺(tái)實(shí)時(shí)數(shù)據(jù)展示如圖6所示,歷史數(shù)據(jù)查詢效果如圖7所示。
圖5 空氣懸浮風(fēng)機(jī)云平臺(tái)
圖6 實(shí)時(shí)數(shù)據(jù)展示
圖7 歷史數(shù)據(jù)查詢
文中闡述了“智慧城市”在線監(jiān)測類系統(tǒng)中數(shù)據(jù)處理的一般流程,針對流程的基礎(chǔ)部分—數(shù)據(jù)采集和存儲(chǔ),單獨(dú)設(shè)計(jì)并實(shí)現(xiàn)了基于ActiveMQ消息中間件和協(xié)議解析模型庫的通用型數(shù)據(jù)網(wǎng)關(guān),并進(jìn)行了相關(guān)數(shù)據(jù)庫設(shè)計(jì)。以此為基礎(chǔ),實(shí)現(xiàn)了空氣懸浮風(fēng)機(jī)云。下一步計(jì)劃將通用型數(shù)據(jù)網(wǎng)關(guān)及相關(guān)數(shù)據(jù)庫設(shè)計(jì)應(yīng)用于其他“智慧城市”在線監(jiān)測類系統(tǒng)中,通過可復(fù)用軟件解決“智慧城市”平臺(tái)建設(shè)中的數(shù)據(jù)采集和存儲(chǔ)問題,提高平臺(tái)開發(fā)效率。
物聯(lián)網(wǎng)技術(shù)2022年10期