具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明所述文件加速下载方法及装置的具体实施方式做进一步详细说明。
本发明提出了一种文件加速下载方法及装置,将文件进行逻辑和索引上的聚合为文件集合,在下载过程中以文件集合为单位进行交互查询和文件校验,进而可以有效减少查询次数和带宽消耗,加快数据分片到达时间,减少协议开销;而且提升P2P利用率和下载成功率。此外,通过文件集合的集合标识与文件序号确定所需下载的文件,并通过聚合后的文件集合的每一分片的特征标识进行校验,以确保下载文件的正确性。若文件集合中某一文件内容发生错误,只需重新聚合相关文件,重新生成文件集合的集合标识和文件集合的分片的校验信息,并重新执行发布流程即可。
参见图1所示是本发明文件加速下载方法具体实施方式的流程示意图,包括如下步骤:S110、将多个文件进行逻辑和索引上的聚合以形成至少一文件集合;S115、以文件大小或文件的频度信息将多个文件聚合成文件集合;S120、接收下载指令;S130、根据下载指令中对应文件所映射的集合标识匹配相应的文件集合;S140、在匹配到一个文件集合后,根据文件序号定位待下载的文件;S150、将所述定位到的待下载的文件发送至下载终端;S160、在文件校验时,通过聚合后的文件集合的分片的特征标识进行验证;S170、若文件集合中一文件的内容发生错误,则重新聚合成文件集合,并生成集合标识和所述文件集合的分片的校验信息。
以下对上述步骤做详细说明。
步骤S110:将多个文件进行逻辑和索引上的聚合以形成至少一文件集合。
所述文件主要是指定期发布的网络游戏或升级补丁包,或是系统补丁(例如操作系统或应用软件的补丁)。在本发明具体实施方式中,所述文件为小文件,其大小一般小于阈值,(比如500KB)。按文件大小或文件的频度信息,将所有所述文件进行逻辑和索引上(即分组标识方式)聚合,得到1个或多个不同的文件集合。通过文件集合的编号对文件集合加以排列,例如文件集合SET1、SET2、 SET3…SETn。每一文件集合包括多个文件,包括f1 、f2、f3、 f4…fn。每一文件具有一文件序号。若有1000个文件,比如可以分成20个文件集合,则每一文件集合包括50个文件。每一文件集合中所有文件聚合后生成一大文件,例如F1、F2、F3、F4、F5…Fn,每一大文件与每一文件集合相对应,比如,F1与SET1对应,F2与SET2对应,F3与SET3对应…Fn与SETn对应。然后按固定大小对大文件进行分片。分片是对聚合后的文件集合(或称大文件)进行逻辑上的切割(具体切割方式在下文有说明),其目的是为了降低下载出错后的成本。也就是说,对每一文件集合进行片段化,并根据每一分片内容计算其特征标识(比如,哈希值信息),作为每一分片的校验信息。若当下载完每一分片后,通过计算下载数据的特征标识(比如,哈希值信息),与校验信息进行比较,以判断下载的分片是否正确,若发现错误可及时重新下载。
通常对大文件进行分片的方式如下,比如一大文件大小为T,分片大小P(T),将大文件划分为N =(T + P(T)- 1)/ P(T)片,分片大小通常和大文件大小有关,比如可以是2M、1M、512KB、256KB、128KB等,通常最小的分片大小为32KB。大文件越大,分片也越大,这与具体实现有关系。不同的大文件的分片大小可以不固定,但需对分片大小进行控制,且控制在一上限值内,以避免分片太多,生成太多校验信息。所有分片的校验信息组成的文件头通常会有一个字段,以表明分片大小。若大文件非常大,比如超过10G,则总的分片数目需固定。每一文件集合具有一唯一的集合标识(或称特征码)。获取所述特征码的方式如下:将大文件进行分片,根据每一分片的内容计算并生成其特征标识(比如,哈希值信息),并将所有哈希值再次进行哈希运算,得到的结果即作为文件集合的唯一集合标识。这样,可以根据文件集合的集合标识以对多个文件在索引上进行聚合。
步骤S115:以文件大小或文件的频度信息将多个文件聚合成文件集合。
在步骤S110中进一步包括步骤S115,对所述文件聚合在逻辑上可采用两种方式。一种方式是按文件大小,比如,尽量使第一文件集合包括的所有文件的文件大小总和与第二文件集合包括的所有文件的文件大小总和保持相同。另一种方式是按文件的频度信息,比如,尽量使第一文件集合包括的所有文件的频度信息总和与第二文件集合包括的所有文件的频度总和保持相同。其中,频度信息是指文件的冷热门程度,通过频度信息大小以表示文件冷热门的级别。通过上述两种在逻辑上的聚合方式,可以保证P2P的利用率和下载成功率,并减少网络协议开销。
步骤S120:接收下载指令。
接收到由客户端所发送下载指令。所述下载指令对应待下载的至少一文件。在本实施方式中,所述下载指令所包括的下载链接或下载链接的特征标识与待下载的文件相对应。比如,接收到基于http-url下载协议的下载指令,所述下载指令所包括的url下载链接或下载链接的哈希值信息,与待下载的文件相对应。其中,所述下载链接可以从Internet互联网获得。
步骤S130:根据下载指令中对应文件所映射的集合标识匹配相应的文件集合。
在接收到下载指令后,根据下载指令所包括的下载链接所映射的对应文件所属文件集合的集合标识,匹配出相应的文件集合。在本发明具体实施方式中,通过下载链接作为索引进行匹配。在其他实施方式中,也可以通过下载链接的哈希值信息作为索引进行匹配。
步骤S140:在匹配到一个文件集合后,根据文件序号定位待下载的文件。
在匹配到文件所属的一个文件集合后,通过文件集合的编号和文件序号可以定位一个具体文件。
步骤S150:将所述定位到的待下载的文件发送至下载终端。
在此步骤中,根据文件的优先级标识优先下载文件集合内所需待下载的文件,并以分片形式发送至下载终端。若用户需下载聚合后文件集合的部分文件,可以将所述部分文件的优先级标识设置为级别高,进而可以优先下载所述的部分文件。而文件集合中的其他文件(优先级低)可稍后下载。比如用户A需要下载f1、f2、f5、f6、f8文件,用户B需要下载f2、f4、f8、f10文件。两位用户需要的文件有相同的也有不同的。但是对于用户A和用户B而言,实际上均只看到聚合后的一大文件Fn,其包括f1、f2、f4、f5、f6、f8、f10。当用户A首先下载时,需优先下载f1、f2、f5、f6、f8,而其他文件比如f4、f10用户A虽然不需要,但是用户B需要。因此,用户A可以在优先下载完所需的文件后,再下载其他文件,并为用户B提供上传服务。同样当用户B首先下载时,需优先下载f2、f4、f8、f10,而其他文件比如f1、f5用户B虽然不需要,但是用户A需要。用户B也可以在优先下载完所需的文件后,再下载其他文件,并为用户A提供上传服务,这样以确保所需的文件以最快速度下载。
步骤S160:在文件校验时,通过聚合后的文件集合的分片的特征标识进行验证。
此步骤为优选步骤,由于在聚合多个文件为文件集合时将文件集合(或称大文件)的每一分片的特征标识(比如,哈希值信息)作为分片的校验信息,于是,在下载的过程中或下载结束后,可以通过使用聚合后的大文件的分片的哈希值信息对已下载的分片进行校验,以确保下载的文件的正确性。
步骤S170:若文件集合中一文件的内容发生错误,则重新聚合成文件集合,并生成集合标识和所述文件集合的分片的校验信息。
此步骤为优选步骤,若文件集合中一文件的内容发生错误,则重新聚合文件集合,并生成唯一的集合标记和所述文件集合的分片的校验信息,以供重新发布。
下面提供本发明所述文件加速下载方法的一实施例,可参考图2及图1所示。所述文件加速下载方法应用于一服务器系统,所述服务器系统(如图2所示)包括文件入口服务器21、文件聚合服务器22、资源处理服务器23、资源索引数据库24、下载源服务器25、资源索引服务器26、Tracker服务器27以及统计服务器28。所述实施例的具体实施方式如下:
步骤10:获取多个文件及其下载链接。
资源处理服务器23接收到由文件入口服务器21所发送的多个文件,包括文件的下载链接、文件内容本身和文件大小。而文件入口服务器21作为发布新的资源文件、系统文件或补丁文件的入口,通常提供一WEB式的管理页面。资源处理服务器23在接收到所述文件后,通过文件聚合服务器22对文件进行聚合。
步骤20:按文件大小或文件的频度信息,将所有所述文件聚合成至少一文件集合。
文件聚合服务器22按文件大小或文件的频度信息,将所有所述文件聚合成至少一文件集合。具体的聚合方式是按文件大小或文件的频度信息,将所有所述文件进行逻辑和索引上的聚合,得到多个不同的文件集合,并以文件集合的编号加以排列。每一文件集合中所有文件聚合后生成一大文件。每一大文件与每一文件集合相对应。然后按固定大小对大文件进行分片。根据每一分片的内容计算并生成其哈希值信息,并将所有哈希值再次进行哈希运算,得到的结果即作为文件集合的唯一集合标识。其中,每一分片的哈希值信息作为分片的校验信息。
步骤30:生成每一文件的哈希值信息、每一文件集合的集合标识以及文件集合中每一分片的校验信息。
资源处理服务器23将通过文件入口服务器21所获取的文件的下载链接、文件大小和文件内容本身进行处理,计算并生成文件的哈希值信息。所述资源处理服务器23可根据聚合后的文件集合的集合标识、索引信息(包括文件集合的编号和文件的编号)和每一分片的校验信息保存至资源索引数据库24中。资源处理服务器23将所接收到的文件内容本身上传至下载源服务器25中,以作为客户端的原始下载源。
步骤40:存储所有所述集合标识、所有所述校验信息和所有所述文件的哈希值信息。
将资源处理服务器23所生成的所有所述集合标识、所有所述校验信息和所有所述文件的哈希值信息进行存储,存储在资源索引数据库24中,以供检索查询。其中,所述资源索引数据库24为一用于存储文件集合的集合标识、索引信息和校验信息的数据库,也用于保存下载链接至对应文件的哈希值信息的映射记录,和文件的哈希值信息至对应下载链接的映射记录,以及下载链接至对应文件所属文件集合的集合标识的映射记录。另外,所述资源索引数据库24也用于接受资源索引服务器26的查询请求,以及资源处理服务器23的资源处理和更新请求。
步骤45:存储所有所述文件。
下载源服务器25用于提供给客户端待下载的文件。通过下载源服务器25将文件入口服务器21所发布的所有文件,例如资源文件、系统文件或补丁文件进行存储,并作为客户端的原始下载源,并使用CDN(Content Delivery Network,内容发布网络)方式提供下载。
步骤50:获取客户端所发送的下载指令。
接收到由客户端所发送的下载指令,所述下载指令包括待下载的文件的下载链接。所述下载链接可以从Internet互联网获得。
步骤60:根据下载指令中对应文件所映射的集合标识匹配相应的文件集合。
在接收到下载指令后,根据下载指令中对应文件所映射的集合标识匹配相应的文件集合。通过下载链接作为索引入口进行匹配查询。此步骤可以在资源索引服务器26内完成。所述资源索引服务器26为专门用于提供查询资源的服务器。
步骤S70:在匹配到一个文件集合后,根据文件序号定位待下载的文件。
在匹配到一个文件集合后,进一步通过文件集合唯一的编号和文件序号可以定位一个文件。
步骤S80:将所述定位到的待下载的文件发送至下载终端。
在定位到所述待下载的文件后,根据文件的优先级标识优先下载文件集合内所需待下载的文件,并以分片形式发送至下载终端。在下载的过程中,可以通过使用聚合后的大文件的分片的哈希值信息对已下载的分片进行校验,以确保下载文件的正确性。若文件集合中一文件的内容发生错误,则重新聚合文件集合,并生成唯一的集合标记和所述文件集合的分片的校验信息,以供重新发布。
步骤85:将已完成下载的文件进行注册。
将已完成下载的文件在Tracker服务器27上进行注册(Tracker服务器27,即为跟踪服务器,用于缓存关于文件所有持有者和下载者的IP地址、路由信息及完成度等),向客户端反馈其所拥有该节点的IP地址列表,使得其他客户端可以通过P2SP技术进行全局的Peer(端点)下载服务,进而增加网络中P2SP 资源的供给,有效提升整个系统的P2SP 利用率。同时,Tracker服务器27接收客户端的在线情况汇报,并将所述节点所接收到下载指令进行反馈。
由此可见,将多个文件聚合为大文件进行下载,不需要每一个独立的文件均向服务器查询多资源集合或向Tracker服务器27注册,只需使用文件集合的唯一的集合标识进行Tracker服务器27注册即可。也就是说,用户可以快速优先下载所需文件,且不必将每一待下载的文件均向服务器检索一次多资源集合,进而大幅降低查询的次数。通过本发明也提升了第一个数据分片达到的时间,加快下载速度。此外,通过将已下载的文件主动上传,增加网络中P2SP多资源集合的供给,提升了P2SP使用率。这些都是现有P2SP多资源下载技术所不具备的。
步骤90:获取已完成下载的文件的统计信息。
通过统计服务器28获取已下载的文件的统计信息,例如下载速度、文件大小、下载时间、P2P下载数据、源下载数据等,并将统计信息以流水日志形式加以保存,以供后续统计和分析,例如文件聚合服务器选择哪些文件作为指导。
接下来结合附图3给出本发明所述一种文件加速下载装置的具体实施方式,包括:下载指令获取模块M320,用于接收下载指令,其中所述下载指令对应待下载的至少一文件;文件集合匹配模块M330,用于根据下载指令中对应文件所映射的集合标识匹配相应的文件集合,其中所述文件集合由多个文件聚合而成,每一文件集合具有一集合标识,每一文件具有文件序号;文件定位模块M340,用于在匹配到一个文件集合后,根据文件序号定位待下载的文件;文件传送模块M350,用于将所述定位到的待下载的文件发送至下载终端。其中所述文件传送模块M350将所述定位到的待下载的文件发送至下载终端,进一步通过文件的优先级标识优先下载文件集合内所需待下载的文件并以分片形式发送至下载终端。
所述文件加速下载装置进一步包括:文件聚合模块M310,用于将多个文件进行聚合以形成至少一文件集合,其中在下载过程中的交互查询和文件校验过程中,以聚合后的文件集合为单位进行。所述文件主要是指定期发布的网络游戏或升级补丁包,或是系统补丁(例如操作系统或应用软件的补丁)。在本发明具体实施方式中,所述文件为小文件,其大小一般小于阈值,(比如500KB)。按文件大小或文件的频度信息,将所有所述文件进行逻辑和索引上(即分组标识方式)聚合,得到1个或多个不同的文件集合。通过文件集合的编号对文件集合加以排列,例如文件集合SET1、SET2、 SET3…SETn。每一文件集合包括多个文件,包括f1 、f2、 f3、 f4…fn。每一文件具有一文件序号。若有1000个文件,比如可以分成20个文件集合,则每一文件集合包括50个文件。每一文件集合中所有文件聚合后生成一大文件,例如F1、F2、F3、F4、F5…Fn,每一大文件与每一文件集合相对应,比如,F1与SET1对应,F2与SET2对应,F3与SET3对应…Fn与SETn对应。然后按固定大小对大文件进行分片。分片是对聚合后的文件集合(或称大文件)进行逻辑上的切割,其目的是为了降低下载出错后的成本。也就是说,对每一文件集合进行片段化,并根据每一分片内容计算其特征标识(比如,哈希值信息),作为每一分片的校验信息。若当下载完每一分片后,通过计算下载数据的特征标识(比如,哈希值信息),与校验信息进行比较,以判断下载的分片是否正确,若发现错误可及时重新下载。所述分片是指对聚合后的大文件进行逻辑上的切割。通常对大文件进行分片的方式如下,比如一大文件大小为T,分片大小P(T),将大文件划分为N =(T + P(T)- 1)/P(T)片,分片大小通常和大文件大小有关,比如可以是2M、1M、512KB、256KB、128KB等,通常最小的分片大小为32KB。大文件越大,分片也越大,这与具体实现有关系。不同的大文件的分片大小可以不固定,但需对分片大小进行控制,且控制在一上限值内,以避免分片太多,生成太多校验信息。所有分片的校验信息组成的文件头通常会有一个字段,以表明分片大小。若大文件非常大,比如超过10G,则总的分片数目需固定。每一文件集合具有一唯一的集合标识(或称特征码)。获取所述特征码的方式如下:将大文件进行分片,根据每一分片的内容计算并生成其特征标识(比如,哈希值信息),并将所有哈希值再次进行哈希运算,得到的结果即作为文件集合的唯一集合标识。
以文件大小或文件的频度信息将多个文件进行聚合成所述文件集合。在本发明具体实施方式中,对所述文件聚合在逻辑上可采用两种方式。一种方式是按文件大小,比如,尽量使第一文件集合包括的所有文件的文件大小总和与第二文件集合包括的所有文件的文件大小总和保持相同。另一种方式是按文件的频度信息,比如,尽量使第一文件集合包括的所有文件的频度信息总和与第二文件集合包括的所有文件的频度总和保持相同。其中,频度信息是指文件的冷热门程度,通过频度信息大小以表示文件冷热门的级别。通过上述两种在逻辑上的聚合方式,可以保证P2P的利用率和下载成功率,并减少网络协议开销。
优选的,所述文件加速下载装置进一步包括:文件验证模块M360,用于在文件校验时,通过聚合后的文件集合的分片的特征标识进行验证,以确保所下载文件的正确性。
优选的,所述文件加速下载装置进一步包括:文件纠错模块M370,用于若文件集合中一文件的内容发生错误,则重新聚合成文件集合,并生成集合标识和所述文件集合的分片的校验信息,以供再次发布。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。