下载数据的方法和装置的制作方法

文档序号:7739662阅读:153来源:国知局
专利名称:下载数据的方法和装置的制作方法
技术领域
本发明涉及下载技术领域,特别涉及一种下载数据的方法和装置。
背景技术
数据下载是互联网的主要应用之一,也是占用服务器带宽最多的应用。目前,数据 下载通常都采用c/s (Client/Server,客户/服务器)模式,客户端通过浏览器向资源服务 器发送请求,资源服务器向客户端返回该请求对应的数据,完成下载,这种模式可以充分满 足小数据量的下载需求。随着网络的日益发展,以及用户需求的多样化,大数据量的应用已 变得更加普遍,如多媒体文件的下载,包括视频文件、音频文件等,还有游戏以及其它应用 软件的下载等等。这些大数据量的下载会导致运营商需要为用户日益膨胀的需求支付高昂 的带宽成本,以及使用者不得不为数据的下载支付高昂的硬件成本和带宽成本。近几年,P2P (Peer-to-Peer,对等节点)技术的广泛研究和应用在很大程度上缓 解了这一现象。P2P技术的主要思想是利用网络的边缘带宽,使得用户之间可以互相充当服 务器的角色,从而在一定程度上减轻了服务器的压力。相对于传统的集中式C/S模式,P2P 弱化了服务器的概念,将内容从中央单一节点引向网络的边缘,从而充分利用互联网中众 多终端节点所蕴涵的处理能力和潜在资源。系统中的各个节点不再区分服务器和客户端的 角色关系,每个节点既可以向其他节点请求下载资源,也可以为别的节点提供下载服务,节 点之间可以直接交换资源和服务而不必通过专门的文件服务器,从而使分布在各个用户结 点上的资源得到了有效的利用,实现了负载均衡。现有的下载工具通常有两种下载方式http下载方式和P2P下载方式。这两种方 式可以分别单独使用,也可以结合起来使用。无论采用哪种下载方式,现有的下载工具均具 有以下缺点会导致严重的盗链问题,对于资源提供者,必须采用防盗链技术来保证资源以 许可的方式被获取,否则,该资源可以被任意用户以任意方式获取,从而给资源提供者带来 巨大的损失。另外,当下载大文件时,由于文件过大,不利于信息的传播,而且相当费时,尤 其是当下载失败需要重新下载时,这对用户来说无疑是件难以接受的事情。

发明内容
为了克服现有技术的缺点,本发明实施例提供了一种下载数据的方法和装置。所 述技术方案如下一种下载数据的方法,所述方法包括接收用户的下载请求,从资源服务器查询待下载数据的资源,判断所述资源是否 为所述待下载数据被拆分后的各个部分的二级资源;如果所述资源为所述待下载数据被拆分后的各个部分的二级资源,则开始下载所 述待下载数据被拆分后的各个部分,将下载得到的各个部分合并得到所述待下载数据;如果所述资源为未拆分的所述待下载数据的资源,直接下载所述待下载数据。开始下载所述待下载数据被拆分后的各个部分,包括
根据所述二级资源创建多个下载任务,所述多个下载任务的个数与所述二级资源 的个数相同,开始下载所述待下载数据被拆分后的各个部分;相应地,所述方法还包括在所述多个下载任务均下载完成后,删除所述多个下载任务。根据所述二级资源创建多个下载任务之前,还包括如果在从资源服务器查询待下载数据的资源之前,已根据所述下载请求创建了一 个下载任务,则先删除根据所述下载请求创建的该下载任务。如果所述资源为未拆分的所述待下载数据的资源,直接下载所述待下载数据,包 括如果所述资源为未拆分的所述待下载数据的资源,且在从资源服务器查询待下载 数据的资源之前,已根据所述下载请求创建了一个下载任务,则先直接下载所述待下载数 据,下载完成后删除根据所述下载请求创建的下载任务。一种下载数据的装置,所述装置包括接收模块,用于接收用户的下载请求;查询模块,用于根据所述接收模块收到的所述下载请求,从资源服务器查询待下 载数据的资源,判断所述资源是否为所述待下载数据被拆分后的各个部分的二级资源;下载模块,用于当所述查询模块判断出所述资源为所述待下载数据被拆分后的各 个部分的二级资源时,开始下载所述待下载数据被拆分后的各个部分,将下载得到的各个 部分合并得到所述待下载数据,当所述查询模块判断出所述资源为未拆分的所述待下载数 据的资源,则直接下载所述待下载数据。所述下载模块包括拆分下载单元,用于当所述查询模块判断出所述资源为所述待下载数据被拆分后 的各个部分的二级资源时,根据所述二级资源创建多个下载任务,所述多个下载任务的个 数与所述二级资源的个数相同,开始下载所述待下载数据被拆分后的各个部分,在所述多 个下载任务均下载完成后,删除所述多个下载任务;合并单元,用于将所述拆分下载单元下载得到的各个部分合并得到所述待下载数 据;直接下载单元,用于当所述查询模块判断出所述资源为未拆分的所述待下载数据 的资源,则直接下载所述待下载数据。所述拆分下载单元还用于如果在所述查询模块从资源服务器查询待下载数据的 资源之前,已经根据所述接收模块收到的所述下载请求创建了一个下载任务,则在根据所 述二级资源创建多个下载任务之前,先删除根据所述下载请求创建的下载任务。所述下载模块包括拆分下载单元,用于当所述查询模块判断出所述资源为所述待下载数据被拆分后 的各个部分的二级资源时,开始下载所述待下载数据被拆分后的各个部分;合并单元,用于将所述拆分下载单元下载得到的各个部分合并得到所述待下载数 据;直接下载单元,用于如果所述查询模块判断出所述资源为未拆分的所述待下载数 据的资源,且在从资源服务器查询待下载数据的资源之前,已根据所述下载请求创建了一个下载任务,则直接下载所述待下载数据,并在下载完成后,删除根据所述下载请求创建的 下载任务。本发明实施例提供的技术方案,通过对文件进行拆分下载,可以减小单个任务下 载的数据的大小,该方法可以作为一种防盗链的策略,起到防盗链的效果,降低了由于盗链 而给资源提供者带来的损失。将数据拆分后,可以对各个部分同时进行下载,使得下载过程 的并行化程度更高,同时提高了下载速度,既能满足用户对于高下载速度的需求,又能尽可 能多的节约服务器的带宽成本。另外,对于创建的多个下载任务可以分别使用不同的下载 策略,具有更多的灵活性。对于较大的数据拆分成多个小文件后进行下载,更有利于信息 的传播,极大地节省了下载的时间,提高了下载的效率和成功率,而且还提升了用户的满意 度。将上述技术方案应用于P2P下载方式时,能够有效地提高P2P的贡献率。


图1是本发明实施例提供的一种下载数据的方法流程图;图2是本发明实施例提供的另一种下载数据的方法流程图;图3是本发明实施例提供的下载数据的一种装置结构图;图4是本发明实施例提供的下载数据的另一种装置结构图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。参见图1,本发明实施例提供了一种下载数据的方法,包括101 接收用户的下载请求,根据该下载请求从资源服务器查询待下载数据的资 源;102:判断查询到的资源是否为待下载数据被拆分后的各个部分的二级资源,如果 是,则执行103;否则,执行104;103:开始下载待下载数据被拆分后的各个部分,将下载得到的各个部分合并得到 待下载数据,结束;104 直接下载待下载数据,结束。本发明实施例中,资源是指待下载数据的来源,如拥有被请求下载的文件的http 服务器等均称为资源。资源服务器是指记录资源信息的服务器,该服务器拥有待下载数据 的下载地址,并且可以通过任意一个资源查找到其它相关的资源。本发明实施例中的二级 资源是指待下载数据被拆分后的各个部分所在的资源,从该二级资源下载后得到的是待下 载数据被拆分后的各个部分。本发明实施例中的待下载数据可以为任何格式、任何类型、以 及任意大小的数据,如IG的多媒体文件、HTML格式的网页、一种工具软件、mp3文件、doc文 件等等,本发明实施例对此不做具体限定。参见图2,本发明实施例还提供了另外一种下载数据的方法,具体包括201 用户在客户端启动一个下载请求,请求下载待下载数据;通常,用户在客户端开启浏览器,从浏览的网页中选择需要下载的数据,如下载一 首歌曲,或者下载一个电影,或者下载一个杀毒软件等等。当然用户也可以通过其它方式来选择需要下载的数据,本发明实施例对此不做具体限定。202 客户端内的下载器接收来自用户的下载请求,初始化下载组件的逻辑;本发明实施例中的下载器可以为任一种下载工具,如旋风、迅雷等,本发明实施例 对此不做限定。下载组件是一种可复用的下载模块,用来完成下载过程的复杂逻辑。当下 载组件完成初始化后,就会启动后续的下载流程,下载器只需和下载组件保持一些必要的 联系即可,如下载进度、下载速度以及文件是否下载完成等。203 下载组件根据该下载请求创建一个下载任务;其中,该下载任务包含了与待下载数据相关的各种信息,如下载的文件名称、下载 的地址、文件的大小等等,本发明实施例对此不做限定。204:下载组件从资源服务器查询待下载数据的资源,判断查询到的资源是否为待 下载数据被拆分后的各个部分的二级资源,如果是,则执行205 ;否则,执行209 ;本发明实施例中通过将数据拆分得到多个部分,可以将下载一个数据转换为下载 多个部分,该多个部分可以采用不同的策略进行下载,因此,可以极大地节省服务器的带宽 成本,缩短下载时间,提高下载效率和下载灵活性,尤其是当下载一个较大的文件时,可以 避免由于文件过大而带来的各种下载问题,极大地提升了用户的体验,增强了用户的满意 度。对于P2P网络,待下载数据的资源不仅包括源资源,还包括与该源相关的其它资 源。其中,该源资源是指源http资源,就是用户提交下载请求时指定的那个源。其它http 资源是指除源资源外能够提供待下载数据的任何资源,包括http资源或P2P资源。例如, 用户请求下载某个文件,在多个http服务器上都有这个文件,则指向这些服务器的链接都 是该文件的下载源。P2P资源是指当前正在下载待下载数据的其它节点,也可以作为正在 下载待下载数据的本节点的下载源。例如,当前网络中,下载同一个数据文件的节点有两 个,A客户端在下载电影《凤声》,B客户端也在下载电影《风声》,则B客户端也可以向A客 户端请求数据了,这就是P2P方式,对于B客户端来说,A客户端也是它的下载源,即P2P资 源。下载组件在从资源服务器查询待下载数据的资源时,如果既查询到待下载数据的源资 源,又查询到相关的其它资源,则分别进行下载。如果没有查询到其它资源,则直接从源资 源下载。205:下载组件删除上述根据下载请求创建的下载任务,根据查询到的二级资源重 新创建多个下载任务,该多个下载任务的个数与二级资源的个数相同;由于203中已创建了下载任务,因此,需要先将该下载任务删除。重新创建的多个 下载任务相当于已删除的下载任务的子任务,由该多个下载任务代替已删除的下载任务来 完成待下载数据的下载。206 下载组件开始下载待下载数据被拆分后的各个部分;例如,一个800M的视频文件,在服务器上被拆分为8个部分,每个部分为100M,下 载组件查询到的二级资源的个数为8个,则下载组件创建8个下载任务,从该8个二级资源 下载该视频文件被拆分后的8个部分。207 当上述205中创建的多个下载任务均下载完成后,删除该多个下载任务;208 下载组件将下载得到的各个部分合并后得到待下载数据,当前下载流程结 束;
209:此时,下载组件查询到的资源为未拆分的待下载数据的资源,则直接从该资 源下载待下载数据;210 下载完成后删除上述203中根据下载请求创建的下载任务,当前下载流程结
束ο本发明实施例中,将数据拆分成各个部分的方法有多种,可以采用任意方法来进 行拆分,其中,可以根据下载方和资源提供者的需要设置不同的算法或策略来进行拆分,还 可以根据应用场景或下载方设备的支持能力来进行拆分,拆分后的任意两个部分的大小可 以相同,也可以不同,本发明实施例对此不做具体限定。例如,当下载方设备可以支持较大 的文件下载时,可以将一个800M的文件拆分为2个400M的文件,或者一个300M的文件,一 个500M的文件;当下载方设备仅支持小文件下载时,可以将一个500M的文件拆分为5个 100M的文件,或者拆分为10个50M的文件,也可以拆分为3个100M,4个50M等等,本发明 实施例对此不做具体限定。下载后将得到的各个部分进行合并时,按照与拆分时对应的算法或策略进行合并 即可,其中,可以采用与拆分时相同的算法或策略,即对称方式,也可以采用与拆分时不同 的算法或策略,即非对称方式,本发明实施例对此也不做具体限定。值得一提的是,数据拆 分以及合并的算法或策略是由下载方和资源提供者之间共同设置的,且不公开,因此,可以 提高安全性,可以起到防盗链的效果。本发明实施例提供的上述方法,可以用于下载任何大小的待下载数据,尤其适用 于下载较大的数据。在实际应用中,可以对任何待下载数据采用上述方法进行下载,也可以 根据需要设定为只对较大的数据采用上述方法进行下载。具体地,可以设置一个大小阈值, 当待下载数据的大小大于或等于该阈值时,将该待下载数据视为需要拆分的大数据,采用 上述方法进行下载;如果待下载数据的大小小于该阈值,则不需要拆分采用现有的方法直 接下载该待下载数据。其中,所述大小阈值的具体数值,本发明实施例对此不做具体限定, 如为100M、200M等等。本发明实施例提供的上述方法,可以应用于http下载方式和/或P2P下载方式。 例如,拆分后的多个部分可以均采用http下载方式,或者均采用P2P下载方式,或者采用二 者相结合的下载方式,极大地提高了应用的灵活性。通常,为了满足用户对于数据整体下载 速度的需求,不可能纯粹采用P2P下载,因为这种方式下的数据源不稳定,速度随数据源的 质量有着很大的变化,因此,优选地,在拆分后的各个部分中,至少有一个部分采用http下 载和P2P下载相结合的方式,其它部分则可以仅采用P2P下载方式。当应用于P2P下载方 式时,在保证速度的前提下,能够有效地提高P2P的贡献率。P2P贡献率是指在下载系统中, 通过节点间互相交换得到的数据量与总下载数据量的比率,即通过P2P方式下载到的数据 量与总下载数据量的比率。对于一个文件的下载来说,可以同时使用http下载和P2P下载, 如果P2P下载到的数据量越多,则P2P贡献率也越高,如果http下载到的数据量越多的,则 越不利于P2P贡献率的提升。通常情况下,http的下载源相对稳定,速度也比较有保障,也 就是说,如果不做任何控制的话,http下载到数据的概率会比P2P下载到数据的概率会大 些。例如,假设在通常情况下采用http方式和P2P方式相结合下载一个数据,其 对应的P2P贡献率为C。如果有一个数据被拆分为5个部分,拆分后其中的一个部分仍然采用http方式和P2P方式相结合进行下载,其P2P贡献率为C,其余4个部分则采用 P2P下载方式,其理想状态下贡献率是100%,因此,可以计算出拆分后的平均贡献率为 (C+4*100%)/5。由于C肯定是小于100%的,则拆分后的P2P贡献率(C+4*100% )/5 >拆 分前的P2P贡献率C,由此可见,拆分后在保证速度的前提下提升了 P2P的贡献率。参见图3,本发明实施例还提供了一种下载数据的装置,包括接收模块301,用于接收用户的下载请求;查询模块302,用于根据接收模块301收到的下载请求,从资源服务器查询待下载 数据的资源,判断资源是否为待下载数据被拆分后的各个部分的二级资源;下载模块303,用于当查询模块302判断出上述资源为待下载数据被拆分后的各 个部分的二级资源时,开始下载待下载数据被拆分后的各个部分,将下载得到的各个部分 合并得到待下载数据;当查询模块302判断出上述资源为未拆分的待下载数据的资源,则 直接下载待下载数据。参见图4,本实施例中的下载模块303在第一种实现方式下可以包括拆分下载单元303a,用于当查询模块302判断出上述资源为待下载数据被拆分后 的各个部分的二级资源时,根据二级资源创建多个下载任务,该多个下载任务的个数与二 级资源的个数相同,开始下载待下载数据被拆分后的各个部分,在该多个下载任务均下载 完成后,删除该多个下载任务;合并单元30北,用于将拆分下载单元303a下载得到的各个部分合并得到待下载 数据;直接下载单元303c,用于当查询模块302判断出上述资源为未拆分的待下载数据 的资源,则直接下载待下载数据。进一步地,拆分下载单元303a还用于如果在查询模块302从资源服务器查询待下 载数据的资源之前,已经根据接收模块301收到的下载请求创建了一个下载任务,则在根 据二级资源创建多个下载任务之前,先删除根据下载请求创建的下载任务。本实施例中,下载模块303在第二种实现方式下可以包括拆分下载单元303d,用于当查询模块302判断出上述资源为待下载数据被拆分后 的各个部分的二级资源时,开始下载待下载数据被拆分后的各个部分;合并单元30 ,用于将拆分下载单元303d下载得到的各个部分合并得到待下载 数据;直接下载单元303f,用于如果查询模块302判断出上述资源为未拆分的待下载数 据的资源,且在从资源服务器查询待下载数据的资源之前,已根据所述下载请求创建了一 个下载任务,则直接下载待下载数据,并在下载完成后,删除根据上述下载请求创建的下载 任务。本发明实施例提供的上述技术方案,通过对文件进行拆分下载,可以减小下载数 据的大小,该方法可以作为一种防盗链的策略,起到防盗链的效果,降低了由于盗链而给资 源提供者带来的损失。例如,将合并文件的功能设置在专有的下载器中,只有通过该专有的 下载器才能下载拆分的数据,采用其它的下载工具均无法完成下载,使得盗链者无计可施, 从而达到了防盗链的目的,并能对专有下载器起到推广作用。上述方案将数据拆分后,可以 对各个部分同时进行下载,使得下载过程的并行化程度更高,当然也就提高了下载速度,既能满足用户对于高下载速度的需求,又能尽可能多的节约服务器的带宽成本。另外,对于创 建的多个下载任务可以分别使用不同的下载策略,具有更多的灵活性。对于较大的数据拆 分成多个小文件后进行下载,更有利于信息的传播,极大地节省了下载的时间,提高了下载 的效率和成功率,而且提升了用户的满意度。将上述技术方案应用于P2P下载方式时,能够 有效地提高P2P的贡献率。 本发明实施例提供的上述技术方案的全部或部分可以通过程序指令相关的硬件 来完成,所述程序可以存储在可读取的存储介质中,该存储介质包括R0M、RAM、磁碟或者光 盘等各种可以存储程序代码的介质。 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种下载数据的方法,其特征在于,所述方法包括接收用户的下载请求,从资源服务器查询待下载数据的资源,判断所述资源是否为所 述待下载数据被拆分后的各个部分的二级资源;如果所述资源为所述待下载数据被拆分后的各个部分的二级资源,则开始下载所述待 下载数据被拆分后的各个部分,将下载得到的各个部分合并得到所述待下载数据; 如果所述资源为未拆分的所述待下载数据的资源,直接下载所述待下载数据。
2.根据权利要求1所述的方法,其特征在于,开始下载所述待下载数据被拆分后的各 个部分,包括根据所述二级资源创建多个下载任务,所述多个下载任务的个数与所述二级资源的个 数相同,开始下载所述待下载数据被拆分后的各个部分; 相应地,所述方法还包括在所述多个下载任务均下载完成后,删除所述多个下载任务。
3.根据权利要求2所述的方法,其特征在于,根据所述二级资源创建多个下载任务之 前,还包括如果在从资源服务器查询待下载数据的资源之前,已根据所述下载请求创建了一个下 载任务,则先删除根据所述下载请求创建的该下载任务。
4.根据权利要求1所述的方法,其特征在于,如果所述资源为未拆分的所述待下载数 据的资源,直接下载所述待下载数据,包括如果所述资源为未拆分的所述待下载数据的资源,且在从资源服务器查询待下载数据 的资源之前,已根据所述下载请求创建了一个下载任务,则先直接下载所述待下载数据,下 载完成后删除根据所述下载请求创建的下载任务。
5.一种下载数据的装置,其特征在于,所述装置包括 接收模块,用于接收用户的下载请求;查询模块,用于根据所述接收模块收到的所述下载请求,从资源服务器查询待下载数 据的资源,判断所述资源是否为所述待下载数据被拆分后的各个部分的二级资源;下载模块,用于当所述查询模块判断出所述资源为所述待下载数据被拆分后的各个部 分的二级资源时,开始下载所述待下载数据被拆分后的各个部分,将下载得到的各个部分 合并得到所述待下载数据,当所述查询模块判断出所述资源为未拆分的所述待下载数据的 资源,则直接下载所述待下载数据。
6.根据权利要求5所述的装置,其特征在于,所述下载模块包括拆分下载单元,用于当所述查询模块判断出所述资源为所述待下载数据被拆分后的各 个部分的二级资源时,根据所述二级资源创建多个下载任务,所述多个下载任务的个数与 所述二级资源的个数相同,开始下载所述待下载数据被拆分后的各个部分,在所述多个下 载任务均下载完成后,删除所述多个下载任务;合并单元,用于将所述拆分下载单元下载得到的各个部分合并得到所述待下载数据; 直接下载单元,用于当所述查询模块判断出所述资源为未拆分的所述待下载数据的资 源,则直接下载所述待下载数据。
7.根据权利要求6所述的装置,其特征在于,所述拆分下载单元还用于如果在所述查 询模块从资源服务器查询待下载数据的资源之前,已经根据所述接收模块收到的所述下载请求创建了一个下载任务,则在根据所述二级资源创建多个下载任务之前,先删除根据所 述下载请求创建的下载任务。
8.根据权利要求5所述的装置,其特征在于,所述下载模块包括 拆分下载单元,用于当所述查询模块判断出所述资源为所述待下载数据被拆分后的各 个部分的二级资源时,开始下载所述待下载数据被拆分后的各个部分;合并单元,用于将所述拆分下载单元下载得到的各个部分合并得到所述待下载数据; 直接下载单元,用于如果所述查询模块判断出所述资源为未拆分的所述待下载数据的 资源,且在从资源服务器查询待下载数据的资源之前,已根据所述下载请求创建了一个下 载任务,则直接下载所述待下载数据,并在下载完成后,删除根据所述下载请求创建的下载 任务。
全文摘要
本发明公开了一种下载数据的方法和装置,属于下载技术领域。所述方法包括接收用户的下载请求,从资源服务器查询待下载数据的资源,判断该资源是否为待下载数据被拆分后的各个部分的二级资源;如果是,则开始下载待下载数据被拆分后的各个部分,将下载得到的各个部分合并得到待下载数据;否则,从所述资源下载所述待下载数据。所述装置包括接收模块、查询模块和下载模块。本发明通过拆分下载,可以起到防盗链的效果,且下载并行化程度高,提高了下载速度,节省了下载时间,既能满足用户对于高下载速度的需求,又能尽可能多的节约服务器的带宽成本。当应用于P2P下载方式时,能够有效地提高P2P的贡献率。
文档编号H04L29/06GK102130928SQ20101000127
公开日2011年7月20日 申请日期2010年1月19日 优先权日2010年1月19日
发明者王志华, 邵颖哲 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1