摘 要 隨著人工智能的日臻成熟,越來(lái)越多的技術(shù)從實(shí)驗(yàn)室走向市場(chǎng),逐步實(shí)現(xiàn)產(chǎn)品化、工業(yè)化。而計(jì)算設(shè)備小型化、移動(dòng)化也是當(dāng)下一大趨勢(shì),這些分布式的智能終端有著強(qiáng)大的邊緣計(jì)算能力,然而,支撐這些設(shè)備運(yùn)算的軟件需要不定期地升級(jí)、更新,以便更好地提供服務(wù)。由于這些設(shè)備的地域分布、部署位置等原因,如果人為升級(jí),將會(huì)非常費(fèi)時(shí)費(fèi)力,十分不便。本文提出一種基于HFS的分布式智能終端升級(jí)系統(tǒng),采用C/S架構(gòu),使用MQTT協(xié)議提供通信支持,實(shí)現(xiàn)分布式智能終端的在線升級(jí)。
關(guān)鍵詞 MQTT;HFS;在線升級(jí)
1背景及現(xiàn)狀
智能終端一般具有比較強(qiáng)大的計(jì)算、通信能力,可對(duì)實(shí)時(shí)采集的不同信號(hào)源進(jìn)行自主分析、并與服務(wù)器主機(jī)進(jìn)行通信。支撐起這些功能的是一些基于移動(dòng)端架構(gòu)的軟件,根據(jù)軟件架構(gòu)的不同,一般可分為安卓、IOS架構(gòu),以及arm架構(gòu),X86架構(gòu)由于無(wú)法滿足一些工業(yè)場(chǎng)景需求,一般用作服務(wù)器端軟件構(gòu)架。隨著神經(jīng)網(wǎng)絡(luò)的輕量化,許多支持安卓、IOS架構(gòu)的硬件平臺(tái)可實(shí)現(xiàn)一些人工智能技術(shù)的落地,如人臉識(shí)別技術(shù),而使用這一軟件構(gòu)架的終端設(shè)備,由于軟件構(gòu)架中存在系統(tǒng)固件升級(jí)的流程策略,程序包,使版本升級(jí)工作變得十分便捷,只需按照相關(guān)步驟進(jìn)行,即可完成程序包的推送、更新,就像我們手機(jī)中的app更新一樣,成熟穩(wěn)定[1]。
還有很多的智能終端,為了搭載計(jì)算能力更加強(qiáng)大的設(shè)備,采用arm軟件架構(gòu),雖然arm架構(gòu)的設(shè)備與安卓、IOS設(shè)備在性能上差距不是非常明顯,但其穩(wěn)定性、經(jīng)濟(jì)性上的優(yōu)勢(shì),在很多分布式智能場(chǎng)景中還是終端軟件構(gòu)架的首選。然而,這些arm架構(gòu)設(shè)備的軟件升級(jí)由于沒(méi)有系統(tǒng)自帶的升級(jí)策略、程序包,給應(yīng)用軟件的升級(jí)帶來(lái)極大的不便,這就需要用戶自己通過(guò)現(xiàn)有網(wǎng)絡(luò)通信,結(jié)合自身實(shí)際,自主開發(fā)一套分布式智能終端在線升級(jí)系統(tǒng)。
2基于HFS的分布式智能終端在線升級(jí)系統(tǒng)
在基于arm架構(gòu)的實(shí)際項(xiàng)目中,終端上的應(yīng)用軟件是通過(guò)python語(yǔ)言編寫的,以腳本方式運(yùn)行。由于終端分布在不同的位置,每次應(yīng)用軟件升級(jí)如果人工執(zhí)行的話,費(fèi)時(shí)費(fèi)力,并且不易維護(hù)軟件版本,效率低下。通過(guò)采用C/S架構(gòu)模式的基于HFS的分布式智能終端升級(jí)系統(tǒng),借助HFS成熟的文件傳輸體系,以及mqtt通信,實(shí)現(xiàn)了分布式終端的狀態(tài)監(jiān)測(cè)、程序文件傳輸、終端內(nèi)部升級(jí)等一套完整的在線升級(jí)流程[2]。
2.1 基本概念
HFS: Http File Server,是基于http協(xié)議的文件服務(wù)器,比FTP簡(jiǎn)單,只需一句命令即可將指定文件夾設(shè)置為文件服務(wù)器,其他機(jī)器訪問(wèn)指定端口即可訪問(wèn)該文件夾,選擇其下的不同文件可進(jìn)行下載。
MQTT:Message Queuing Telemetry Transport,消息隊(duì)列遙測(cè)傳輸,是ISO 標(biāo)準(zhǔn)(ISO/IEC PRF 20922)下基于發(fā)布/訂閱范式、客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸?shù)南f(xié)議,它工作在TCP/IP協(xié)議族上,為硬件性能低下的遠(yuǎn)程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的情況下而設(shè)計(jì),具有輕量、簡(jiǎn)單、開放和易于實(shí)現(xiàn)等特點(diǎn)。
2.2 系統(tǒng)構(gòu)架
系統(tǒng)采用C/S(客戶端/服務(wù)器)構(gòu)架模式,其中,服務(wù)器主要進(jìn)行HFS服務(wù)器的生成,以及升級(jí)包的維護(hù),客戶端主要通過(guò)MQTT協(xié)議發(fā)送狀態(tài)信息,服務(wù)器通過(guò)HTPP協(xié)議將升級(jí)包的相關(guān)信息(地址、校驗(yàn)值等)發(fā)送給客戶端,客戶端接收并下載、校驗(yàn)后,將下載狀態(tài)反饋服務(wù)器,完成升級(jí)包的分發(fā),客戶端再通過(guò)程序升級(jí)策略進(jìn)行升級(jí)包的部署。系統(tǒng)構(gòu)架圖如圖1。系統(tǒng)接口信息表如表1。
2.3 升級(jí)包的分發(fā)
升級(jí)包的分發(fā)是升級(jí)工作的關(guān)鍵,只有升級(jí)包能夠從服務(wù)器下載到指定終端,才能進(jìn)一步進(jìn)行系統(tǒng)的升級(jí)。與普通的IP地址點(diǎn)到點(diǎn)傳輸不同,MQTT協(xié)議通過(guò)訂閱/發(fā)布消息模式,無(wú)須具體知道客戶端IP地址,只需根據(jù)訂閱信息即可找到客戶端,這樣一來(lái),極大方便了相關(guān)信息的傳送與交互,只要發(fā)送、接收的是同一主題的訂閱信息,即可形成消息傳輸。在公網(wǎng)通信中,獲取單機(jī)公網(wǎng)IP地址有時(shí)不是那么容易,而采用MQTT協(xié)議進(jìn)行通信,提高了效率和準(zhǔn)確度。
升級(jí)包的分發(fā)分為服務(wù)器端和服務(wù)器、智能終端交互兩部分。服務(wù)器負(fù)責(zé)HFS服務(wù)器的搭建以及升級(jí)包的維護(hù),智能終端主要負(fù)責(zé)實(shí)時(shí)上報(bào)自身狀態(tài),主動(dòng)連接服務(wù)器,一旦接收到服務(wù)器下發(fā)的升級(jí)包信息,立即下載,并通過(guò)校驗(yàn),反饋下載結(jié)果,形成與服務(wù)器的交互[3]。
服務(wù)器端操作主要步驟可分為:
(1)HFS服務(wù)器端配置并啟動(dòng)服務(wù),生成指定目錄下的http server。
(2)升級(jí)包維護(hù),選擇升級(jí)包并上傳到HFS服務(wù)器,為下發(fā)做準(zhǔn)備。
(3)文件MD5值計(jì)算,提供通信校驗(yàn)。
服務(wù)器、智能終端的交互,是升級(jí)包下載的關(guān)鍵,通過(guò)MQTT的信息交互,完成下載工作的準(zhǔn)備,再讓智能終端通過(guò)升級(jí)包地址下載,并通過(guò)計(jì)算MD5值與源升級(jí)包進(jìn)行校驗(yàn),完成下載過(guò)程。整體過(guò)程如圖2,可概括如下。
服務(wù)器:
(1)通過(guò)MQTT協(xié)議實(shí)時(shí)接收智能終端發(fā)出的各種信息,包括連接信息、下載反饋信息等。
(2)選擇能夠連接的智能終端,向其發(fā)送升級(jí)包地址、版本、MD5等信息。
智能終端:
(1)實(shí)時(shí)接收服務(wù)器下發(fā)的升級(jí)包信息,包括地址、版本等。
(2)按照接收到的地址下載升級(jí)包,保存并計(jì)算MD5值。
(3)MD5校驗(yàn)后,將下載結(jié)果發(fā)送服務(wù)器。
(4)維護(hù)版本配置文件。為執(zhí)行升級(jí)操作,創(chuàng)建一個(gè)版本配置文件,每次下載成功后,將“最新版本”字段維護(hù)為下載到的升級(jí)包版本。
(5)根據(jù)升級(jí)包替代策略,重新啟動(dòng)程序。
圖2 服務(wù)器、智能終端交互流程圖
2.3 智能終端自主升級(jí)
每次智能終端上電開機(jī),系統(tǒng)都要自動(dòng)讀取版本配置文件,通過(guò)比較“當(dāng)前版本”與“最新版本”,并查看是否存在最新版本升級(jí)包,來(lái)執(zhí)行升級(jí)包的替換工作。主要流程可概括以下步驟:
(1)每次開機(jī)讀取配置文件,比較版本。
(2)若當(dāng)前版本比下載的升級(jí)包版本小,則首先查看下載保存路徑中是否有最新版升級(jí)包。
(3)若存在最新升級(jí)包,則將升級(jí)包拷貝到主程序運(yùn)行目錄下,解壓,并重命名文件,使之替換原有主程序。
(4)啟動(dòng)主程序,若能夠正常啟動(dòng),則替換成功;若啟動(dòng)異常,則在主程序運(yùn)行目錄下刪除升級(jí)包,再啟動(dòng)原有主程序[4]。
3結(jié)束語(yǔ)
智能終端越來(lái)越廣泛的應(yīng)用,給我們的工作、生活帶來(lái)了極大便利,也讓人工智能技術(shù)在不同領(lǐng)域中落地開花,承載這些技術(shù)的軟件需要不斷升級(jí)更新,而為了滿足場(chǎng)景需要,這些智能終端通常都部署在不同的位置,這樣的分布式部署給軟件的升級(jí)帶來(lái)極大不便,雖然基于安卓系統(tǒng)的軟件構(gòu)架能夠滿足OTA遠(yuǎn)程升級(jí)的要求,但是同樣廣泛應(yīng)用的嵌入式軟件構(gòu)架的終端沒(méi)有現(xiàn)成的升級(jí)策略及架構(gòu),這使得很多情況下,需要根據(jù)自身項(xiàng)目實(shí)際,自主開發(fā)一套適應(yīng)項(xiàng)目的分布式升級(jí)系統(tǒng)。
本文描述的分布式智能終端升級(jí)系統(tǒng),是面向arm架構(gòu)、嵌入式軟件的一種分布式升級(jí)系統(tǒng),它采用C/S的模式,通過(guò)MQTT通信協(xié)議傳輸狀態(tài)信息,服務(wù)器端可根據(jù)狀態(tài)信息選擇向指定終端發(fā)布升級(jí)包的下載信息,再通過(guò)服務(wù)器生成HFS服務(wù),智能終端可自動(dòng)下載升級(jí)包,并進(jìn)行MD5校驗(yàn),通過(guò)后完成升級(jí)包的下載。在每次終端上電啟動(dòng)時(shí),通過(guò)讀取配置文件信息,執(zhí)行主程序升級(jí)包的替換策略,保證了主程序的及時(shí)更新,極大提高了升級(jí)效率,壓縮了成本,有著極大的應(yīng)用前景和價(jià)值。同時(shí),還有幾點(diǎn)不足,可在后續(xù)項(xiàng)目工作中不斷提高,讓該系統(tǒng)在實(shí)際應(yīng)用中更加靈活、有效。
(1)主動(dòng)式升級(jí)包分發(fā)機(jī)制?,F(xiàn)有系統(tǒng)是服務(wù)器通過(guò)查看終端在線情況,人為選擇向指定終端分發(fā)升級(jí)包,屬于被動(dòng)行為,后續(xù)系統(tǒng)可向終端主動(dòng)上報(bào)程序版本,服務(wù)器端有升級(jí)包更新時(shí),自動(dòng)向終端分發(fā)升級(jí)包的方向改進(jìn),這樣可減少遺漏,也把升級(jí)包分發(fā)的策略交給服務(wù)器端,減輕了終端的計(jì)算量,讓有限的計(jì)算資源在主業(yè)務(wù)中起到最大作用。
(2)斷點(diǎn)續(xù)傳機(jī)制。在實(shí)際應(yīng)用中,很多情況下是都是基于公網(wǎng)通信的,通信質(zhì)量有時(shí)受基站信號(hào)影響不是很好,斷網(wǎng)現(xiàn)象時(shí)常發(fā)生,需要在網(wǎng)絡(luò)斷點(diǎn)續(xù)傳、通信重聯(lián)等機(jī)制上不斷改進(jìn)完善,為升級(jí)工作提供有力保障[5]。
以上,是針對(duì)本系統(tǒng)的全面論述,在今后的工作中,還會(huì)根據(jù)應(yīng)用中的不足不斷改善,以做到更好、更高效地實(shí)現(xiàn)人工智能技術(shù)的落地。
參考文獻(xiàn)
[1] 張航.MQTT協(xié)議擴(kuò)展與協(xié)議優(yōu)化的研究與應(yīng)用[D].北京:北京郵電大學(xué),2019.
[2] 李娜.MQTT數(shù)據(jù)交換協(xié)議的分析與優(yōu)化[J].網(wǎng)絡(luò)空間安全,2019 (9):49-58.
[3] 徐健.基于Winhex的HFS+文件提取方法研究[J].計(jì)算機(jī)時(shí)代,2019(8):59-62.
[4] 施慶國(guó),尚海立,馬婕,等.智能網(wǎng)聯(lián)汽車的OTA升級(jí)方案[C].中國(guó)汽車工程學(xué)會(huì).2018中國(guó)汽車工程學(xué)會(huì)年會(huì)論文集.北京:北京汽車股份有限公司汽車研究院,2018:49-55.
[5] 魯亞凱.基于Linux系統(tǒng)智能電視OTA差分升級(jí)模式的改進(jìn)與實(shí)現(xiàn)[D].重慶:重慶郵電大學(xué),2018.
作者簡(jiǎn)介
王經(jīng)緯(1987-),男,河北滄州人;學(xué)歷:碩士研究生學(xué)歷,職稱:工程師,現(xiàn)就職單位:中車研究院,研究方向:智能軟件研究。