黃俊杰
( 數(shù)字廣西集團(tuán)有限公司,廣西 南寧530000)
近幾年,獲得質(zhì)變發(fā)展的IoT 產(chǎn)品,在諸多領(lǐng)域均得到了廣泛運(yùn)用,人們對(duì)物聯(lián)網(wǎng)所提出需求自然有別于過去。該技術(shù)強(qiáng)調(diào)先采集感知數(shù)據(jù)再同云端平臺(tái)耦合,隨著相關(guān)產(chǎn)品使用量的增加,感知數(shù)據(jù)量持續(xù)增多,原有技術(shù)所能發(fā)揮作用有限,這便是大數(shù)據(jù)物聯(lián)網(wǎng)適用中間件技術(shù)被提出的背景。
物聯(lián)網(wǎng)中間件是連接云端和智能硬件的橋梁,而智能硬件數(shù)量的增加,使引入感知數(shù)據(jù)變得更加繁雜,如何高效處理數(shù)據(jù),自然成為當(dāng)下亟待解決的問題。既有理想承載能力,又可對(duì)大數(shù)據(jù)進(jìn)行訓(xùn)練的MDM-IoT,逐漸走入人們視野。若依架構(gòu)為切入點(diǎn),該服務(wù)器可被分為云計(jì)算服務(wù)器、大數(shù)據(jù)服務(wù)器,其集群架構(gòu)如圖1 所示:
圖1 服務(wù)器集群架構(gòu)示意圖
要想以算法服務(wù)器為依托,對(duì)大數(shù)據(jù)進(jìn)行可靠且高效的訓(xùn)練,關(guān)鍵是要引入算法鏡像技術(shù),這樣做既能夠降低更新算法的難度,還可使算法安全性得到保障,在減少系統(tǒng)損耗的基礎(chǔ)上,突出強(qiáng)調(diào)部署的便捷性與簡單性。
早期虛擬方式的代表為XEN 和KVM,上述方式為后續(xù)方式的誕生奠定了基礎(chǔ)。當(dāng)然,上述方式也有較為明顯的不足存在,主要是用戶對(duì)環(huán)境十分依賴,應(yīng)用程序性能與任務(wù),通常無法達(dá)到預(yù)期。在此背景下,容器技術(shù)應(yīng)運(yùn)而生,該技術(shù)的特點(diǎn)是擺脫環(huán)境依賴和整套系統(tǒng),用戶可以隨意對(duì)內(nèi)容進(jìn)行增加或刪除,系統(tǒng)功能不會(huì)被影響。雖然LXC 和KVM均為虛擬技術(shù),但前者可使內(nèi)核得到充分利用,屬于典型的內(nèi)核輕量設(shè)計(jì),系統(tǒng)架構(gòu)如圖2 所示。本文所討論服務(wù)器便采用該管理模式,利用鏡像倉庫對(duì)算法鏡像進(jìn)行管理,并基于Git 倉庫對(duì)配置與部署文件加以管理。其優(yōu)勢主要體現(xiàn)在以下方面:首先是極其輕量,算法鏡像僅有必要Lib 文件與Bin 文件;其次是秒級(jí)部署,對(duì)不同大小算法鏡像容器進(jìn)行部署的時(shí)間,其差別往往僅有數(shù)秒;最后是移植簡便,在構(gòu)建工作結(jié)束后,有關(guān)人員可將其部署在任何區(qū)域,真正做到了簡單并且高效[1]。
圖2 LXC 系統(tǒng)架構(gòu)
要想使該系統(tǒng)即便身處大數(shù)據(jù)環(huán)境,仍具備持續(xù)且高效運(yùn)行的條件,關(guān)鍵是以可靠性與穩(wěn)定性為切入點(diǎn),對(duì)接收和存儲(chǔ)信息的部分進(jìn)行設(shè)計(jì)。
1.3.1 緩存設(shè)計(jì)
信道數(shù)據(jù)以監(jiān)控?cái)?shù)據(jù)、心跳數(shù)據(jù)和感知數(shù)據(jù)為主,若以優(yōu)先級(jí)別高低為依據(jù),上述數(shù)據(jù)的排列順序應(yīng)當(dāng)是:①心跳數(shù)據(jù);②監(jiān)控?cái)?shù)據(jù);③感知數(shù)據(jù),借助異步隊(duì)列分級(jí)緩存上述數(shù)據(jù),作為解析封裝數(shù)據(jù),供算法服務(wù)器使用。這里要明確一點(diǎn),算法服務(wù)器面臨數(shù)據(jù)為集群數(shù)據(jù),大數(shù)據(jù)服務(wù)器服務(wù)對(duì)象是物聯(lián)網(wǎng)設(shè)備。而分區(qū)分級(jí)緩存所強(qiáng)調(diào)內(nèi)容,主要是分級(jí)對(duì)應(yīng)數(shù)據(jù)分級(jí);分區(qū)依據(jù)為IoT 對(duì)應(yīng)服務(wù)器,任意服務(wù)器數(shù)據(jù)均以管轄終端為主,尚未達(dá)到集群數(shù)據(jù)同步的高度。
1.3.2 長連接設(shè)計(jì)
服務(wù)通信以長連接和短連接為主,前者強(qiáng)調(diào)保持所建立連接,為后續(xù)信息提供信道,對(duì)信息進(jìn)行傳輸?shù)男首匀豢梢缘玫教嵘:笳邉t需要對(duì)信道連接進(jìn)行數(shù)次建立與關(guān)閉,不僅耗費(fèi)大量時(shí)間,還存在性能被嚴(yán)重?fù)p耗的可能。在強(qiáng)調(diào)大流量和高并發(fā)的當(dāng)下,借助后端負(fù)載均衡與長連接方案,可使大數(shù)據(jù)得到高效傳輸及處理。
在智能硬件耦合方面,MDM-IoT 對(duì)無線、串口和網(wǎng)絡(luò)協(xié)議進(jìn)行了融合,此外,考慮到保證數(shù)據(jù)完整的重要性,有關(guān)人員還對(duì)不丟包協(xié)議進(jìn)行了研發(fā),通過及時(shí)處理并補(bǔ)發(fā)丟包數(shù)據(jù)的方式,確保大數(shù)據(jù)能夠獲得高效且穩(wěn)定的處理。
C/S 將智能硬件視為Client 端,其職責(zé)是對(duì)緩沖區(qū)是否有感知數(shù)據(jù)存在進(jìn)行持續(xù)檢查,如果發(fā)現(xiàn)有感知數(shù)據(jù)存在,要及時(shí)將其發(fā)送并清空。若發(fā)送心跳數(shù)據(jù)后,中間件沒有傳回相應(yīng)的數(shù)據(jù),則要對(duì)數(shù)據(jù)進(jìn)行再次發(fā)送,在發(fā)送三次后,仍未收到相應(yīng)數(shù)據(jù),表明傳輸網(wǎng)絡(luò)存在故障,此時(shí),智能終端將對(duì)中間件進(jìn)行重新連接并且建立通信。
這里要明確一點(diǎn),心跳包頻率往往由雙方以通信質(zhì)量需要達(dá)到的要求為依據(jù)進(jìn)行確定,中間件的作用是對(duì)設(shè)計(jì)數(shù)據(jù)模型的具體要求進(jìn)行提供。實(shí)際應(yīng)用時(shí),有關(guān)人員應(yīng)以物聯(lián)網(wǎng)設(shè)備所感知數(shù)據(jù)的質(zhì)量及大小為參考,通過優(yōu)化傳輸格式等細(xì)節(jié)的方式,使心跳數(shù)據(jù)得到同步,為監(jiān)控展示等環(huán)節(jié)的順利開展提供便利。
對(duì)感知數(shù)據(jù)加以提供的主體是智能硬件,數(shù)據(jù)經(jīng)由中間件解析,對(duì)是否存在丟包情況進(jìn)行判斷,隨后,借助異步隊(duì)列完成緩存原始數(shù)據(jù)/上傳數(shù)據(jù)/解析數(shù)據(jù)的操作,在分類推送的基礎(chǔ)上,將感知數(shù)據(jù)所提取參數(shù)傳遞至服務(wù)器內(nèi)部,用來對(duì)大數(shù)據(jù)進(jìn)行訓(xùn)練,通過將Web 端和心跳數(shù)據(jù)進(jìn)行長連接的方式,為設(shè)備通信有效性提供保障[2]。此外,有監(jiān)控必要性的數(shù)據(jù),除了眾所周知的設(shè)備id,還有設(shè)備地點(diǎn)、PM2.5 和環(huán)境溫度等,上述數(shù)據(jù)均由服務(wù)器將結(jié)果向Web 端進(jìn)行推送并展示。
本文所討論設(shè)計(jì)方案,其特點(diǎn)主要體現(xiàn)如下:
首先,可對(duì)數(shù)據(jù)完整性進(jìn)行感知。大數(shù)據(jù)服務(wù)器往往會(huì)先解析智能硬件所傳遞數(shù)據(jù),再將提取所得數(shù)據(jù)批次號(hào)傳遞給智能硬件,只有收到服務(wù)器發(fā)回信號(hào),智能硬件才能對(duì)其他數(shù)據(jù)進(jìn)行傳遞。若響應(yīng)信號(hào)與之前發(fā)送信號(hào)有大致相同的批次號(hào),則表明數(shù)據(jù)完整。
其次,可對(duì)數(shù)據(jù)穩(wěn)定性進(jìn)行感知。在數(shù)據(jù)被接收后,中間件將針對(duì)原始數(shù)據(jù)/解析數(shù)據(jù)/封裝數(shù)據(jù)開啟相應(yīng)隊(duì)列,由隊(duì)列負(fù)責(zé)處理緩存等操作,確保舊數(shù)據(jù)能夠定期被刪除。如果網(wǎng)絡(luò)存在故障,將出現(xiàn)封裝數(shù)據(jù)無法上傳的情況,等到網(wǎng)絡(luò)恢復(fù)正常,該系統(tǒng)將及時(shí)掃描上傳失敗數(shù)據(jù)并進(jìn)行補(bǔ)發(fā)。上文所提及環(huán)節(jié)的開展形式均為多進(jìn)程,這樣設(shè)計(jì)的目的是確保數(shù)據(jù)能夠被高效獲取并得到充分利用,避免資源出現(xiàn)不必要浪費(fèi)。
最后,可對(duì)數(shù)據(jù)高效性進(jìn)行感知。通信雙方對(duì)長連接加以應(yīng)用的初衷,主要是降低數(shù)據(jù)交互難度。基于心跳設(shè)計(jì)為長連接活躍性進(jìn)行保持,一般情況下,KeepAlive 所設(shè)置時(shí)間均為7200s,也就是說,如果在7200s 內(nèi)沒有數(shù)據(jù)被傳輸,則要利用探針對(duì)連接是否可用加以確定,該測試的默認(rèn)次數(shù)為10 次,間隔為75s,有關(guān)人員可結(jié)合實(shí)際情況進(jìn)行調(diào)整。本文所討論中間件,便以上述機(jī)制為依托,在傳送心跳數(shù)據(jù)的同時(shí)獲取相應(yīng)監(jiān)控?cái)?shù)據(jù),達(dá)到對(duì)設(shè)備狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控的最終目的。
在對(duì)物聯(lián)網(wǎng)設(shè)備所采集數(shù)據(jù)進(jìn)行解析后,MDM-IoT 便進(jìn)入等待服務(wù)器消費(fèi)的狀態(tài),將Web 端和心跳數(shù)據(jù)相連接的基礎(chǔ)上,借助算法服務(wù)器對(duì)特征值參數(shù)加以分析,并向Web 端傳送分析結(jié)果,確保Web 端能夠?qū)⒆罱K數(shù)據(jù)進(jìn)行直接展示。
常規(guī)追蹤技術(shù)的代表是鏈路測試技術(shù),該技術(shù)強(qiáng)調(diào)以路由網(wǎng)絡(luò)鏈的測試為依托,對(duì)攻擊源頭加以確定,在實(shí)際應(yīng)用時(shí)有關(guān)人員發(fā)現(xiàn),要想使該技術(shù)發(fā)揮出應(yīng)有作用,通常需要滿足大量要求,不僅要反復(fù)測試,追蹤花費(fèi)的時(shí)間也相對(duì)較長,這也決定其并不適合被用來對(duì)固件進(jìn)行升級(jí)[3]。
而MDM-IoT 創(chuàng)造性的引入了數(shù)據(jù)包作為記錄載體,強(qiáng)調(diào)基于技術(shù)包對(duì)ip 進(jìn)行追蹤并記錄,該技術(shù)又被稱作SPIE。本文所提及反向追蹤算法,便對(duì)該技術(shù)進(jìn)行了利用,其原理如下:服務(wù)器ip 會(huì)在穩(wěn)定運(yùn)行的同時(shí)固定,為智能終端的連接提供支持,除特殊情況外,智能終端及相應(yīng)服務(wù)器均處于相同網(wǎng)段內(nèi),由智能終端對(duì)網(wǎng)絡(luò)進(jìn)行分配,明確服務(wù)器所處層級(jí),如果服務(wù)器位于云端,只需對(duì)云端ip 加以提供即可。若服務(wù)器位于其他層級(jí),則要視情況對(duì)相應(yīng)信息進(jìn)行提供。
研究表明,傳統(tǒng)端現(xiàn)有物聯(lián)網(wǎng)設(shè)備的內(nèi)部程序,多為對(duì)執(zhí)行文件進(jìn)行燒錄,如果應(yīng)用程序有更新需求,通常需要前往現(xiàn)場重新燒錄,人力資源被浪費(fèi)的情況無法避免。有關(guān)人員出于對(duì)上述問題加以解決的考慮,基于MDM-IoT 對(duì)遠(yuǎn)程升級(jí)服務(wù)進(jìn)行了集成,用戶只要將固件上傳,便能夠通過遠(yuǎn)程控制的方式,使固件得到升級(jí)。在此過程中,反向追蹤也發(fā)揮了重要作用,該算法主要被用來查找設(shè)備并下發(fā)更新指令,由系統(tǒng)對(duì)應(yīng)用進(jìn)行自主下載并升級(jí),升級(jí)完成后,設(shè)備將自動(dòng)上線。該過程所需通信協(xié)議的幀格式如下:
表1 自定義幀格式
上文對(duì)輕量級(jí)的通用中間件平臺(tái)進(jìn)行了設(shè)計(jì),該平臺(tái)創(chuàng)造性地將應(yīng)用層和智能硬件感知相融合,通過云計(jì)算的方式,賦予智能硬件全新使命。現(xiàn)階段,基于該技術(shù)所設(shè)計(jì)IoT 產(chǎn)品,在北京等地得到了大力推廣與運(yùn)用,相關(guān)產(chǎn)品憑借良好的伸縮性和穩(wěn)定性,獲得了用戶的一致認(rèn)可,由此可見,端云一體化有極大的發(fā)展空間,對(duì)其進(jìn)行優(yōu)化仍然是未來研究的重點(diǎn)。