CN106528125A - 一种数据文件的增量更新方法和服务器、客户端以及系统 - Google Patents

一种数据文件的增量更新方法和服务器、客户端以及系统 Download PDF

Info

Publication number
CN106528125A
CN106528125A CN201610947604.6A CN201610947604A CN106528125A CN 106528125 A CN106528125 A CN 106528125A CN 201610947604 A CN201610947604 A CN 201610947604A CN 106528125 A CN106528125 A CN 106528125A
Authority
CN
China
Prior art keywords
file
check value
redaction
piecemeal
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610947604.6A
Other languages
English (en)
Inventor
赵超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610947604.6A priority Critical patent/CN106528125A/zh
Publication of CN106528125A publication Critical patent/CN106528125A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Abstract

本发明公开了一种数据文件的增量更新方法和服务器、客户端以及系统,用于提高增量更新的效率,减少版本管理复杂度,简化增量更新的过程。本发明实施例提供一种数据文件的增量更新方法,包括:获取新版本数据文件,以及根据所述新版本数据文件获取所述新版本数据文件对应的多个文件分块;根据所述多个文件分块分别计算各个文件分块的新版本分块校验值;将所述各个文件分块的新版本分块校验值、所述新版本数据文件对应的文件名称和下载地址都写入配置文件中,以及向客户端提供所述配置文件,以使所述客户端根据所述配置文件完成增量更新。

Description

一种数据文件的增量更新方法和服务器、客户端以及系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据文件的增量更新方法和服务器、客户端以及系统。
背景技术
在客户端进行软件更新时,需要通过互联网从服务器端下载该软件的新版本安装包,客户端需要为新版本安装包的下载付出相应的下载时间及流量。然而新版本安装包中的文件和客户端已安装的版本的安装包中的文件有较大部分是没有变化的,因此客户端付出的下载时间和流量中较大部分是为这些相同的文件付出的。而增量更新方式仅需要从服务器端下载与客户端已安装的版本不同的补丁包,减少了客户端下载付出的时间和流量,因此,增量更新方法成为重要的更新方法。
现有技术中采用的增量更新方法为:服务器端将新版本安装包进行压缩,将压缩后的新版本安装包分别与各个压缩后的历史版本安装包生成新版本与该历史版本对应的补丁包,找出压缩后的新版本安装包中与该压缩后的历史版本安装包中不同的多个文件,将各个不同的文件打包生成一个补丁包。例如现有技术提供的bsDiff/bsPatch方案中,存在执行速度慢、内存占用高的缺点。具体的,bsDiff执行速度比较慢,且生成增量补丁包时对内存消耗十分巨大,bsDiff在生成N与M大小的补丁包时需要消耗MAX(17*N,9*N+M)+O(1)的内存空间。其中,N是指原始数据文件,M是指补丁包大小,当生成超过100M文件的补丁包需要专门使用64位的bsDiff工具。又如,bsPatch执行速度也比较慢,在进行补丁升级时需要消耗内存为N+M,这个内存消耗量并不适用于移动设备。比如Android版本中的游戏资源包超过200M大小,在游戏运行时进行打补丁操作,会容易耗尽移动设备的内存。
现有技术中的增量更新方法中使用多个版本安装包进行压缩后生成补丁包,这也存在版本管理困难的问题,例如bsDiff/bsPatch在进行升级时需要对不同的版本之间生成补丁包,造成版本管理困难。假设目前先后开发了6个版本,分别为1.0~6.0,运营过程中如果是线性升级需要制作如下表1所示的5个版本,分别从当前版本1.0升级到目标版本2.0,当前版本2.0升级到目标版本3.0等等,以此类推,若有N个版本,此种情况下就需要配置(N-1)个补丁包。
表1
如果需要任意版本直接进行更新,如下表2所示,就需要生成15个补丁包,例如从当前版本1.0升级到目标版本2.0,当前版本1.0升级到目标版本3.0,当前版本2.0升级到目标版本3.0、目标版本4.0、目标版本5.0、目标版本6.0,以此类推,若有N个版本,此种情况下需要配置N*(N-1)/2个补丁包。
表2
在实现本发明的过程中,发明人发现上述的增量更新方法至少存在以下缺点:1)、执行速度慢、移动设备内存占用高。2)、当安装包的版本越多时需要生成的补丁包就越多,由前述举例可知,无论线性升级还是任意版本的直接升级都会存在大量的补丁包,增加了安装包的版本管理复杂度,降低了版本管理的效率。3)、由于服务器端在生成补丁包前会将各个版本的安装包进行压缩,因此客户端在下载补丁包时也需要先对补丁包进行解压缩,使得整个增量更新的过程复杂化。
发明内容
本发明实施例提供了一种数据文件的增量更新方法和服务器、客户端以及系统,用于提高增量更新的效率,减少版本管理复杂度,简化增量更新的过程。
为解决上述技术问题,本发明实施例提供以下技术方案:
第一方面,本发明实施例提供一种数据文件的增量更新方法,包括:
获取新版本数据文件,以及根据所述新版本数据文件获取所述新版本数据文件对应的多个文件分块;
根据所述多个文件分块分别计算各个文件分块的新版本分块校验值;
将所述各个文件分块的新版本分块校验值、所述新版本数据文件对应的文件名称和下载地址都写入配置文件中,以及向客户端提供所述配置文件,以使所述客户端根据所述配置文件完成增量更新。
第二方面,本发明实施例还提供一种数据文件的增量更新方法,包括:
获取数据文件提供服务器提供的配置文件,以及从所述配置文件中解析出新版本数据文件对应的文件名称和下载地址、所述新版数据文件中多个文件分块的新版本分块校验值;
根据所述文件名称获取当前版本数据文件,以及使用与所述文件分块的分块大小相等的滑动窗口从所述当前版本数据文件中选择出所述滑动窗口滑动至不同位置所对应的窗口数据块;
根据选择出的所述窗口数据块计算所述窗口数据块的当前版本分块校验值,以及判断所述当前版本分块校验值是否与所述新版本分块校验值相同;
若所述当前版本分块校验值与所述新版本分块校验值相同,获取相同校验值对应的窗口数据块相对于所述当前版本数据文件的偏移量,并继续判断所述滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与所述新版本分块校验值相同;若所述当前版本分块校验值与所述新版本分块校验值不相同,继续判断所述滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与所述新版本分块校验值相同;
当所述滑动窗口滑动至最后一个位置对应的窗口数据块的当前版本分块校验值判断完毕之后,创建新版本数据文件对应的临时文件,对于所述临时文件中匹配到所述相同校验值的分块,则根据所述偏移量从所述当前版本数据文件获取到重复数据块,对于所述临时文件中没有匹配到所述相同校验值的分块,根据所述下载地址从所述数据文件提供服务器下载到差异数据块,将所述临时文件中的差异数据块和重复数据块进行合并,得到增量更新数据文件。
第三方面,本发明实施例提供一种数据文件提供服务器,包括:
分块获取模块,用于获取新版本数据文件,以及根据所述新版本数据文件获取所述新版本数据文件对应的多个文件分块;
校验值计算模块,用于根据所述多个文件分块分别计算各个文件分块的新版本分块校验值;
配置文件提供模块,用于将所述各个文件分块的新版本分块校验值、所述新版本数据文件对应的文件名称和下载地址都写入配置文件中,以及向客户端提供所述配置文件,以使所述客户端根据所述配置文件完成增量更新。
第四方面,本发明实施例提供一种客户端,包括:
文件解析模块,用于获取数据文件提供服务器提供的配置文件,以及从所述配置文件中解析出新版本数据文件对应的文件名称和下载地址、所述新版数据文件中多个文件分块的新版本分块校验值;
窗口数据选择模块,用于根据所述文件名称获取当前版本数据文件,以及使用与所述文件分块的分块大小相等的滑动窗口从所述当前版本数据文件中选择出所述滑动窗口滑动至不同位置所对应的窗口数据块;
校验值判断模块,用于根据选择出的所述窗口数据块计算所述窗口数据块的当前版本分块校验值,以及判断所述当前版本分块校验值是否与所述新版本分块校验值相同;
校验结果处理模块,用于若所述当前版本分块校验值与所述新版本分块校验值相同,获取相同校验值对应的窗口数据块相对于所述当前版本数据文件的偏移量,并继续判断所述滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与所述新版本分块校验值相同;若所述当前版本分块校验值与所述新版本分块校验值不相同,继续判断所述滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与所述新版本分块校验值相同;
数据块合并模块,用于当所述滑动窗口滑动至最后一个位置对应的窗口数据块的当前版本分块校验值判断完毕之后,创建新版本数据文件对应的临时文件,对于所述临时文件中匹配到所述相同校验值的分块,则根据所述偏移量从所述当前版本数据文件获取到重复数据块,对于所述临时文件中没有匹配到所述相同校验值的分块,根据所述下载地址从所述数据文件提供服务器下载到差异数据块,将所述临时文件中的差异数据块和重复数据块进行合并,得到增量更新数据文件。
第五方面,本发明实施例提供一种数据文件的增量更新系统,包括:如前述第三方面中任一项所述的数据文件提供服务器和如前述第四方面中任一项所述的客户端。
从以上技术方案可以看出,本发明实施例具有以下优点:
在本发明的一种实施例中,新版本数据文件的每个文件分块都计算有新版本分块校验值,在配置文件中写入有各个文件分块的新版本分块校验值、新版本数据文件对应的文件名称和下载地址,向客户端提供配置文件,不需要管理多种不同版本的数据文件,也不需要针对版本差异来生成补丁包,因此可以提高增量更新的效率,减少版本管理复杂度,简化增量更新的过程。
在本发明的另一种实施例中,根据配置文件提供的文件名称获取到当前版本数据文件,通过滑动窗口滑动至不同位置获取到多个窗口数据块,计算出窗口数据块的当前版本分块校验值,通过当前版本分块校验值和新版本分块校验值的判断确定出差异校验值,从该数据文件提供服务器获取到差异数据块,通过差异数据块和重复数据块的合并操作可以得到增量更新数据文件。因此从数据文件提供服务器获取到的只是差异数据块,而无需下载整个新版本数据文件,也不需要管理多种不同版本的数据文件,因此可以提高增量更新的效率,减少版本管理复杂度,简化增量更新的过程。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据文件的增量更新方法的流程方框示意图;
图2为本发明实施例提供的另一种数据文件的增量更新方法的流程方框示意图;
图3为本发明实施例提供的数据文件的增量更新方法的一种应用场景下交互流程示意图;
图4为本发明实施例提供的新版本数据文件的文件分块示意图;
图5-a为本发明实施例提供的构建目标文件校验表的处理过程示意图;
图5-b为本发明实施例提供的校验值的处理过程示意图;
图6为本发明实施例提供的一种数据文件提供服务器的组成结构示意图;
图7-a为本发明实施例提供的一种客户端的组成结构示意图;
图7-b为本发明实施例提供的另一种客户端的组成结构示意图;
图7-c为本发明实施例提供的另一种客户端的组成结构示意图;
图7-d为本发明实施例提供的一种校验值判断模块的组成结构示意图;
图8为本发明实施例提供的一种数据文件的增量更新系统的组成结构示意图;
图9为本发明实施例提供的数据文件的增量更新方法应用于服务器的组成结构示意图;
图10为本发明实施例提供的数据文件的增量更新方法应用于终端的组成结构示意图。
具体实施方式
本发明实施例提供了一种数据文件的增量更新方法和服务器、客户端以及系统,用于提高增量更新的效率,减少版本管理复杂度,简化增量更新的过程。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
首先对本发明实施例提供的数据文件的增量更新方法应用的系统架构进行说明,本发明实施例提供的上述系统可以包括:数据文件提供服务器和客户端,数据文件提供服务器向可以提供新版本数据文件和配置文件,客户端通过数据文件提供服务器可以下载到差异数据块,数据文件提供服务器和客户端之间可以建立通信连接。具体的,数据文件提供服务器在生成配置文件之后,数据文件提供服务器可以直接向客户端提供配置文件的下载。另外,数据文件提供服务器在生成配置文件之后,数据文件提供服务器也可以向文件管理服务器上存储新版本数据文件,客户端从该文件管理服务器中下载到差异数据块,数据文件提供服务器、客户端分别可以和文件管理服务器建立通信连接。在实际应用中,数据文件提供服务器具体可以是新版本数据文件的操作方,例如可以文本操作方使用的电脑设备,客户端是需要使用数据文件的程序安装方,该客户端具体可以是手机等移动设备,文件管理服务器具体可以是文件分发系统,例如可以是常用的内容分发网络(ContentDelivery Network,CDN)。本发明实施例中数据文件提供服务器不需要管理多种版本的数据文件,也需要制作针对各种版本具有差异的补丁包,该数据文件提供服务器只需要根据新版本数据文件制作配置文件,向文件管理服务器上传配置文件和新版本数据文件,客户端可以从文件管理服务器获取到配置文件,通过该配置文件获取到该客户端当前正在使用的版本数据文件,通过滑动窗口计算出多个窗口数据块的当前版本分块校验值,从而通过当前版本分块校验值和新版本分块校验值的比较判断确定出差异校验值,只需要从数据文件提供服务器获取到差异数据块,就可以通过差异数据块和重复数据块的合并得到增量更新数据文件。接下来分别从数据文件提供服务器和客户端来介绍本发明实施例提供的数据文件的增量更新方法。
以下分别进行详细说明。首先从数据文件提供服务器一侧进行说明,请参阅图1所示,本发明一个实施例提供的数据文件的增量更新方法,可以包括如下步骤:
101、获取新版本数据文件,以及根据新版本数据文件获取新版本数据文件对应的多个文件分块。
在本发明实施例中,先获取到新版本数据文件,该新版本数据文件可以是新版本的应用程序安装包,也可以是新版本的音视频数据流,本发明实施例提供的新版本数据文件可以指的是二进制数据流,包括有大量的二进制数据。获取到新版本数据文件之后,根据新版本数据文件获取新版本数据文件对应的多个文件分块,多个文件分块构成新版本数据文件,举例说明如下,假设新版本数据文件为A文件,A文件大小为100M,分块大小为1KB,则该A文件对应的多个文件分块可以为:[0]~[1023]、[1024]~[2047]、[2048]~[3071]等数据块。
102、根据多个文件分块分别计算各个文件分块的新版本分块校验值。
在本发明实施例中,获取到新版本数据文件的多个文件分块之后,针对不同的文件分块,可以计算出每个文件分块对应的分块校验值,为了区别不同版本数据文件的分块校验值,将新版本数据文件的分块校验值也称为“新版本分块校验值”,在实际应用中,计算校验值的方式可以有多种,例如可以采用多种类型的校验和算法来计算每个文件分块的分块校验值,例如采用消息摘要算法第五版(Message Digest Algorithm 5,MD5)算法。
在本发明的一些实施例中,步骤102根据多个文件分块分别计算各个文件分块的新版本分块校验值,包括:
A1、根据多个文件分块分别计算各个文件分块的新版本弱校验值和新版本强校验值。
其中,为了提供校验值的判断效率,本发明实施例中计算的分块校验值可以同时采用两种校验值的计算方式,具体的,可以计算各个文件分块的新版本弱校验值和新版本强校验值,新版本弱校验值可以指的是采用具有高执行效率的校验和算法,例如Adler32,是Mark Adler提出的一种校验和算法,与同等长度的CRC校验算法相比,它具有更好的执行效率,新版本强校验值可以指的是具有高准确度的校验和算法,例如MD5,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致的信息摘要算法。因此本发明实施例中,针对每个分块文件,可以采用一对校验值:一个弱校验值,一个强校验值,从而保证校验值计算效率的同时也可以保证校验值计算的准确度。
103、将各个文件分块的新版本分块校验值、新版本数据文件对应的文件名称和下载地址都写入配置文件中,以及向客户端提供配置文件,以使客户端根据配置文件完成增量更新。
在本发明实施例中,计算出各个文件分块的新版本分块校验值之后,接下来生成配置文件,该配置文件中写入有各个文件分块的新版本分块校验值、新版本数据文件对应的文件名称和下载地址,本发明实施例中生成配置文件可以采用版本控制的服务组件来完成,例如可以使用腾讯公司内部统一登录系统中的版本控制服务组件Tversion来完成。其中,新版本数据文件的文件名称还可以用MD5算法做摘要校验和,从而客户端通过计算整个数据文件的MD5校验和来判断该数据文件是否完整,若判断有数据文件有损坏,可以放弃本次的更新。
需要说明的是,在本发明实施例中,数据文件提供服务器可以向客户端提供配置文件,以使客户端根据配置文件完成增量更新,例如数据文件提供服务器具有文件管理功能,数据文件提供服务器可以接收客户端的请求,向该客户端发送配置文件。另外,数据文件提供服务器也可以将配置文件和新版本数据文件上传到文件管理服务器,使得客户端可以通过文件管理服务器下载到配置文件,数据文件提供服务器上传到文件管理服务器的是配置文件和新版本数据文件,因此上传的文件相比于现有技术更少,不需要上传各种版本的补丁包,因此减少文件管理服务器的版本管理复杂度,也减轻了数据文件提供服务器的上传补丁包的操作。
在本发明的一些实施例中,步骤103中的向客户端提供配置文件之前,本发明实施例提供的数据文件的增量更新方法还包括如下步骤:
B1、获取新版本数据文件对应的新版本号,和/或下载策略,下载策略包括:新版本数据文件需要采用强制更新还是可选更新;
B2、将新版本数据文件对应的新版本号,和/或下载策略写入到配置文件中。
具体的,数据文件提供服务器可以在生成的配置文件中写入新版本数据文件对应的新版本号,和/或下载策略,从而客户端在解析配置文件时就可以获取到该新版号和下载策略。举例说明如下,配置文件用来记录需要升级的目标文件的版本信息,文件名称以及所在的下载地址等。例如配置文件为Tversion文件,具体采用#号作为分隔符,该配置文件的具体结构字段如下:多次升级结果#单次升级结果#版本号#描述#下载策略#下载地址#自定义信息,从而客户端可以通过对配置文件的结构字段解析可以获取到版本号、描述信息、下载策略、下载地址和自定义信息。
在本发明的一些实施例中,步骤101根据新版本数据文件获取新版本数据文件对应的多个文件分块,包括:
C1、按照分块大小对所述新版本数据文件进行平分,得到总分块个数为L/size的文件分块,其中,L表示所述新版本数据文件的文件长度,size表示所述分块大小;
C2、如果L%size不等于0,则将L%size所得的余数对应的文件分块保存到校验表中,其中,%表示L对size进行取模。
举例说明如下,本发明实施例中新版本数据文件按照预置的分块大小进行分块,分块大小为1KB,则根据新版本数据文件的分块(例如[0]~[1023],[1024]~[2047],[2048]~[3071]等)输出一张校验表,若最后一个分块中存在不足分块大小的数据(即L%size不等于0),本发明实施例中对分块剩余数据不进行任何处理,直接将其存入校验表的末尾作为差异数据块。
在前述执行步骤C1至步骤C2的实现场景下,步骤102根据多个文件分块分别计算各个文件分块的新版本分块校验值,包括:
D1、分别计算所述总分块个数为L/size中每个文件分块的新版本分块校验值,并将计算出的新版本分块校验值保存到所述校验表中。
其中,记L/size所得的整数部分为N,则对于N个分块中的每个分块,可以分别计算每个分块的新版本分块校验值,例如计算N个分块中每个分块的新版本弱校验值和新版本强校验值,并将计算出的N个分块的新版本分块校验值保存到校验表中,因此本发明实施例中生成的校验表中包括有N个分块的新版本分块校验值和分块剩余数据。
进一步的,在前述执行步骤D1的实现场景下,步骤103将各个文件分块的新版本分块校验值、新版本数据文件对应的文件名称和下载地址都写入配置文件中,包括:
E1、将校验表、新版本数据文件对应的文件名称和下载地址都写入配置文件中。
其中,本发明实施例中生成的校验表中包括有前N个分块的新版本分块校验值和分块剩余数据,该校验表被写入配置文件中,客户端从该配置文件中可以解析出该校验表,将该校验表读入到客户端的本地内存中,该校验表中包括有新版本分块校验值和分块剩余数据,因此客户端可以通过校验表获取到新版本分块校验值和分块剩余数据。
通过以上实施例对本发明实施例的描述可知,新版本数据文件的每个文件分块都计算有新版本分块校验值,在配置文件中写入有各个文件分块的新版本分块校验值、新版本数据文件对应的文件名称和下载地址,向客户端提供配置文件,不需要管理多种不同版本的数据文件,也不需要针对版本差异来生成补丁包,因此可以提高增量更新的效率,减少版本管理复杂度,简化增量更新的过程。
前述实施例从数据文件提供服务器侧介绍了本发明实施例提供的数据文件的增量更新方法,接下来从客户端一侧来介绍本发明实施例提供的数据文件的增量更新方法,请参阅图2所示,本发明实施例提供的数据文件的增量更新方法,包括如下步骤:
201、获取数据文件提供服务器提供的配置文件,以及从配置文件中解析出新版本数据文件对应的文件名称和下载地址、新版数据文件中多个文件分块的新版本分块校验值。
在本发明实施例中,客户端首先获取到数据文件提供服务器提供的配置文件,例如客户端和数据文件提供服务器建立有通信连接,客户端向数据文件提供服务器请求获取配置文件,又如,数据文件提供服务器将新版本数据文件和配置文件上传到文件管理服务器,客户端和文件管理服务器建立有通信连接,客户端从文件管理服务器获取数据文件提供服务器提供的配置文件,由前述实施例对数据文件提供服务器的解释说明可知,该配置文件中写入新版本数据文件对应的文件名称和下载地址、新版数据文件中多个文件分块的新版本分块校验值,因此客户端对配置文件进行解析后,可以获取到文件名称和下载地址、新版本分块校验值。
在本发明的一些实施例中,步骤201获取数据文件提供服务器提供的配置文件之后,本发明实施例提供的数据文件的增量更新方法还包括如下步骤:
F1、从配置文件中解析出新版本数据文件对应的下载策略,下载策略包括:新版本数据文件需要采用强制更新还是可选更新;
F2、若下载策略为强制更新,触发执行如下步骤:根据文件名称获取当前版本数据文件;
F3、若下载策略为可选更新,发送更新提示消息,根据用户发送的更新指示确定是否继续执行如下步骤:根据文件名称获取当前版本数据文件。
其中,可选的,本发明实施例中,还可以为新版本数据文件配置下载策略,则客户端获取到配置文件之后,可以按照下载策略确定是否需要更新,在下载策略为可选更新时,可以由用户来确定是否进行后续的增量更新过程,使得增量更新更为灵活,满足用户的自主选择需要。
202、根据文件名称获取当前版本数据文件,以及使用与文件分块的分块大小相等的滑动窗口从当前版本数据文件中选择出滑动窗口滑动至不同位置所对应的窗口数据块。
在本发明实施例中,获取到新版本数据文件对应的文件名称之后,客户端根据该文件名称可以从本地获取到与该文件名称相同的当前版本数据文件,当前版本数据文件是客户端中正在使用的旧版本数据文件,该旧版本数据文件可以根据新版本数据文件进行更新。
客户端获取到当前版本数据文件之后,客户端根据预配置的分块大小设置于该分块大小具有相同空间长度的滑动窗口,通过滑动窗口的滑动从当前版本数据文件中选择出窗口数据块,则随着滑动窗口的不断滑动,可以从而当前版本数据文件中获取到多个窗口数据块,举例说明如下:将滑动窗口(滑动窗口的大小必须等于分块大小)向当前版本数据文件末尾移动一个比特(bit),分块大小为1K的情况下,初始滑动窗口选择出的窗口数据块为:D[0]~~D[1023],滑动窗口移动一个比特之后选择出的窗口数据块为D[1]~~D[1024],D[N]表示在当前版本数据文件中的数据位置。本发明实施例中使用滑动窗口在当前版本数据文件中的位置滑动,可以从当前版本数据文件中快速的选择出相应的窗口数据块。
在本发明的一些实施例中,步骤202根据文件名称获取当前版本数据文件之后,本发明实施例提供的数据文件的增量更新方法还包括如下步骤:
G1、从配置文件中解析出新版本数据文件对应的新版本号;
G2、获取当前版本数据文件对应的当前版本号;
G3、对比新版本号和当前版本号,若新版本号和当前版本号不相同,触发执行如下步骤202:使用与文件分块的分块大小相等的滑动窗口从当前版本数据文件中选择出滑动窗口滑动至不同位置所对应的窗口数据块。
其中,可选的,若配置文件中包括有新版本号,则客户端在获取到配置文件之后,首先判断该客户端的当前版本号是否与新版本号相同,若不相同,继续执行后续的增量更新过程,若新版本号和当前版本号相同,则说明该客户端中本地使用的当前版本就是最新版本,无需更新。
203、根据选择出的窗口数据块计算窗口数据块的当前版本分块校验值,以及判断当前版本分块校验值是否与新版本分块校验值相同。
在本发明实施例中,以滑动窗口滑动至某个位置选择出的窗口数据块为例,可以计算该窗口数据块的当前版本分块校验值,以及判断当前版本分块校验值是否与新版本分块校验值相同,进一步的,为了提供校验值的计算效率,可以采用并行的方式判断当前版本分块校验值是否与新版本分块校验值相同,即可以并行的计算出滑动窗口在多个滑动位置时选择出的窗口数据块,对于多个窗口数据块可以并行的计算当前版本分块校验值以及并行的查找相同块,例如可以采用OpenMP,是一套支持跨平台共享内存方式的多线程并发的编程API,使用C,C++和Fortran语言,可以在大多数的处理器体系和操作系统中运行,包括Solaris,AIX,HP-UX,GNU/Linux,Mac OS X,和Microsoft Windows。
在本发明的一些实施例中,由前述实施例的描述可知,数据文件提供服务器生成的新版本分块校验值包括:新版本弱校验值和新版本强校验值,即新版本数据文件的文件分块具有两个校验值,在这种场景下,步骤203判断当前版本分块校验值是否与新版本分块校验值相同,包括:
H1、根据窗口数据块计算窗口数据块的当前版本弱校验值,以及判断当前版本弱校验值是否存在于新版本弱校验值对应的哈希过滤表中;
H2、若当前版本弱校验值不存在于哈希过滤表中,确定当前版本分块校验值与新版本分块校验值不相同;
H3、若当前版本弱校验值存在于哈希过滤表中,根据窗口数据块计算窗口数据块的当前版本强校验值,判断当前版本强校验值是否与新版本强校验值相等,若当前版本强校验值与新版本强校验值相等,确定当前版本分块校验值与新版本分块校验值相同,若当前版本强校验值与新版本强校验值不相等,确定当前版本分块校验值与新版本分块校验值不相同。
具体的,本发明实施例中计算的分块校验值可以同时采用两种校验值的计算方式,具体的,可以计算各个文件分块的新版本弱校验值和新版本强校验值,例如客户端从配置文件中解析出校验表,该校验表中包括有新版本弱校验值和新版本强校验值,首先计算窗口数据块的当前版本弱校验值,该当前版本弱校验值可以快速计算出,然后判断当前版本弱校验值是否存在于新版本弱校验值对应的哈希过滤表中,根据判断结果分别执行步骤H2和H3,若当前版本弱校验值不存在于哈希过滤表中,确定当前版本分块校验值与新版本分块校验值不相同,此时滑动窗口可以滑动至下一个位置,而无需再计算窗口数据块的当前版本强校验值,以此提高差异计算的效率,若当前版本弱校验值存在于哈希过滤表中,根据窗口数据块计算窗口数据块的当前版本强校验值,再通过强校验值是否相同确定最终的比较结果,其中强校验值可以是MD5校验和算法。
204、若当前版本分块校验值与新版本分块校验值相同,获取相同校验值对应的窗口数据块相对于当前版本数据文件的偏移量,并继续判断滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与新版本分块校验值相同;若当前版本分块校验值与新版本分块校验值不相同,继续判断滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与新版本分块校验值相同。
在本发明实施例中,如果两个校验值不同,则称为:差异校验值,如果两个校验值相同,则称为:相同校验值。通过对滑动窗口选择出的所有窗口数据块进行校验值的计算以及相同块的查找,可以生成校验结果,该校验结果中包括哪些校验值为差异校验值,哪些校验值为相同校验值,对于相同校验值,则获取相同校验值对应的窗口数据块相对于当前版本数据文件的偏移量,该偏移量用于从当前版本数据文件中下载到重复数据块,对于差异校验值,则说明在客户端的当前版本数据文件与新版数据文件存在差异,该差异部分可以按照下载地址通过数据文件提供服务器获取到。
举例说明如下,客户端根据下载到的配置文件构建本地的新版本校验表,该新版本校验表包括有新版本数据文件的各个文件分块对应的校验值,若当前版本分块校验值与新版本校验表中某些或者某个分块校验值相同,通过hash表的键值,该hash表的结构见图5-a所示,可以查找到新版本中所有的分块校验值,而hash表允许存在冲突项目,即可以存在多个相等校验值的分块,故这里可以存在一个滑动窗口对应多个新版本分块的情况,或者一个对应一个的情况。比如:滑动窗口offset=1023,blocksize=1K时计算出的校验值可以同时匹配分块10,28,30,获取相同校验值对应的窗口数据块相对于所述当前版本数据文件的偏移量,并继续判断滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与新版本校验表中某些或者某个分块校验值相同;若当前版本分块校验值与新版本校验表中所有分块校验值不相同,因为这里是查找hash表,所以这里隐含的逻辑是使用当前文件校验值与新版本文件的所有校验值进行比较,在当前版本分块校验值与新版本校验表中所有分块校验值不相同的情况下,继续判断滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与新版本校验表中某些或者某个分块校验值相同。
205、当滑动窗口滑动至最后一个位置对应的窗口数据块的当前版本分块校验值判断完毕之后,创建新版本数据文件对应的临时文件,对于临时文件中匹配到相同校验值的分块,则根据偏移量从当前版本数据文件获取到重复数据块,对于临时文件中没有匹配到相同校验值的分块,根据下载地址从数据文件提供服务器下载到差异数据块,将临时文件中的差异数据块和重复数据块进行合并,得到增量更新数据文件。
在本发明实施例中,通过步骤204中校验值的差异计算,可以将当前版本数据文件与新版数据文件存在的重复数据块通过偏移量标记下来,对于当前版本数据文件与新版数据文件存在的差异部分,则可以根据下载地址从数据文件提供服务器下载到差异数据块,新创建的临时文件中的重复数据块和下载到的差异数据块进行合并,就可以得到增量更新数据文件,该增量更新数据文件就可以等同于新版本数据文件,因此客户端并不需要从数据文件提供服务器下载完整的新版本数据文件,就可以实现新版本的数据更新,提高增量更新的工作效率。
需要说明的是,在客户端和数据文件提供服务器通信的应用场景下,客户端可以从数据文件提供服务器获取到差异数据块,若数据文件提供服务器已经将配置文件和新版本数据文件上传到文件管理服务器,则客户端可以从文件管理服务器下载到差异数据块,此处仅作示例说明。
举例说明如下,首先滑动窗口遍历当前版本数据文件,然后计算校验值,最后寻找重复数据块,其中,对于相同校验值,将此时寻找到的新版本数据文件分块下标,当前版本数据文件的文件偏移量缓存起来备用。对于差异校验值,滑动窗口偏移1bit,继续前述的操作。接下来对文件合并过程进行举例说明,本地创建一个buffer(缓冲区),大小与分块大小一致。创建一个新版本数据文件的临时文件,根据文件配置中的文件大小、分块大小计算出总分块数目。其中,块数目=文件大小/分块大小,剩余块大小=文件大小%分块大小,根据校验表从零分块开始进行创建临时文件,过程如下:从第0块开始,查找是否在前述的缓存中存在相同校验值,如果存在。使用偏移量读取本地文件内容到buffer中,之后写入到临时文件。如果不存在,使用http range下载到差异数据块,继续处理下一块,直至临时文件中的所有分块对应数据都获取完毕,最后进行合并。
在本发明的一些实施例中,由前述实施例的描述可知,数据文件提供服务器生成的校验表中包括有分块剩余数据,在这种实现场景下,步骤205将临时文件中的差异数据块和重复数据块进行合并,得到增量更新数据文件,包括:
I1、从配置文件中解析出分块剩余数据,分块剩余数据包括:新版本数据文件中L%size所得的余数对应的文件分块,L表示所述新版本数据文件的文件长度,size表示分块大小,%表示L对size进行取模;
I2、将差异数据块、重复数据块、分块剩余数据进行合并,得到增量更新数据文件。
其中,若最后一个分块中存在不足分块大小的数据,分块剩余数据被存入校验表的末尾作为差异数据块,则客户端从校验表的末尾可以获取到分块剩余数据,在进行数据合并时需要获取数据文件提供服务器提供的到分块剩余数据,将差异校验值对应的差异数据块、相同校验值对应的重复数据块、分块剩余数据进行合并,得到增量更新数据文件。可以理解的是,若数据文件提供服务器在进行文件分块划分时不存在分块剩余数据,则无需执行步骤I1至步骤I2。
通过以上实施例对本发明实施例的描述可知,根据配置文件提供的文件名称获取到当前版本数据文件,通过滑动窗口滑动至不同位置获取到多个窗口数据块,计算出窗口数据块的当前版本分块校验值,通过当前版本分块校验值和新版本分块校验值的判断确定出差异校验值,从该数据文件提供服务器获取到差异数据块,通过差异数据块和重复数据块的合并操作可以得到增量更新数据文件。因此从数据文件提供服务器获取到的只是差异数据块,而无需下载整个新版本数据文件,也不需要管理多种不同版本的数据文件,因此可以提高增量更新的效率,减少版本管理复杂度,简化增量更新的过程。
为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。
本发明实施例提供的数据文件的增量更新方法通过二进制差异的方式以将二进制的数据文件升级到任意版本,实现了版本无关、内存开销小、服务器负载小、支持升级策略,并适配于移动设备作为客户端的应用场景。接下来以本发明采用C语言实现二进制的增量更新为例。
请参阅图3所示,为本发明实施例提供的数据文件的增量更新方法的一种应用场景下交互流程示意图。
首先从数据文件提供服务器一侧进行介绍版本文件的预处理过程。数据文件提供服务器可以离线制作新版本数据文件,生成校验表。版本管理需要使用配置文件将目标版本的版本信息,需要更新的文件信息写到配置文件中。例如,本发明实施例采用windwos的批处理脚本(bat),该脚本最终调用了一个C语言写的预处理程序crsync.exe,实现如下代码:
#crsync bulk digest config ini
[global]
outputDir=../../SwordGame/crsync_etc/
currVersion=14182etc
nextVersion=14183etc
blockSize=16
[file1]
dir=./
name=SwordGame-AndroidARM-Release.apk
[file2]
dir=./libs/armeabi-v7a/
name=libUnrealEngine3.so
[file3]
dir=../../SwordGame/OBB_etc/
name=audio.obb
[file4]
dir=../../SwordGame/OBB_etc/
name=boss.obb
[file5]
dir=../../SwordGame/OBB_etc/
name=fx.obb
[file6]
dir=../../SwordGame/OBB_etc/
name=game.obb
[file7]
dir=../../SwordGame/OBB_etc/
name=map.obb
[file8]
dir=../../SwordGame/OBB_etc/
name=music.obb
[file9]
dir=../../SwordGame/OBB_etc/
name=wp.obb
[file10]
dir=../../SwordGame/OBB_etc/
name=data.obb
其中,各字段的解释如下:outputDir:预处理结果的输出目录,currentVersion:当前版本号,nextVersion:下个版本号,blockSize:分块大小(KB),file[n]:需要更新的文件。
配置完成之后使用如下命令行运行客户端预处理工具crsync.exe:
set exe=crynscexe
set iniFile=crsync_bulkDidgest.ini
call%exe%bulkdigest%iniFile%
具体的,可以在数据文件提供服务器上执行crysnc.exe的批处理功能,例如使用文件crynsctooletc.bat,set exe=crynscexe-->设置变量exe值为crsync.exe,setiniFile=crsync_bulkDidgest.ini-->设置变量iniFile值为:crsync_bulkDidgest.ini,call%exe%bulkdigest%iniFile%-->以bulkDigest crsync_bulkDidgest.ini为参数,调用crsync.exe。
最终会生成文件列表,这些文件可以包括目标文件的原始数据以及目标文件的新版本分块校验值。
数据文件提供服务器可以上传校验表与数据文件到文件管理服务器,该文件管理服务器以CDN为例,Crsync的服务器侧工具使用腾讯公司的下载业务文件分发系统,通过该网页工具将生成的数据文件上传到CDN。
接下来,对数据文件提供服务器执行的预处理阶段进行举例说明,计算目标文件的校验和,假设A文件大小为100M,分块大小为1KB,将A文件分块,分别计算[0]~[1023],[1024]~[2047],[2048]~[3071]...的校验值,输出一张A表,对于不足分块大小的数据,rsync会补齐0之后再计算校验值,但是本发明实施例中采用crsync,对这部分数据不进行处理直接将其存入A表的末尾作为差异部分。最终生成如图4所示的数据信息。其中,在图4中,chunkN1、…、chunkN指的是文件分块,弱校验(Wake checksum)例如adler32属于弱校验算法,计算的校验和可能存在重复,强校验(Strong checksun)例如MD5属于强校验算法,计算的校验和理论上是不会有重复出现。extra chunk指不足分块大小的数据,Diff值表示无需计算校验和,直接当作差异数据处理。
然后使用TPL序列化库存储计算结果,TPL存储需要定义一种特别字符串来说明存储内容的数据结构,TPL是一个开源的使用C语言实现的轻量级、高效的序列化工具库,比如这里计算的摘要信息:
static const char*DIGEST_TPLMAP_FORMAT="uuc#BA(uc#)";
上述TPL文件描述符可以做如下解释:文件大小,块大小,整个文件摘要值(固定长度的字符数组),分块剩余数据(Rest Data And Data Length),变长数组及其成员:弱校验值与强校验值(固定长度的字符数组)。
最终生成的文件包括目标文件和校验文件。
接下来举例说明生成Tversion配置文件,该文件用来记录需要升级的目标文件的版本信息,MD5校验值以及所在的下载地址等。Tversion文件采用#号作为分隔符,具体结构字段如下:多次升级结果#单次升级结果#版本号#描述#下载策略#下载地址#自定义信息。例如,典型的列子:0#0#1.1.206.14236#1.1.206.14236#1#http://dlied5.qq.com/wjzj/a/rel/etc/#SwordGame-AndroidARM-Release.apk;0b9e41fe7c6651a6f78bb41bf9b230ad;6860187;libUnrealEngine3.so;d65f3ab4dd4c1eafcfbc37e6eda7f698;38762500;
其中,自定义信息这里保存了需要升级的文件名称、MD5校验值、文件大小,这些信息与前面的下载链接一起最终生成了单个文件对应下载描述信息,该信息最终会在下载增量包时使用。之后将配置文件与对应的新版本数据文件上传到CDN。下载策略字段需要版本管理员通过当前应用程序的版本号以及资源包的版本号动态配置是否需要强制更新还是可选更新。
接下来描述客户端的数据文件升级过程,客户端启动后crsync服务会运行在移动设备上,同时自动下载最新的版本信息文件进行升级操作。具体的,首先下载版本文件之后,通过比对版本号提示用户是否更新,然后在本地计算校验值,例如可以做rsync算法的校验,最后下载增量更新文件。
客户端使用HTTP请求服务器将前述配置的Tversion文件下载到本地。客户端判断下载策略,如果下载策略是可选更新,用户可以跳过后续的操作继续使用本地版本。如果是强制更新应用会自动启动更新流程进行后续操作。crsync使用tversion文件中的自定义字段与URL字段等数据进行初始化,其操作包括设置本地路径,下载地址以及生成单个更新文件与其校验表的下载地址。例如,设置的下载地址指从tversion文件中解析出的:http://dlied5.qq.com/wjzj/a/rel/etc/,生成单个更新文件与其校验表的下载地址:是不一样的。通过http://dlied5.qq.com/wjzj/a/rel/etc/与文件名拼合在一起生成不同的最终地址。比如:a文件的MD5摘要是:34567891023,那么其文件的下载地址为:http://dlied5.qq.com/wjzj/a/rel/etc/34567891023,校验表的下载地址为:http://dlied5.qq.com/wjzj/a/rel/etc/34567891023.sum。
最后对客户端实现的本地差异计算的过程进行举例说明,首先,请参阅图5-a所示,对构建客户端的本地校验表的过程进行举例说明,Bloom过滤器(filter)速度很快,但是存在误报率,会将某些不再集合中的元素误报为在集合中,不过用来做Fast Missing确实合适的,会整体加快速度。首先构建目标文件校验表,使用TPL将文件校验数据加载到内存中,使用弱校验码作为Key,对应的详细信息作为Value生成一个Bloom filter的hashtable来做快速查找。由于弱校验值可能重复,多个相同的块使用链表(LinkList)存储,例如分块A和分块B具有相同的弱校验,但是分块A的强校验块ID和分块B的强校验块ID是不相同的。
接下来以alder32Rolling进行弱校验值计算为例,alder32算法用于zlib,一个32位的adler32值由2个16位的A和B值构成,其中,A值=buffer中所有byte相加,对216取模。B值=buffer中所有A相加,对216取模。
原始的公式如下:
An=(1+D1+D2+.....+Dn)mod65521
Bn=(A1+A2+......+An)mod65521
=(n+n×D1+(n-1)×D2+(n-2)×D3+......+Dn)mod65521
注:65521是65536范围内的最大素数,因此mod=65521即可。
本发明实施例中将该计算公式稍做调整:
An=(D1+D2+D3+......+Dn)mod65521
Bn=(A1+A2+....+An)mod65521
=(n×D1+(n-1)×D2+(n-2)×D3+......+Dn)mod65521
移动1bit之后,
An=(D2+D3+......+Dn)mod65521
An+1=(D2+D3+D4+......+Dn+Dn+1)mod65521
Bn+1=(A2+A3+....+An+An+1)mod65521
=(n×D2+(n-1)×D3+......+2Dn+Dn+1)mod65521
可以推得:
Bn+1=Bn-n×D1+An+1
举例说明如下:分块大小为1K的情况下,计算出[0]~[1023]的校验值之后再计算[1]~[1024]的校验值时,只需减去D0,加上D1024即可,无需全部重新计算,公式如下:
A1024=A1023-D0+D1024
B1024=B1023-1024×D0+A1024
其中,N等于1024。这样计算弱校验速度极块,滑动遍历即可得到整个文件的所有分块的校验值。实测文件大小100M在分块大小2K的情况下遍历计算仅耗时275ms。
接下来对rsync算法进行详细说明,Crsync在实现rsync的核心算法时使用了OpenMP的特性,将操作在多个线程中同时进行以提高移动设备上计算校验值与查找相同块的速度。OpenMP通过简单易用的编译指令就可以实现并行计算,以Android平台举例如下:在Android.mk文件中添加编译指令:-fopenmp,在需要并行的逻辑处添加指令:#pragmaomp parallel。其中需要并行的核心算法逻辑如图5-b所示:首先通过OpenMP将匹配过程分为多个部分,多个线程同时执行。图5-b中开始节点的Block实际上就是OpenMP中处理的一部分文件块。首先使用adler32算法计算第一个分块的弱校验和,之后在Bloom filter中做快速查找如果找到了表示可能存在重复数据块,遍历Hash冲突链表,此时需要计算该文件分块的MD5强校验和并且与之比较,如果相等就表示找到了一个重复数据块,缓存起来备用。否则表示没有找到潜在的重复数据块,此时将分块向后移动一个bit,使用adler32算法的循环(rolling)特性继续计算该文件分块的弱校验和,以此类推,直到该文件块全部计算完毕。上述过程中产生的重复即相同块在后续的合并操作中直接使用偏移进行读取与合并,不同块即差异数据块可以从文件管理服务器下载到,例如可以使用HTTP Range下载,最后将重复数据块和差异数据块进行合并得到增量数据更新文件。
由前述举例说明可知,本发明实施例提供的增量更新升级的整个过程只需要制作新版本数据文件,进行预处理之后将校验文件、原始文件、下载链接上传CDN,因此大幅度地减少了版本管理的复杂度,简化了版本维护过程,提高了工作效率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。
请参阅图6所示,本发明实施例提供的一种数据文件提供服务器600,可以包括:分块获取模块601、校验值计算模块602、配置文件提供模块603,其中,
分块获取模块601,用于获取新版本数据文件,以及根据所述新版本数据文件获取所述新版本数据文件对应的多个文件分块;
校验值计算模块602,用于根据所述多个文件分块分别计算各个文件分块的新版本分块校验值;
配置文件提供模块603,用于将所述各个文件分块的新版本分块校验值、所述新版本数据文件对应的文件名称和下载地址都写入配置文件中,以及向客户端提供所述配置文件,以使所述客户端根据所述配置文件完成增量更新。
在本发明的一些实施例中,所述配置文件提供模块603,还用于向客户端提供配置文件之前,获取所述新版本数据文件对应的新版本号,和/或下载策略,所述下载策略包括:所述新版本数据文件需要采用强制更新还是可选更新;将所述新版本数据文件对应的新版本号,和/或下载策略写入到所述配置文件中。
在本发明的一些实施例中,所述分块获取模块601,具体用于按照分块大小对所述新版本数据文件进行平分,得到总分块个数为L/size的文件分块,其中,L表示所述新版本数据文件的文件长度,size表示所述分块大小;如果L%size不等于0,则将L%size所得的余数对应的文件分块保存到校验表中,其中,%表示L对size进行取模。
在本发明的一些实施例中,所述校验值计算模块602,具体用于分别计算所述总分块个数为L/size中每个文件分块的新版本分块校验值,并将计算出的新版本分块校验值保存到所述校验表中;
所述配置文件提供模块603,具体用于将所述校验表、所述新版本数据文件对应的文件名称和下载地址都写入配置文件中。
在本发明的一些实施例中,所述校验值计算模块602,具体用于根据所述多个文件分块分别计算各个文件分块的新版本弱校验值和新版本强校验值。
通过以上实施例对本发明实施例的描述可知,新版本数据文件的每个文件分块都计算有新版本分块校验值,在配置文件中写入有各个文件分块的新版本分块校验值、新版本数据文件对应的文件名称和下载地址,向客户端提供配置文件,不需要管理多种不同版本的数据文件,也不需要针对版本差异来生成补丁包,因此可以提高增量更新的效率,减少版本管理复杂度,简化增量更新的过程。
接下来介绍本发明实施例提供的客户端,请参阅图7-a所示,客户端700包括:文件解析模块701、窗口数据选择模块702、校验值判断模块703、校验结果处理模块704、数据块合并模块705,其中,
文件解析模块701,用于获取数据文件提供服务器提供的配置文件,以及从所述配置文件中解析出新版本数据文件对应的文件名称和下载地址、所述新版数据文件中多个文件分块的新版本分块校验值;
窗口数据选择模块702,用于根据所述文件名称获取当前版本数据文件,以及使用与所述文件分块的分块大小相等的滑动窗口从所述当前版本数据文件中选择出所述滑动窗口滑动至不同位置所对应的窗口数据块;
校验值判断模块703,用于根据选择出的所述窗口数据块计算所述窗口数据块的当前版本分块校验值,以及判断所述当前版本分块校验值是否与所述新版本分块校验值相同;
校验结果处理模块704,用于若所述当前版本分块校验值与所述新版本分块校验值相同,获取相同校验值对应的窗口数据块相对于所述当前版本数据文件的偏移量,并继续判断所述滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与所述新版本分块校验值相同;若所述当前版本分块校验值与所述新版本分块校验值不相同,继续判断所述滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与所述新版本分块校验值相同;
数据块合并模块705,用于当所述滑动窗口滑动至最后一个位置对应的窗口数据块的当前版本分块校验值判断完毕之后,创建新版本数据文件对应的临时文件,对于所述临时文件中匹配到所述相同校验值的分块,则根据所述偏移量从所述当前版本数据文件获取到重复数据块,对于所述临时文件中没有匹配到所述相同校验值的分块,根据所述下载地址从所述数据文件提供服务器下载到差异数据块,将所述临时文件中的差异数据块和重复数据块进行合并,得到增量更新数据文件。
在本发明的一些实施例中,请参阅图7-b所示,所述客户端700还包括:版本号分析模块706,用于所述窗口数据选择模块702根据所述文件名称获取当前版本数据文件之后,从所述配置文件中解析出所述新版本数据文件对应的新版本号;获取所述当前版本数据文件对应的当前版本号;对比所述新版本号和所述当前版本号,若所述新版本号和所述当前版本号不相同,触发执行所述窗口数据选择模块。
在本发明的一些实施例中,请参阅图7-c所示,相对于图7-a所示,所述客户端700还包括:下载策略应用模块707,用于所述文件解析模块701获取数据文件提供服务器提供的配置文件之后,从所述配置文件中解析出所述新版本数据文件对应的下载策略,所述下载策略包括:所述新版本数据文件需要采用强制更新还是可选更新;若所述下载策略为强制更新,触发执行所述窗口数据选择模块;若所述下载策略为可选更新,发送更新提示消息,根据用户发送的更新指示确定是否继续执行所述窗口数据选择模块。
在本发明的一些实施例中,所述数据块合并模块705,具体用于从所述配置文件中解析出分块剩余数据,所述分块剩余数据包括:所述新版本数据文件中L%size所得的余数对应的文件分块,L表示所述新版本数据文件的文件长度,size表示分块大小,%表示L对size进行取模;将所述差异校验值对应的差异数据块、所述相同校验值对应的重复数据块、所述分块剩余数据进行合并,得到增量更新数据文件。
在本发明的一些实施例中,请参阅图7-d所示,所述新版本分块校验值包括:新版本弱校验值和新版本强校验值;
所述校验值判断模块703,包括:
弱校验处理模块7031,用于根据所述窗口数据块计算所述窗口数据块的当前版本弱校验值,以及判断所述当前版本弱校验值是否存在于所述新版本弱校验值对应的哈希过滤表中;若所述当前版本弱校验值不存在于所述哈希过滤表中,确定所述当前版本分块校验值与所述新版本分块校验值不相同;
强校验处理模块7032,用于若所述当前版本弱校验值存在于所述哈希过滤表中,根据所述窗口数据块计算所述窗口数据块的当前版本强校验值,判断所述当前版本强校验值是否与所述新版本强校验值相等,若所述当前版本强校验值与所述新版本强校验值相等,确定所述当前版本分块校验值与所述新版本分块校验值相同,若所述当前版本强校验值与所述新版本强校验值不相等,确定所述当前版本分块校验值与所述新版本分块校验值不相同。
通过以上实施例对本发明实施例的描述可知,根据配置文件提供的文件名称获取到当前版本数据文件,通过滑动窗口滑动至不同位置获取到多个窗口数据块,计算出窗口数据块的当前版本分块校验值,通过当前版本分块校验值和新版本分块校验值的判断确定出差异校验值,从该数据文件提供服务器获取到差异数据块,通过差异数据块和重复数据块的合并操作可以得到增量更新数据文件。因此从数据文件提供服务器获取到的只是差异数据块,而无需下载整个新版本数据文件,也不需要管理多种不同版本的数据文件,因此可以提高增量更新的效率,减少版本管理复杂度,简化增量更新的过程。
请参阅图8所示,数据文件的增量更新系统800,包括:如图6中任一项所述的数据文件提供服务器600和如图7中任一项所述的客户端700。其中,数据文件提供服务器600和客户端700的功能描述可以参阅前述实施例的介绍。
在本发明的一些实施例中,数据文件的增量更新系统除了包括数据文件提供服务器和客户端之外,数据文件的增量更新系统还可以包括:文件管理服务器,则文件管理服务器,用于存储所述数据文件提供服务器600发送的配置文件和新版本数据文件;向所述客户端700发送所述下载配置文件;向所述客户端700发送差异校验值对应的差异数据块。
通过以上对本发明实施例的描述可知,根据配置文件提供的文件名称获取到当前版本数据文件,通过滑动窗口滑动至不同位置获取到多个窗口数据块,计算出窗口数据块的当前版本分块校验值,通过当前版本分块校验值和新版本分块校验值的判断确定出差异校验值,从该文件管理服务器获取到差异数据块,通过差异数据块和重复数据块的合并操作可以得到增量更新数据文件。因此从文件管理服务器下载到的只是差异数据块,而无需下载整个新版本数据文件,也不需要管理多种不同版本的数据文件,因此可以提高增量更新的效率,减少版本管理复杂度,简化增量更新的过程。
图9是本发明实施例提供的一种服务器结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)1122(例如,一个或一个以上处理器)和存储器1132,一个或一个以上存储应用程序1142或数据1144的存储介质1130(例如一个或一个以上海量存储设备)。其中,存储器1132和存储介质1130可以是短暂存储或持久存储。存储在存储介质1130的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1122可以设置为与存储介质1130通信,在服务器1100上执行存储介质1130中的一系列指令操作。
服务器1100还可以包括一个或一个以上电源1126,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1158,和/或,一个或一个以上操作系统1141,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的数据文件的增量更新方法步骤可以基于该图9所示的服务器结构。
本发明实施例还提供了另一种终端,如图10所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point ofSales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:
图10示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图10,手机包括:射频(Radio Frequency,RF)电路1010、存储器1020、输入单元1030、显示单元1040、传感器1050、音频电路1060、无线保真(wireless fidelity,WiFi)模块1070、处理器1080、以及电源1090等部件。本领域技术人员可以理解,图10中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图10对手机的各个构成部件进行具体的介绍:
RF电路1010可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1080处理;另外,将设计上行的数据发送给基站。通常,RF电路1010包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,LNA)、双工器等。此外,RF电路1010还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GlobalSystem of Mobile communication,GSM)、通用分组无线服务(General Packet RadioService,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器1020可用于存储软件程序以及模块,处理器1080通过运行存储在存储器1020的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1030可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1030可包括触控面板1031以及其他输入设备1032。触控面板1031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1031上或在触控面板1031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1080,并能接收处理器1080发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1031。除了触控面板1031,输入单元1030还可以包括其他输入设备1032。具体地,其他输入设备1032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1040可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1040可包括显示面板1041,可选的,可以采用液晶显示器(LiquidCrystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板1041。进一步的,触控面板1031可覆盖显示面板1041,当触控面板1031检测到在其上或附近的触摸操作后,传送给处理器1080以确定触摸事件的类型,随后处理器1080根据触摸事件的类型在显示面板1041上提供相应的视觉输出。虽然在图10中,触控面板1031与显示面板1041是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1031与显示面板1041集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器1050,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1041的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1060、扬声器1061,传声器1062可提供用户与手机之间的音频接口。音频电路1060可将接收到的音频数据转换后的电信号,传输到扬声器1061,由扬声器1061转换为声音信号输出;另一方面,传声器1062将收集的声音信号转换为电信号,由音频电路1060接收后转换为音频数据,再将音频数据输出处理器1080处理后,经RF电路1010以发送给比如另一手机,或者将音频数据输出至存储器1020以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块1070可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图10示出了WiFi模块1070,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1080是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1020内的软件程序和/或模块,以及调用存储在存储器1020内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1080可包括一个或多个处理单元;优选的,处理器1080可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1080中。
手机还包括给各个部件供电的电源1090(比如电池),优选的,电源可以通过电源管理系统与处理器1080逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本发明实施例中,该终端所包括的处理器1080还具有控制执行以上由终端执行的数据文件的增量更新方法流程。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (21)

1.一种数据文件的增量更新方法,其特征在于,包括:
获取新版本数据文件,以及根据所述新版本数据文件获取所述新版本数据文件对应的多个文件分块;
根据所述多个文件分块分别计算各个文件分块的新版本分块校验值;
将所述各个文件分块的新版本分块校验值、所述新版本数据文件对应的文件名称和下载地址都写入配置文件中,以及向客户端提供所述配置文件,以使所述客户端根据所述配置文件完成增量更新。
2.根据权利要求1所述的方法,其特征在于,所述向客户端提供所述配置文件之前,所述方法还包括:
获取所述新版本数据文件对应的新版本号,和/或下载策略,所述下载策略包括:所述新版本数据文件需要采用强制更新还是可选更新;
将所述新版本数据文件对应的新版本号,和/或下载策略写入到所述配置文件中。
3.根据权利要求1所述的方法,其特征在于,所述根据所述新版本数据文件获取所述新版本数据文件对应的多个文件分块,包括:
按照分块大小对所述新版本数据文件进行平分,得到总分块个数为L/size的文件分块,其中,L表示所述新版本数据文件的文件长度,size表示所述分块大小;
如果L%size不等于0,则将L%size所得的余数对应的文件分块保存到校验表中,其中,%表示L对size进行取模。
4.根据权利要求3所述的方法,其特征在于,所述根据所述多个文件分块分别计算各个文件分块的新版本分块校验值,包括:
分别计算所述总分块个数为L/size中每个文件分块的新版本分块校验值,并将计算出的新版本分块校验值保存到所述校验表中;
所述将所述各个文件分块的新版本分块校验值、所述新版本数据文件对应的文件名称和下载地址都写入配置文件中,包括:
将所述校验表、所述新版本数据文件对应的文件名称和下载地址都写入配置文件中。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述根据所述多个文件分块分别计算各个文件分块的新版本分块校验值,包括:
根据所述多个文件分块分别计算各个文件分块的新版本弱校验值和新版本强校验值。
6.一种数据文件的增量更新方法,其特征在于,包括:
获取数据文件提供服务器提供的配置文件,以及从所述配置文件中解析出新版本数据文件对应的文件名称和下载地址、所述新版数据文件中多个文件分块的新版本分块校验值;
根据所述文件名称获取当前版本数据文件,以及使用与所述文件分块的分块大小相等的滑动窗口从所述当前版本数据文件中选择出所述滑动窗口滑动至不同位置所对应的窗口数据块;
根据选择出的所述窗口数据块计算所述窗口数据块的当前版本分块校验值,以及判断所述当前版本分块校验值是否与所述新版本分块校验值相同;
若所述当前版本分块校验值与所述新版本分块校验值相同,获取相同校验值对应的窗口数据块相对于所述当前版本数据文件的偏移量,并继续判断所述滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与所述新版本分块校验值相同;若所述当前版本分块校验值与所述新版本分块校验值不相同,继续判断所述滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与所述新版本分块校验值相同;
当所述滑动窗口滑动至最后一个位置对应的窗口数据块的当前版本分块校验值判断完毕之后,创建新版本数据文件对应的临时文件,对于所述临时文件中匹配到所述相同校验值的分块,则根据所述偏移量从所述当前版本数据文件获取到重复数据块,对于所述临时文件中没有匹配到所述相同校验值的分块,根据所述下载地址从所述数据文件提供服务器下载到差异数据块,将所述临时文件中的差异数据块和重复数据块进行合并,得到增量更新数据文件。
7.根据权利要求6所述的方法,其特征在于,所述根据所述文件名称获取当前版本数据文件之后,所述方法还包括:
从所述配置文件中解析出所述新版本数据文件对应的新版本号;
获取所述当前版本数据文件对应的当前版本号;
对比所述新版本号和所述当前版本号,若所述新版本号和所述当前版本号不相同,触发执行如下步骤:使用与所述文件分块的分块大小相等的滑动窗口从所述当前版本数据文件中选择出所述滑动窗口滑动至不同位置所对应的窗口数据块。
8.根据权利要求6所述的方法,其特征在于,所述获取数据文件提供服务器提供的配置文件之后,所述方法还包括:
从所述配置文件中解析出所述新版本数据文件对应的下载策略,所述下载策略包括:所述新版本数据文件需要采用强制更新还是可选更新;
若所述下载策略为强制更新,触发执行如下步骤:根据所述文件名称获取当前版本数据文件;
若所述下载策略为可选更新,发送更新提示消息,根据用户发送的更新指示确定是否继续执行如下步骤:根据所述文件名称获取当前版本数据文件。
9.根据权利要求6所述的方法,其特征在于,所述将所述临时文件中的差异数据块和重复数据块进行合并,得到增量更新数据文件,包括:
从所述配置文件中解析出分块剩余数据,所述分块剩余数据包括:所述新版本数据文件中L%size所得的余数对应的文件分块,L表示所述新版本数据文件的文件长度,size表示分块大小,%表示L对size进行取模;
将所述差异数据块、所述重复数据块、所述分块剩余数据进行合并,得到增量更新数据文件。
10.根据权利要求6至9中任一项所述的方法,其特征在于,所述新版本分块校验值包括:新版本弱校验值和新版本强校验值;
所述判断所述当前版本分块校验值是否与所述新版本分块校验值相同,包括:
根据所述窗口数据块计算所述窗口数据块的当前版本弱校验值,以及判断所述当前版本弱校验值是否存在于所述新版本弱校验值对应的哈希过滤表中;
若所述当前版本弱校验值不存在于所述哈希过滤表中,确定所述当前版本分块校验值与所述新版本分块校验值不相同;
若所述当前版本弱校验值存在于所述哈希过滤表中,根据所述窗口数据块计算所述窗口数据块的当前版本强校验值,判断所述当前版本强校验值是否与所述新版本强校验值相等,若所述当前版本强校验值与所述新版本强校验值相等,确定所述当前版本分块校验值与所述新版本分块校验值相同,若所述当前版本强校验值与所述新版本强校验值不相等,确定所述当前版本分块校验值与所述新版本分块校验值不相同。
11.一种数据文件提供服务器,其特征在于,包括:
分块获取模块,用于获取新版本数据文件,以及根据所述新版本数据文件获取所述新版本数据文件对应的多个文件分块;
校验值计算模块,用于根据所述多个文件分块分别计算各个文件分块的新版本分块校验值;
配置文件提供模块,用于将所述各个文件分块的新版本分块校验值、所述新版本数据文件对应的文件名称和下载地址都写入配置文件中,以及向客户端提供所述配置文件,以使所述客户端根据所述配置文件完成增量更新。
12.根据权利要求11所述的数据文件提供服务器,其特征在于,所述配置文件提供模块,还用于向客户端提供所述配置文件之前,获取所述新版本数据文件对应的新版本号,和/或下载策略,所述下载策略包括:所述新版本数据文件需要采用强制更新还是可选更新;将所述新版本数据文件对应的新版本号,和/或下载策略写入到所述配置文件中。
13.根据权利要求11所述的数据文件提供服务器,其特征在于,所述分块获取模块,具体用于按照分块大小对所述新版本数据文件进行平分,得到总分块个数为L/size的文件分块,其中,L表示所述新版本数据文件的文件长度,size表示所述分块大小;如果L%size不等于0,则将L%size所得的余数对应的文件分块保存到校验表中,其中,%表示L对size进行取模。
14.根据权利要求13所述的数据文件提供服务器,其特征在于,所述校验值计算模块,具体用于分别计算所述总分块个数为L/size中每个文件分块的新版本分块校验值,并将计算出的新版本分块校验值保存到所述校验表中;
所述配置文件提供模块,具体用于将所述校验表、所述新版本数据文件对应的文件名称和下载地址都写入配置文件中。
15.根据权利要求11至14中任一项所述的数据文件提供服务器,其特征在于,所述校验值计算模块,具体用于根据所述多个文件分块分别计算各个文件分块的新版本弱校验值和新版本强校验值。
16.一种客户端,其特征在于,包括:
文件解析模块,用于获取数据文件提供服务器提供的配置文件,以及从所述配置文件中解析出新版本数据文件对应的文件名称和下载地址、所述新版数据文件中多个文件分块的新版本分块校验值;
窗口数据选择模块,用于根据所述文件名称获取当前版本数据文件,以及使用与所述文件分块的分块大小相等的滑动窗口从所述当前版本数据文件中选择出所述滑动窗口滑动至不同位置所对应的窗口数据块;
校验值判断模块,用于根据选择出的所述窗口数据块计算所述窗口数据块的当前版本分块校验值,以及判断所述当前版本分块校验值是否与所述新版本分块校验值相同;
校验结果处理模块,用于若所述当前版本分块校验值与所述新版本分块校验值相同,获取相同校验值对应的窗口数据块相对于所述当前版本数据文件的偏移量,并继续判断所述滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与所述新版本分块校验值相同;若所述当前版本分块校验值与所述新版本分块校验值不相同,继续判断所述滑动窗口滑动至下一个位置时对应的窗口数据块的当前版本分块校验值是否与所述新版本分块校验值相同;
数据块合并模块,用于当所述滑动窗口滑动至最后一个位置对应的窗口数据块的当前版本分块校验值判断完毕之后,创建新版本数据文件对应的临时文件,对于所述临时文件中匹配到所述相同校验值的分块,则根据所述偏移量从所述当前版本数据文件获取到重复数据块,对于所述临时文件中没有匹配到所述相同校验值的分块,根据所述下载地址从所述数据文件提供服务器下载到差异数据块,将所述临时文件中的差异数据块和重复数据块进行合并,得到增量更新数据文件。
17.根据权利要求16所述的客户端,其特征在于,所述客户端还包括:版本号分析模块,用于所述窗口数据选择模块根据所述文件名称获取当前版本数据文件之后,从所述配置文件中解析出所述新版本数据文件对应的新版本号;获取所述当前版本数据文件对应的当前版本号;对比所述新版本号和所述当前版本号,若所述新版本号和所述当前版本号不相同,触发执行所述窗口数据选择模块。
18.根据权利要求16所述的客户端,其特征在于,所述客户端还包括:下载策略应用模块,用于所述文件解析模块获取数据文件提供服务器提供的配置文件之后,从所述配置文件中解析出所述新版本数据文件对应的下载策略,所述下载策略包括:所述新版本数据文件需要采用强制更新还是可选更新;若所述下载策略为强制更新,触发执行所述窗口数据选择模块;若所述下载策略为可选更新,发送更新提示消息,根据用户发送的更新指示确定是否继续执行所述窗口数据选择模块。
19.根据权利要求16所述的客户端,其特征在于,所述数据块合并模块,具体用于从所述配置文件中解析出分块剩余数据,所述分块剩余数据包括:所述新版本数据文件中L%size所得的余数对应的文件分块,L表示所述新版本数据文件的文件长度,size表示分块大小,%表示L对size进行取模;将所述差异校验值对应的差异数据块、所述相同校验值对应的重复数据块、所述分块剩余数据进行合并,得到增量更新数据文件。
20.根据权利要求16至19中任一项所述的客户端,其特征在于,所述新版本分块校验值包括:新版本弱校验值和新版本强校验值;
所述校验值判断模块,包括:
弱校验处理模块,用于根据所述窗口数据块计算所述窗口数据块的当前版本弱校验值,以及判断所述当前版本弱校验值是否存在于所述新版本弱校验值对应的哈希过滤表中;若所述当前版本弱校验值不存在于所述哈希过滤表中,确定所述当前版本分块校验值与所述新版本分块校验值不相同;
强校验处理模块,用于若所述当前版本弱校验值存在于所述哈希过滤表中,根据所述窗口数据块计算所述窗口数据块的当前版本强校验值,判断所述当前版本强校验值是否与所述新版本强校验值相等,若所述当前版本强校验值与所述新版本强校验值相等,确定所述当前版本分块校验值与所述新版本分块校验值相同,若所述当前版本强校验值与所述新版本强校验值不相等,确定所述当前版本分块校验值与所述新版本分块校验值不相同。
21.一种数据文件的增量更新系统,其特征在于,包括:如权利要求11至15中任一项所述的数据文件提供服务器和如权利要求16至20中任一项所述的客户端。
CN201610947604.6A 2016-10-26 2016-10-26 一种数据文件的增量更新方法和服务器、客户端以及系统 Pending CN106528125A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610947604.6A CN106528125A (zh) 2016-10-26 2016-10-26 一种数据文件的增量更新方法和服务器、客户端以及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610947604.6A CN106528125A (zh) 2016-10-26 2016-10-26 一种数据文件的增量更新方法和服务器、客户端以及系统

Publications (1)

Publication Number Publication Date
CN106528125A true CN106528125A (zh) 2017-03-22

Family

ID=58292564

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610947604.6A Pending CN106528125A (zh) 2016-10-26 2016-10-26 一种数据文件的增量更新方法和服务器、客户端以及系统

Country Status (1)

Country Link
CN (1) CN106528125A (zh)

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107729043A (zh) * 2017-11-10 2018-02-23 深圳Tcl新技术有限公司 增量升级包的校验方法、装置和计算机可读存储介质
CN107885526A (zh) * 2017-11-17 2018-04-06 苏州蜗牛数字科技股份有限公司 一种文件更新方法及系统
CN108733400A (zh) * 2018-04-27 2018-11-02 新光互联投资管理有限公司 一种App增量热更新方法及服务系统
CN108733391A (zh) * 2017-04-18 2018-11-02 北京京东尚科信息技术有限公司 一种资源动态配置的方法和装置
CN108762798A (zh) * 2017-04-25 2018-11-06 腾讯科技(深圳)有限公司 一种增量更新文件的方法及装置
CN108984206A (zh) * 2018-08-09 2018-12-11 聚好看科技股份有限公司 一种数据发送的方法和设备
CN109271196A (zh) * 2018-09-28 2019-01-25 平安普惠企业管理有限公司 App版本升级方法、装置、系统及计算机设备
CN109309725A (zh) * 2018-10-25 2019-02-05 深圳市腾讯信息技术有限公司 应用下载和更新方法、装置、计算机设备及存储介质
CN109522041A (zh) * 2018-10-15 2019-03-26 网易(杭州)网络有限公司 客户端资源更新方法、装置、处理器、服务器及终端
CN109542988A (zh) * 2018-10-19 2019-03-29 深圳点猫科技有限公司 一种大数据的更新方法及电子设备
CN109740308A (zh) * 2018-12-28 2019-05-10 厦门吉比特网络技术股份有限公司 一种服务器端版本的保护方法及系统
WO2019083440A3 (zh) * 2017-10-24 2019-06-20 华为国际有限公司 一种车载设备升级方法及相关设备
CN109933380A (zh) * 2019-03-05 2019-06-25 天津字节跳动科技有限公司 在线表格分块加载方法及装置
CN110032383A (zh) * 2019-04-08 2019-07-19 网易(杭州)网络有限公司 软件更新方法、装置及存储介质
CN110032388A (zh) * 2019-04-04 2019-07-19 阿里巴巴集团控股有限公司 一种增量文件的构建、发布、下载方法及装置
CN110262827A (zh) * 2019-05-20 2019-09-20 北京三快在线科技有限公司 增量更新的方法、装置、存储介质以及电子设备
CN110366142A (zh) * 2018-04-10 2019-10-22 通用汽车环球科技运作有限责任公司 使用增强型布隆过滤器进行智能数据交换的自动化车辆系统
WO2020043119A1 (zh) * 2018-08-31 2020-03-05 杭州海康威视系统技术有限公司 一种数据更新方法及更新装置
CN110865828A (zh) * 2018-08-28 2020-03-06 成都鼎桥通信技术有限公司 数据升级方法、装置、设备及计算机可读存储介质
CN111131146A (zh) * 2019-11-08 2020-05-08 北京航空航天大学 一种广域环境下多超算中心软件系统部署和增量更新方法
TWI700905B (zh) * 2018-01-18 2020-08-01 香港商阿里巴巴集團服務有限公司 資料的處理方法、裝置及設備
CN111580849A (zh) * 2020-05-09 2020-08-25 东软睿驰汽车技术(沈阳)有限公司 一种文件差量更新优化的方法和相关装置
WO2020199724A1 (zh) * 2019-04-04 2020-10-08 中国银联股份有限公司 一种数据处理方法及服务器、设备
CN111782251A (zh) * 2020-08-18 2020-10-16 广联达科技股份有限公司 一种软件功能模块的更新方法、装置及计算机设备
WO2020211594A1 (zh) * 2019-04-17 2020-10-22 中兴通讯股份有限公司 零差分升级方法、非易失性存储介质及电子装置
CN111831323A (zh) * 2020-05-29 2020-10-27 大数金科网络技术有限公司 容器化的增量持续交付方法
CN112230974A (zh) * 2019-07-15 2021-01-15 深圳Tcl数字技术有限公司 一种电视机差分升级包生成方法和系统
CN112328296A (zh) * 2020-11-30 2021-02-05 北京百度网讯科技有限公司 针对跨平台应用的软件更新方法、装置、设备和介质
CN112433743A (zh) * 2020-12-08 2021-03-02 深圳市优必选科技股份有限公司 一种文件更新方法、装置、电子设备及存储介质
CN112579141A (zh) * 2020-12-23 2021-03-30 华立科技股份有限公司 一种嵌入式系统的固件更新方法、装置、设备及存储介质
CN113094437A (zh) * 2021-04-14 2021-07-09 深圳前海移联科技有限公司 一种基于Rsync的区块链状态数据同步方法及系统
CN113542422A (zh) * 2021-07-19 2021-10-22 星辰天合(北京)数据科技有限公司 数据存储方法、装置、存储介质及电子装置
CN114006898A (zh) * 2021-10-30 2022-02-01 杭州迪普信息技术有限公司 版本更换方法、装置及系统
CN114356245A (zh) * 2022-01-12 2022-04-15 济南点量软件有限公司 一种海量文件快速比对更新的方法及系统
CN114461264A (zh) * 2021-07-22 2022-05-10 荣耀终端有限公司 打补丁方法、生成补丁的方法及相关设备
CN117201043A (zh) * 2023-11-08 2023-12-08 北京中科网威信息技术有限公司 文件检测方法、装置及电子设备
WO2023241582A1 (zh) * 2022-06-14 2023-12-21 华为技术有限公司 数据同步方法、系统、介质、程序产品和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101290628A (zh) * 2008-06-17 2008-10-22 中兴通讯股份有限公司 一种数据文件更新存储方法
CN101344906A (zh) * 2008-05-19 2009-01-14 北京深思洛克数据保护中心 一种分块式的远程更新方法
CN104092780A (zh) * 2014-07-29 2014-10-08 中国联合网络通信集团有限公司 基于文件分块的文件修改方法、单文件同步方法及装置
CN105867934A (zh) * 2016-04-13 2016-08-17 厦门雅迅网络股份有限公司 一种基于二分法和md5校验的文件远程升级方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101344906A (zh) * 2008-05-19 2009-01-14 北京深思洛克数据保护中心 一种分块式的远程更新方法
CN101290628A (zh) * 2008-06-17 2008-10-22 中兴通讯股份有限公司 一种数据文件更新存储方法
CN104092780A (zh) * 2014-07-29 2014-10-08 中国联合网络通信集团有限公司 基于文件分块的文件修改方法、单文件同步方法及装置
CN105867934A (zh) * 2016-04-13 2016-08-17 厦门雅迅网络股份有限公司 一种基于二分法和md5校验的文件远程升级方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘彦 等: "基于内容分块的Rsync核心算法改进", 《中国科技论文在线 HTTP://WWW.PAPER.EDU.CN/RELEASEPAPER/CONTENT/201312-509》 *
陈皓: "rsync的核心算法", 《HTTPS://COOLSHELL.CN/ARTICLES/7425.HTML》 *

Cited By (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108733391A (zh) * 2017-04-18 2018-11-02 北京京东尚科信息技术有限公司 一种资源动态配置的方法和装置
CN108762798A (zh) * 2017-04-25 2018-11-06 腾讯科技(深圳)有限公司 一种增量更新文件的方法及装置
CN108762798B (zh) * 2017-04-25 2021-11-26 腾讯科技(深圳)有限公司 一种增量更新文件的方法及装置
US11662991B2 (en) 2017-10-24 2023-05-30 Huawei International Pte. Ltd. Vehicle-mounted device upgrade method and related device
JP2021500816A (ja) * 2017-10-24 2021-01-07 ホアウェイ インターナショナル ピーティーイー. リミテッド 車両搭載機器アップグレード方法および関連機器
JP7139424B2 (ja) 2017-10-24 2022-09-20 ホアウェイ インターナショナル ピーティーイー. リミテッド 車両搭載機器アップグレード方法および関連機器
WO2019083440A3 (zh) * 2017-10-24 2019-06-20 华为国际有限公司 一种车载设备升级方法及相关设备
CN107729043A (zh) * 2017-11-10 2018-02-23 深圳Tcl新技术有限公司 增量升级包的校验方法、装置和计算机可读存储介质
CN107885526A (zh) * 2017-11-17 2018-04-06 苏州蜗牛数字科技股份有限公司 一种文件更新方法及系统
TWI700905B (zh) * 2018-01-18 2020-08-01 香港商阿里巴巴集團服務有限公司 資料的處理方法、裝置及設備
CN110366142A (zh) * 2018-04-10 2019-10-22 通用汽车环球科技运作有限责任公司 使用增强型布隆过滤器进行智能数据交换的自动化车辆系统
CN108733400A (zh) * 2018-04-27 2018-11-02 新光互联投资管理有限公司 一种App增量热更新方法及服务系统
CN108984206A (zh) * 2018-08-09 2018-12-11 聚好看科技股份有限公司 一种数据发送的方法和设备
CN110865828A (zh) * 2018-08-28 2020-03-06 成都鼎桥通信技术有限公司 数据升级方法、装置、设备及计算机可读存储介质
WO2020043119A1 (zh) * 2018-08-31 2020-03-05 杭州海康威视系统技术有限公司 一种数据更新方法及更新装置
CN109271196A (zh) * 2018-09-28 2019-01-25 平安普惠企业管理有限公司 App版本升级方法、装置、系统及计算机设备
CN109522041A (zh) * 2018-10-15 2019-03-26 网易(杭州)网络有限公司 客户端资源更新方法、装置、处理器、服务器及终端
CN109542988A (zh) * 2018-10-19 2019-03-29 深圳点猫科技有限公司 一种大数据的更新方法及电子设备
CN109309725A (zh) * 2018-10-25 2019-02-05 深圳市腾讯信息技术有限公司 应用下载和更新方法、装置、计算机设备及存储介质
CN109740308A (zh) * 2018-12-28 2019-05-10 厦门吉比特网络技术股份有限公司 一种服务器端版本的保护方法及系统
CN109740308B (zh) * 2018-12-28 2021-04-16 厦门吉比特网络技术股份有限公司 一种服务器端版本的保护方法及系统
CN109933380A (zh) * 2019-03-05 2019-06-25 天津字节跳动科技有限公司 在线表格分块加载方法及装置
CN109933380B (zh) * 2019-03-05 2023-02-28 天津字节跳动科技有限公司 在线表格分块加载方法及装置
CN110032388B (zh) * 2019-04-04 2022-04-29 创新先进技术有限公司 一种增量文件的构建、发布、下载方法及装置
WO2020199724A1 (zh) * 2019-04-04 2020-10-08 中国银联股份有限公司 一种数据处理方法及服务器、设备
CN110032388A (zh) * 2019-04-04 2019-07-19 阿里巴巴集团控股有限公司 一种增量文件的构建、发布、下载方法及装置
CN110032383A (zh) * 2019-04-08 2019-07-19 网易(杭州)网络有限公司 软件更新方法、装置及存储介质
WO2020211594A1 (zh) * 2019-04-17 2020-10-22 中兴通讯股份有限公司 零差分升级方法、非易失性存储介质及电子装置
CN111831297B (zh) * 2019-04-17 2021-10-26 中兴通讯股份有限公司 零差分升级方法及装置
CN110262827A (zh) * 2019-05-20 2019-09-20 北京三快在线科技有限公司 增量更新的方法、装置、存储介质以及电子设备
CN112230974A (zh) * 2019-07-15 2021-01-15 深圳Tcl数字技术有限公司 一种电视机差分升级包生成方法和系统
CN111131146A (zh) * 2019-11-08 2020-05-08 北京航空航天大学 一种广域环境下多超算中心软件系统部署和增量更新方法
CN111580849A (zh) * 2020-05-09 2020-08-25 东软睿驰汽车技术(沈阳)有限公司 一种文件差量更新优化的方法和相关装置
CN111831323A (zh) * 2020-05-29 2020-10-27 大数金科网络技术有限公司 容器化的增量持续交付方法
CN111782251A (zh) * 2020-08-18 2020-10-16 广联达科技股份有限公司 一种软件功能模块的更新方法、装置及计算机设备
CN112328296B (zh) * 2020-11-30 2024-04-02 北京百度网讯科技有限公司 针对跨平台应用的软件更新方法、装置、设备和介质
CN112328296A (zh) * 2020-11-30 2021-02-05 北京百度网讯科技有限公司 针对跨平台应用的软件更新方法、装置、设备和介质
CN112433743B (zh) * 2020-12-08 2023-10-10 深圳市优必选科技股份有限公司 一种文件更新方法、装置、电子设备及存储介质
CN112433743A (zh) * 2020-12-08 2021-03-02 深圳市优必选科技股份有限公司 一种文件更新方法、装置、电子设备及存储介质
CN112579141A (zh) * 2020-12-23 2021-03-30 华立科技股份有限公司 一种嵌入式系统的固件更新方法、装置、设备及存储介质
CN113094437A (zh) * 2021-04-14 2021-07-09 深圳前海移联科技有限公司 一种基于Rsync的区块链状态数据同步方法及系统
CN113094437B (zh) * 2021-04-14 2023-10-03 深圳前海移联科技有限公司 一种基于Rsync的区块链状态数据同步方法及系统
CN113542422B (zh) * 2021-07-19 2023-10-17 北京星辰天合科技股份有限公司 数据存储方法、装置、存储介质及电子装置
CN113542422A (zh) * 2021-07-19 2021-10-22 星辰天合(北京)数据科技有限公司 数据存储方法、装置、存储介质及电子装置
CN114461264B (zh) * 2021-07-22 2023-01-10 荣耀终端有限公司 打补丁方法、生成补丁的方法及相关设备
CN114461264A (zh) * 2021-07-22 2022-05-10 荣耀终端有限公司 打补丁方法、生成补丁的方法及相关设备
CN114006898A (zh) * 2021-10-30 2022-02-01 杭州迪普信息技术有限公司 版本更换方法、装置及系统
CN114356245B (zh) * 2022-01-12 2023-09-22 济南点量软件有限公司 一种海量文件快速比对更新的方法及系统
CN114356245A (zh) * 2022-01-12 2022-04-15 济南点量软件有限公司 一种海量文件快速比对更新的方法及系统
WO2023241582A1 (zh) * 2022-06-14 2023-12-21 华为技术有限公司 数据同步方法、系统、介质、程序产品和电子设备
CN117201043A (zh) * 2023-11-08 2023-12-08 北京中科网威信息技术有限公司 文件检测方法、装置及电子设备
CN117201043B (zh) * 2023-11-08 2024-01-12 北京中科网威信息技术有限公司 文件检测方法、装置及电子设备

Similar Documents

Publication Publication Date Title
CN106528125A (zh) 一种数据文件的增量更新方法和服务器、客户端以及系统
CN106970790B (zh) 一种应用程序创建的方法、相关设备及系统
CN105302587B (zh) 数据更新方法及装置
CN106775637B (zh) 一种应用程序的页面显示方法和装置
CN107734022B (zh) 静态资源文件下载方法、移动终端及计算机可读存储介质
US20140089314A1 (en) Function-presenting system, terminal device, server device, program and function-presenting method
CN101990669B (zh) 用于更新内容项的方法、设备和计算机程序产品
CN104808892A (zh) 一种应用图标排序方法、装置、系统及相关设备
CN102799445A (zh) 一种基于Android平台的应用升级方法及系统
CN106155750A (zh) 一种资源文件的加载方法和装置
CN112765271A (zh) 区块链交易索引的存储方法、装置、计算机设备及介质
CN105550252A (zh) 一种文件定位方法、装置及电子设备
CN112989430A (zh) 完整性校验方法、装置、终端设备及验证服务器
CN109672655A (zh) 一种差分升级的方法、装置及系统
CN107908407B (zh) 编译方法、装置及终端设备
CN104063409A (zh) 一种数据库的字段增加方法和系统
CN108762798A (zh) 一种增量更新文件的方法及装置
CN107729042A (zh) 移动应用升级方法及装置、存储介质、电子设备
CN111316230B (zh) 一种补丁包生成方法及设备
CN112989148A (zh) 纠错词排序方法、装置、终端设备和存储介质
CN111177721A (zh) 一种文件的病毒检测方法、装置、终端及存储介质
JP3757235B2 (ja) ネイティブコンパイル方法、ネイティブコンパイル前処理方法、コンピュータプログラム、サーバ、通信システム、および移動体通信端末装置
CN112286586B (zh) 一种插件的配置方法及相关设备
CN110704188B (zh) 内存分配器优化方法、装置、设备、存储介质
EP2930616B1 (en) Device and method for generating application package

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170322