分布式智能终端在线升级系统研究

2020-09-29 07:54王经纬
科学与信息化 2020年25期

摘 要 随着人工智能的日臻成熟,越来越多的技术从实验室走向市场,逐步实现产品化、工业化。而计算设备小型化、移动化也是当下一大趋势,这些分布式的智能终端有着强大的边缘计算能力,然而,支撑这些设备运算的软件需要不定期地升级、更新,以便更好地提供服务。由于这些设备的地域分布、部署位置等原因,如果人为升级,将会非常费时费力,十分不便。本文提出一种基于HFS的分布式智能终端升级系统,采用C/S架构,使用MQTT协议提供通信支持,实现分布式智能终端的在线升级。

关键词 MQTT;HFS;在线升级

1背景及现状

智能终端一般具有比较强大的计算、通信能力,可对实时采集的不同信号源进行自主分析、并与服务器主机进行通信。支撑起这些功能的是一些基于移动端架构的软件,根据软件架构的不同,一般可分为安卓、IOS架构,以及arm架构,X86架构由于无法满足一些工业场景需求,一般用作服务器端软件构架。随着神经网络的轻量化,许多支持安卓、IOS架构的硬件平台可实现一些人工智能技术的落地,如人脸识别技术,而使用这一软件构架的终端设备,由于软件构架中存在系统固件升级的流程策略,程序包,使版本升级工作变得十分便捷,只需按照相关步骤进行,即可完成程序包的推送、更新,就像我们手机中的app更新一样,成熟稳定[1]。

还有很多的智能终端,为了搭载计算能力更加强大的设备,采用arm软件架构,虽然arm架构的设备与安卓、IOS设备在性能上差距不是非常明显,但其稳定性、经济性上的优势,在很多分布式智能场景中还是终端软件构架的首选。然而,这些arm架构设备的软件升级由于没有系统自带的升级策略、程序包,给应用软件的升级带来极大的不便,这就需要用户自己通过现有网络通信,结合自身实际,自主开发一套分布式智能终端在线升级系统。

2基于HFS的分布式智能终端在线升级系统

在基于arm架构的实际项目中,终端上的应用软件是通过python语言编写的,以脚本方式运行。由于终端分布在不同的位置,每次应用软件升级如果人工执行的话,费时费力,并且不易维护软件版本,效率低下。通过采用C/S架构模式的基于HFS的分布式智能终端升级系统,借助HFS成熟的文件传输体系,以及mqtt通信,实现了分布式终端的状态监测、程序文件传输、终端内部升级等一套完整的在线升级流程[2]。

2.1 基本概念

HFS: Http File Server,是基于http协议的文件服务器,比FTP简单,只需一句命令即可将指定文件夹设置为文件服务器,其他机器访问指定端口即可访问该文件夹,选择其下的不同文件可进行下载。

MQTT:Message Queuing Telemetry Transport,消息队列遥测传输,是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式、客户端-服务器的消息发布/订阅传输的消息协议,它工作在TCP/IP协议族上,为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计,具有轻量、简单、开放和易于实现等特点。

2.2 系统构架

系统采用C/S(客户端/服务器)构架模式,其中,服务器主要进行HFS服务器的生成,以及升级包的维护,客户端主要通过MQTT协议发送状态信息,服务器通过HTPP协议将升级包的相关信息(地址、校验值等)发送给客户端,客户端接收并下载、校验后,将下载状态反馈服务器,完成升级包的分发,客户端再通过程序升级策略进行升级包的部署。系统构架图如图1。系统接口信息表如表1。

2.3 升级包的分发

升级包的分发是升级工作的关键,只有升级包能够从服务器下載到指定终端,才能进一步进行系统的升级。与普通的IP地址点到点传输不同,MQTT协议通过订阅/发布消息模式,无须具体知道客户端IP地址,只需根据订阅信息即可找到客户端,这样一来,极大方便了相关信息的传送与交互,只要发送、接收的是同一主题的订阅信息,即可形成消息传输。在公网通信中,获取单机公网IP地址有时不是那么容易,而采用MQTT协议进行通信,提高了效率和准确度。

升级包的分发分为服务器端和服务器、智能终端交互两部分。服务器负责HFS服务器的搭建以及升级包的维护,智能终端主要负责实时上报自身状态,主动连接服务器,一旦接收到服务器下发的升级包信息,立即下载,并通过校验,反馈下载结果,形成与服务器的交互[3]。

服务器端操作主要步骤可分为:

(1)HFS服务器端配置并启动服务,生成指定目录下的http server。

(2)升级包维护,选择升级包并上传到HFS服务器,为下发做准备。

(3)文件MD5值计算,提供通信校验。

服务器、智能终端的交互,是升级包下载的关键,通过MQTT的信息交互,完成下载工作的准备,再让智能终端通过升级包地址下载,并通过计算MD5值与源升级包进行校验,完成下载过程。整体过程如图2,可概括如下。

服务器:

(1)通过MQTT协议实时接收智能终端发出的各种信息,包括连接信息、下载反馈信息等。

(2)选择能够连接的智能终端,向其发送升级包地址、版本、MD5等信息。

智能终端:

(1)实时接收服务器下发的升级包信息,包括地址、版本等。

(2)按照接收到的地址下载升级包,保存并计算MD5值。

(3)MD5校验后,将下载结果发送服务器。

(4)维护版本配置文件。为执行升级操作,创建一个版本配置文件,每次下载成功后,将“最新版本”字段维护为下载到的升级包版本。

(5)根据升级包替代策略,重新启动程序。

图2 服务器、智能终端交互流程图

2.3 智能终端自主升级

每次智能终端上电开机,系统都要自动读取版本配置文件,通过比较“当前版本”与“最新版本”,并查看是否存在最新版本升级包,来执行升级包的替换工作。主要流程可概括以下步骤:

(1)每次开机读取配置文件,比较版本。

(2)若当前版本比下载的升级包版本小,则首先查看下载保存路径中是否有最新版升级包。

(3)若存在最新升级包,则将升级包拷贝到主程序运行目录下,解压,并重命名文件,使之替换原有主程序。

(4)启动主程序,若能够正常启动,则替换成功;若启动异常,则在主程序运行目录下删除升级包,再启动原有主程序[4]。

3结束语

智能终端越来越广泛的应用,给我们的工作、生活带来了极大便利,也让人工智能技术在不同领域中落地开花,承载这些技术的软件需要不断升级更新,而为了满足场景需要,这些智能终端通常都部署在不同的位置,这样的分布式部署给软件的升级带来极大不便,虽然基于安卓系统的软件构架能够满足OTA远程升级的要求,但是同样广泛应用的嵌入式软件构架的终端没有现成的升级策略及架构,这使得很多情况下,需要根据自身项目实际,自主开发一套适应项目的分布式升级系统。

本文描述的分布式智能终端升级系统,是面向arm架构、嵌入式软件的一种分布式升级系统,它采用C/S的模式,通过MQTT通信协议传输状态信息,服务器端可根据状态信息选择向指定终端发布升级包的下载信息,再通过服务器生成HFS服务,智能终端可自动下载升级包,并进行MD5校验,通过后完成升级包的下载。在每次终端上电启动时,通过读取配置文件信息,执行主程序升级包的替换策略,保证了主程序的及时更新,极大提高了升级效率,压缩了成本,有着极大的应用前景和价值。同时,还有几点不足,可在后续项目工作中不断提高,让该系统在实际应用中更加灵活、有效。

(1)主动式升级包分发机制。现有系统是服务器通过查看终端在线情况,人为选择向指定终端分发升级包,属于被动行为,后续系统可向终端主动上报程序版本,服务器端有升级包更新时,自动向终端分发升级包的方向改进,这样可减少遗漏,也把升级包分发的策略交给服务器端,减轻了终端的计算量,让有限的计算资源在主业务中起到最大作用。

(2)断点续传机制。在实际应用中,很多情况下是都是基于公网通信的,通信质量有时受基站信号影响不是很好,断网现象时常发生,需要在网络断点续传、通信重联等机制上不断改进完善,为升级工作提供有力保障[5]。

以上,是针对本系统的全面论述,在今后的工作中,还会根据应用中的不足不断改善,以做到更好、更高效地实现人工智能技术的落地。

参考文献

[1] 张航.MQTT协议扩展与协议优化的研究与应用[D].北京:北京邮电大学,2019.

[2] 李娜.MQTT数据交换协议的分析与优化[J].网络空间安全,2019 (9):49-58.

[3] 徐健.基于Winhex的HFS+文件提取方法研究[J].计算机时代,2019(8):59-62.

[4] 施庆国,尚海立,马婕,等.智能网联汽车的OTA升级方案[C].中国汽车工程学会.2018中国汽车工程学会年会论文集.北京:北京汽车股份有限公司汽车研究院,2018:49-55.

[5] 鲁亚凯.基于Linux系统智能电视OTA差分升级模式的改进与实现[D].重庆:重庆邮电大学,2018.

作者简介

王经纬(1987-),男,河北沧州人;学历:硕士研究生学历,职称:工程师,现就职单位:中车研究院,研究方向:智能軟件研究。