首页 > 范文大全 > 正文

内容分发系统中终端软件在线升级的实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇内容分发系统中终端软件在线升级的实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:针对传统的多媒体系统的种种劣势,提出一种基于嵌入式Linux的内容分发系统。介绍了这种系统的终端架构及文件分发策略并详细阐述了终端软件在线升级技术。

关键词:内容分发;文件分发;在线升级

中图分类号:TP393

传统的多媒体信息主要采用两种方式:第一种采用人工放置、播放预录好的多媒体信息,第二种利用IP网络实时进行全网广播。其中第一种方式管理十分复杂,播放内容管理灵活性很差,而第二种部署成本较高,实时广播也对带宽有很高的要求。内容分发系统(contented livery net work,CDN)利用了网络相对空闲的时段将需要使用的音视频或文字信息分发并存储到终端设备,终端设备根据系统发送的控制信息按头端要求播放内容,同时也可以播放系统临时发送的即时信息。这种方案解决了实时广播大量消耗网络资源的问题,同时也充分发挥了网络的可管理,灵活,实时,互动等优势。然而这种系统和其他系统一样,在使用过程中可能会需要增加某些功能或修补一些bug。从成本角度考虑,对于大量的远程终端的版本更新只能通过在线升级来实现。软件在线升级能大大提高产品的实用性以及使用周期。

1 内容分发系统终端架构

数字内容分发系统终端采用以BroadcomBCM7230为核心的平台并搭载Linux操作系统。系统功能模块架构如图1所示。其中XMPPClient承担终端与头端及其他终端之间的通讯。通讯管理模块主要功能是接收XMPPClient指令,进行终端通讯的封装和解析,转化为本地消息格式,转发给主控模块并且同时接收主控模块的消息,封装后发送给XMPPClient。

图1 系统功能模块架构图

主控模块是终端的控制和调度中心,根据从通讯管理模块收到的指令进行终端工作的控制和任务调度。它的主要功能是启动相应功能模块、任务分发、接受和采集终端各功能模块的通讯请求和信息,转发给通讯管理模块。

播放管理模块根据播放策略指示,按照样式要求播放展示媒资文件。存储管理模块根据部署条件,管理媒资、程序以及其他下载文件并将文件分发到指定目录,且可按照指令删除或移动文件。监控管理模块根据指令消息,执行相关的终端控制命令,接受检测指令消息,调用相关程序,反馈相关信息。状态集和指令集在储存和执行。下载管理模块根据下载指令消息,调用下载协议到指定地址下载文件。升级管理模块根据升级指令信息,对升级文件进行操作,或是根据指令恢复之前版本。

2 文件分发策略

图2 系统网络架构图

如图2所示,每个终端根据头端指派位于网络中的某一层。除了最底层的终端外,每一终端都连接着下一层的多个终端,称之为组。该上层终端称之为组长,其它的所有下层终端均为组员。第一层也为一组,该组组长为头端服务器(CoreServer)。

所有的分发内容均由头端控制,包括获取的内容、获取的时间,即头端通知每一台终端各自的需获取的内容,无论该终端位于哪一层。内容分发时分发到各终端的内容完全一样。

系统包括P2P文件分发服务器和FTP补偿服务器两种类型的服务器。P2P文件分发服务器存储需分发的源文件以及拆分后的小文件,其承担文件分发中的小文件的分发。FTP补偿服务器只存储需分发的源文件,提供按块获取的FTP服务。

针对选出的终端集合,首先判断终端数是否超过头端的并发下载数。若不超过,则选择这些终端从头端直接FTP下载大文件;若超过,则进行分层分组,构建P2P层次网络,进行内容分发。

3 终端软件在线升级方案

一般来说升级需要满足两方面的需要:(1)升级过程中的保护,如意外断电,或升级失败后如何操作。(2)保证升级程序的正确性,防止错误程序的运行。升级模块的功能如表1所示。

功能 功能说明

命令解析 解析服务器端软件升级命令

升级策略 强制升级 根据服务器端指令立即进行升级。

定时升级 根据服务器端指令指定的时间,进行定时升级。

软件包下载 下载待升级的软件包

软件包解压 待升级软件包解压

新版本启用 启用升级后的软件

表1 升级模块功能

内容分发系统终端NANDFlash中的/mnt/app/中有两份程序文件,目录分别为images0和images1,出厂时两个目录下的文件是相同的。终端开机启动后会根据/root/app_cfg.sh文件来确定启动那个版本的程序。如果/root/app_cfg.sh指示使用A版本,则终端首先启动A版本,如果A版本启动后程序异常退出,则会尝试启动B版本。

错误号 说明

-1 服务器端命令错误

-100 无法找到下载的升级包

-101 当前程序版本号大于升级程序

-102 MD5验证失败

-103 解压失败

-104 无法获取当前程序版本信息

-105 无法打开下载目录

表2 升级错误说明

头端通过XMPPClient通知终端升级,升级指令采用JSON格式,如下所示:{'session_id':'123456','content_type':'request','reply':'true','module':'terminal.update','invoke':'start'}。升级包软件将通过下载模块下载并存储到指定目录。下载完成后先采用MD5校验机制并备份原有程序。运行Update程序之前,需校验Update程序的签名,防止违法运行非法的程序。Update程序将判断当前终端的版本号,如果版本号大于下载升级程序文件中的版本号,则终止升级。Update程序通过/root/app_cfg.sh判断当前终端版本,比如当前运行A版本,则将升级文件复制到/mnt/app/images1目录下,并将/root/app_cfg.sh中的版本指示改为B版本,升级成功后,终端将运行B版本也就是升级后的版本,

并上报头端{'session_id':'123456','content_type':'response','reply':'false','module':'terminal.update','invoke':'start','errno':'0'}。若升级失败,则上报头端,错误号如表2所示,终端仍然会运行之前版本,头端将根据实际情况再次升级。

另外为了安全性,升级包文件需要压缩后加密,Update程序负责解密和解压以防止升级包被非法替换。

4 结束语

随着网络信息化的高速发展,内容分发系统在各方面都将有广泛的应用前景。对于广泛分布的大量终端设备来说,要延长产品的使用周期,在线升级是必然的选择。本文介绍的内容分发系统的在线升级方案简洁且易于实现。

参考文献:

[1]徐宝成,王磊.基于嵌入式终端的信息交互平台的设计与实现[J].计算机应用,2007,27(5):1271-1273.

[2]赵珂,郑尚辉,沈洪骥.一种分布式系统自动升级的方法[J].计算机系统应用,2010,19(10):214-216.