APP下载

网络数字电视升级方法

2022-10-20四川长虹网络科技有限责任公司熊建勇

卫星电视与宽带多媒体 2022年15期
关键词:校验分区个数

四川长虹网络科技有限责任公司:熊建勇

随着我国数字电视的普及,无论是广电网络的数字电视一体机、数字电视机顶盒还是三大运营商的iptv机顶盒已经走进了家家户户;而随着数字电视业务的发展,软件升级也越来越频繁;庞大的用户群同时进行升级对前端网络服务器具有非常大的压力;常规的降压方式是限制升级峰值,对用户进行分时段升级,但此种方式必然要加大整体网络的升级时长;如果不想进行升级限流,必然要提升服务器的访问吞吐量;如何在不增加前端服务器硬件配置的前提下进行吞吐量提升呢?本文的观点是:优化升级内容,在实现相同升级功能的前提下,减少用户对前端服务器的访问;如何进行升级内容优化,减少用户对服务器的访问,从升级数据处理的角度,本文分为以下三个模块:升级内容优化、前端服务器广播与访问处理、终端升级;而终端升级被分为四个步骤:触发升级、升级数据请求、升级数据校验与软件写入四个部分。

1.升级内容优化

如上述所说,本文需要通过优化升级内容达到提升升级效率、减少用户对服务器的访问,进而达到提升吞吐量的目的;那么数字电视软件升级的内容有哪些呢?就目前而言数字电视软件支持网络访问功能的系统通常有两种:linux操作系统与android操作系统;这两种操作系统都是以文件系统的方式存在,且就存储方式而言都是采用分区存储。相对的linux操作系统较android操作系统而言其容量会小很多。但无论哪种系统,对整个数字电视系统进行升级是必须要实现的功能,而整体升级则意味着非常高的数据访问量;而普通的软件升级则可能升级其中某个分区,或者某个分区中的部分文件;这些文件大小不一,有的文件可能很大,造成数据传递阻塞,有的文件又很小造成终端频繁向服务器请求数据;因此本文提出对升级内容进行优化,就提就是制定数字电视升级包规则,以标准升级文件大小为基准,将所有的升级文件按预定的规则进行打包,将零散的小文件打包成一个大小适合的大文件包,将容量超大的文件分割成指定大小的小文件包;因此终端向服务器请求的数据基本上都是近似大小的文件,从而达到请求数据大小与请求次数平衡;升级数据内容分为三种:升级触发包、升级文件内容校验包与升级文件包。具体如下:

1.1 升级包结构

1.1.1 升级触发包

具体包括:固定长度升级触发包标志字符串,包长度,硬件版本,升级软件版本、软件版本判断模式、软件版本差值、升级总台数,开始序列号、结束序列号,服务器地址、升级类型、升级文件包个数、分区个数、分区描述子1、分区描述子2……分区描述子n、crc校验位;其中包长度为硬件版本到包结束的长度,包括文件包结尾的crc校验位长度;crc校验位校验的区域为包开始到分区描述子n,对这个区间的内容进行crc计算。

软件版本判断模式:值为0,表示不判断软件版本,直接升级;值为1,表示机顶盒软件版本加软件版本差值等于待升级版本;值为2,表示机顶盒软件版本减去软件版本差值等于待升级版本。

升级类型:值为0,表示前台强制升级。通过界面告知用户机器必须升级,进入升级流程,然后开始接收升级数据,并显示进度,最后更新升级软件再重启(用户无法选择);值为1,表示后台强制升级。后台接收升级数据,接收数据不提示用户,直到升级数据准备完毕,再提示用户进行升级并显示进度,然后更新升级软件再重启(用户无法选择);值为2,表示前台非强制升级。提示用户需要升级,用户可做如下选择,立即升级(同升级类型0)、下次开机升级(进入数据接受,并显示接收进度,接受完成不更新,在下次开机时更新软件)、不升级;值为3,表示后台非强制升级。后台接收升级数据,接收数据不提示用户,直到升级数据准备完毕,再提示用户进行升级。用户可以选择立即升级和下次开机升级和不升级。

分区个数:该次升级涉及的分区总个数。

分区描述子:包括分区ID号,分区名字,分区文件模式,升级文件个数。

分区文件模式:值为0,表示单文件分区,如boot,kernel等非文件系统分区(只读文件系统作为单文件处理);值为1,表示多文件系统分区,如非只读文件系统ubi文件系统等。

1.1.2 升级文件内容校验包

具体包括:固定长度升级文件内容校验包标志字符串,包长度,分区个数,分区校验描述子1,分区校验描述子2……分区校验描述子n,crc校验位,包长度字段包括分区个数加上crc校验位长度;crc校验位校验包开头到分区校验描述子n。

分区校验描述子:包括分区ID,分区名字,升级文件总个数,文件校验描述子1……文件校验描述子n。

文件校验描述子:文件名长度,文件名,文件路径长度、文件路径、压缩后的文件长度、压缩后的文件crc校验值、原始文件长度、原始文件crc校验值。

1.1.3 升级文件包

具体包括固定长度升级文件包标志字符串,包长度,升级包序号,分区个数,分区描述子1……分区描述子n,包文件1数据(压缩后)…包文件n数据,CRC校验。

分区个数:表示该升级包下有多少个分区的升级文件。

分区描述子:包括分区ID,分区名字,分区文件模式,分区文件总个数,包_分区_文件个数,包_分区_文件描述子1……包_分区_文件描述子n。

包_分区_文件描述子:

文件序号,文件名长度,文件名,文件路径长度,文件路径,压缩后的文件长度,压缩后的文件CRC,原始文件长度,原始文件CRC,文件切割模式,文件切割个数,文件切割描述子。

文件切割模式:值为0,表示文件较小,不需要切割;值为1,表示文件较大,需要切割为n个子段。

文件切割个数:当文件切割模式为0,则该值为1,即切割子段描述子里的内容为正常文件信息。

文件切割描述子:包括文件子段序号,子段数据长度、子段CRC、子段数据偏移地址。

文件子段序号:对应文件切割个数1~n。当升级文件包出现文件切割,那么切割子段要么出现在包的最后,要么出现在包的最前且后面还有空间容纳小文件。因此,一个包只可能出现一次“文件切割模式”为1的情况。

升级包序号:对应规则1.1.1的升级文件包个数。

分区文件模式:同规则1.1.1定义。

升级文件总个数:同规则1.1.2分区校验描述子下的升级文件总个数,即1个分区下有多少个文件需要更新。

包文件模式:值为0:表示多文件组合(可以是1个文件也可以是多个文件);值为1,表示单文件切割(将1个很大的文件切割成多个小文件,并切放到不同的升级文件包)一个升级文件包可能包含多个升级文件,也可以是一个被切割的文件的一部分)。

当前文件序号:对应升级文件总个数,且为该包下的第一个文件的序号。

包文件个数:该字段基于包文件模式。当包文件模式为0,表示该包下有n个升级文件;后续跟随的包文件描述子有n跟,且描述子内的文件序号为正常的升级文件,且文件序号为s,s+1……s+n-1;当包文件模式为1,文件S被切割成了n个小文件;后续跟随的包文件描述子只有1个,且描述子内的文件序号为文件S的子段,且序号为1,2……n;(2到n在后续的升级文件包内,升级包序号+1到升级包序号+n-1)。

包文件描述子:包括文件序号,文件名长度,文件名,文件路径长度,文件路径,压缩后的文件长度,压缩后的文件CRC,原始文件长度,原始文件CRC,文件开始位置。

文件序号:同包文件个数描述。

文件开始位置:压缩文件数据在整个升级文件包里的偏移位置。

包文件数据:需要升级的文件被压缩后的数据;当包文件模式为1时,包文件数据只有一个;即一个文件需要切割时,那么这个文件所有切割的子段都将使用1个单独升级文件包。

1.2 升级包生成

使用与规则1.1配套工具对各个分区的升级文件进行封包处理。配置人员使用封包工具进行升级参数设置:先设置每个升级文件包的大小(该大小为与服务器契合的最优值)、然后设置升级触发包所需要的硬件版本,升级软件版本、软件版本判断模式、软件版本差值、升级总台数,开始序列号、结束序列号,服务器地址、升级类型等内容控制升级方式与升级规模;然后依次按分区导入本分区需要升级的文件或文件包;封包工具会对所有分区的升级的文件按大小进行组合,按照规则1.1.3的定义,将一些小的文件组合成一个升级文件包,然后将超大的文件拆分成符合要求的多个升级文件包,然后根据规则1.1.1计算出升级文件包个数、分区个数、分区描述子1、分区描述子2……分区描述子n等信息生成完整的升级触发包;在封包工具进行文件组合的同时也会依据1.1.2规则对原始文件信息、优化后的文件信息等进行记录、计算并生成升级文件内容校验包。

2.前端服务器广播与访问处理

首先将升级触发包、升级文件内容校验包、所有升级文件包导入前端服务器;服务器循环向全网广播升级触发包以及升级文件内容校验包;升级触发包以较高频率广播,内容校验包以较低频率广播;然后服务器等待终端数字电视发送升级数据请求及结果反馈。数据请求有三种:申请升级文件内容校验包、模糊申请升级文件包、精确申请升级文件包。

申请升级文件内容校验包:终端数字电视若在一定时间内未捕获到前端广播的升级内容校验包,则会向服务器发送内容校验包请求;服务器监听到该请求则单独将升级内容校验包发送给本机。

模糊申请升级文件包:终端数字电视在通过分析升级触发包后会知道本次升级需要申请的升级文件包个数且需要申请所有的升级包;为降低终端数字电视向服务器发送数据请求的次数,终端数字电视采用模糊申请的方式一次将所有的升级包数据进行请求(若升级包数量巨大,可分为几次请求,每次请求一定范围内的升级包);服务器在接收到该请求后,会分析该终端请求的数据包,并结合自身的资源分配情况,优先发送瞬时请求量少的包,后续发送请求量大的包,使服务器资源处于相对均衡状态;如若终端请求的所有升级包均处于满负荷状态,前端会视服务器资源情况,向终端发送可申请升级包信息。

精确申请升级文件包:当终端数字电视长时间接收不到某个升级包,则向服务器单独请求该数据包;服务器监听到该请求则单独将升级内容校验包发送给本机。

结果反馈:当终端服务器完成升级或者升级胜败均会向服务器发送升级结果,服务器根据该反馈结果更新数据库中该终端的软件版本及升级结果;该信息用于运营商掌握、分析全网终端数字电视的软件状态、分析升级过程中出现的问题,更好的服务于全网终端用户。

3.终端升级

数字电视终端在运行过程中会监听监控对应的端口,当检测到服务器广播的升级触发包,将获取该包并分析出内容,然后根据本机的硬件版本、软件版本等规则1.1.1定义的各字段来判断本机是否符合升级要求;若符合升级要求,则去获取升级内容校验包并分析;若在一定时间内未捕获到升级内容校验包,则向服务器单独申请该包,服务器会根据请求单独将升级内容校验包发送给本机(或者向终端发送可优先请求的升级包)。

然后数字电视终端向服务器发送升级文件包请求;终端会通过分析升级触发包后会知道本次升级需要申请的升级文件包个数且需要申请所有的升级包;且根据升级文件包个数来判定是一次模糊申请所有的升级包,还是分为多次模糊申请,每次申请一定数量的升级包;然后等待服务器的反馈;若服务器资源充足则会发送申请范围的升级包数据,终端将该数据进行保存;当服务器资源不足则会发回可申请升级包信息,终端调整升级包请求,对升级请求循序进行重新划分,优先请求服务器资源充足的升级包;在此过程中如若部分升级包超过指定时间或次数均未请求到,则进入下一范围的升级包请求;待所有模糊请求完成后对未收到的升级包进行精准请求。

当所有的升级包均收到后,首先对数据进行自身的准确性验证,包括分区个数、各分区下的升级文件个数、包内的文件长度、文件crc等验证,确保收到的是一个准确的升级包;其次按照规则1.1.3,定义,对包进行分析,提取出的压缩状态的各分区的升级文件(包括还原被切割的文件),并与规则1.1.2定义的升级文件内容校验包里相关的数据进行比对,若校验错误则向服务器发送升级失败、失败步骤及原因,并结束升级;若文件都正确,则将压缩文件进行解压缩,得到原始状态的升级文件,并与升级文件内容校验包里的原始文件信息进行比对,若错误则向服务器发送升级失败及升级失败的步骤及原因;若所有数据均正确则进入软件更新步骤。

数据接收完成后终端更具规则1.1.1定义的升级类型信息,提示用户选择。无论立即升级升级还是开机升级,均需要进行软件更新。软件更新按分区进行,并根据分区文件模式信息得到分区文件的具体写入方法;通常单文件分区的操作方法为将整个分区擦除,然后写入该分区的文件;若分区为多文件系统分区,则根据升级文件问题的路径,去替换原有路径下的对应文件。所有文件更新完成后,重启数字电视,整个软件升级完成。

猜你喜欢

校验分区个数
贵州省地质灾害易发分区图
使用Excel朗读功能校验工作表中的数据
上海实施“分区封控”
电能表在线不停电校验技术
最强大脑
精通文件校验的“门道”
多种方法快速校验文件
大型数据库分区表研究
想一想
认识频数分布直方图