CN107613016B - 文件批量下载方法、客户端、分发服务器及系统 - Google Patents
文件批量下载方法、客户端、分发服务器及系统 Download PDFInfo
- Publication number
- CN107613016B CN107613016B CN201710942958.6A CN201710942958A CN107613016B CN 107613016 B CN107613016 B CN 107613016B CN 201710942958 A CN201710942958 A CN 201710942958A CN 107613016 B CN107613016 B CN 107613016B
- Authority
- CN
- China
- Prior art keywords
- file
- target
- index information
- files
- downloading
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000012795 verification Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 15
- 238000007726 management method Methods 0.000 claims description 12
- 230000005540 biological transmission Effects 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种文件批量下载方法、客户端、分发服务器及系统,其中,所述方法包括:向分发服务器发送查询指令,以使得所述分发服务器将本地的文件合并为至少一个具备文件索引信息的文件集合;接收所述分发服务器反馈的所述文件索引信息;在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,将所述至少两个目标文件的下载任务合并为一个下载任务;通过合并后的下载任务下载所述目标文件集合,并基于所述目标文件索引信息以及所述下载列表,从所述目标文件集合中提取所述至少两个目标文件。本申请提供的技术方案,能够提高文件传输的效率。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种文件批量下载方法、客户端、分发服务器及系统。
背景技术
目前,在通过HTTP协议传输文件时,通常是由客户端发起下载文件的请求,服务器在接收到该请求之后,可以与所述客户端建立连接,并通过该连接传输相应的文件。
在实际应用过程中,每当客户端需要下载一个文件,便需要在客户端和服务器之间建立一个连接。当客户端下载的文件数量较多时,会耗费相当多的资源和时间来建立连接。鉴于此,HTTP1.1和HTTP2.0对文件传输方法进行了改进,可以在仅建立一次连接的情况下传输多个文件。然而,尽管只需要建立一次连接,客户端在下载多个文件时,还是需要针对每个文件分别发起文件下载请求,这样,当客户端需要下载的文件数量较多时,还是需要耗费相当多的资源和时间来建立下载请求以及发送下载请求,仍然存在文件传输效率较低的缺陷。
发明内容
本申请的目的在于提供一种文件批量下载方法、客户端、分发服务器及系统,能够提高文件传输的效率。
为实现上述目的,本申请一方面提供一种文件批量下载方法,所述方法包括:向分发服务器发送查询指令,以使得所述分发服务器响应于所述查询指令,将所述分发服务器本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息;接收所述分发服务器反馈的所述文件索引信息;在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表;通过合并后的下载任务下载所述目标文件集合,并基于所述目标文件索引信息以及所述下载列表,从所述目标文件集合中提取所述至少两个目标文件。
为实现上述目的,本申请另一方面还提供一种客户端,所述客户端包括存储器和处理器,所述存储器中存储计算机程序,所述计算机程序被所述处理器执行时,实现以下功能:向分发服务器发送查询指令,以使得所述分发服务器响应于所述查询指令,将所述分发服务器本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息;接收所述分发服务器反馈的所述文件索引信息;在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表;通过合并后的下载任务下载所述目标文件集合,并基于所述目标文件索引信息以及所述下载列表,从所述目标文件集合中提取所述至少两个目标文件。
为实现上述目的,本申请另一方面还提供一种文件批量下载方法,所述方法包括:接收客户端发来的查询指令,并响应于所述查询指令,将本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息;将所述文件集合以及对应的文件索引信息缓存至内容分发网络中的节点服务器处;向所述客户端反馈所述文件索引信息,以使得所述客户端在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,所述客户端将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表。
为实现上述目的,本申请另一方面还提供一种分发服务器,所述分发服务器包括存储器和处理器,所述存储器中存储计算机程序,所述计算机程序被所述处理器执行时,实现以下功能:接收客户端发来的查询指令,并响应于所述查询指令,将本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息;将所述文件集合以及对应的文件索引信息缓存至内容分发网络中的节点服务器处;向所述客户端反馈所述文件索引信息,以使得所述客户端在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,所述客户端将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表。
为实现上述目的,本申请另一方面还提供一种文件批量下载系统,所述系统包括客户端、分发服务器以及内容分发网络中的节点服务器,其中:所述客户端,用于向所述分发服务器发送查询指令;接收所述分发服务器反馈的文件索引信息;在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表;通过合并后的下载任务下载所述目标文件集合,并基于所述目标文件索引信息以及所述下载列表,从所述目标文件集合中提取所述至少两个目标文件;所述分发服务器,用于接收所述客户端发来的查询指令,并响应于所述查询指令,将本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息;将所述文件集合以及对应的文件索引信息缓存至所述内容分发网络中的节点服务器处;向所述客户端反馈所述文件索引信息;所述节点服务器,用于缓存所述分发服务器发来的文件集合以及对应的文件索引信息。
由上可见,本申请提供的技术方案,分发服务器中可以响应于客户端发起的查询指令,将本地存储的小文件整合为文件集合,整合后的文件集合可以具备文件索引信息。该文件索引信息中可以包括文件集合中各个小文件的数据量、偏移量、标识等信息。这样,当客户端在创建多个小文件的下载任务时,如果存在处于同一个文件集合中的小文件,那么可以将这些处于同一个文件集合中的小文件的下载任务合并为一个下载任务。这样,通过合并后的下载任务,可以将包含这些小文件的目标文件集合下载至本地,并可以根据该目标文件集合的目标文件索引信息,从所述目标文件集合中提取出所需要的小文件。由此可见,本申请可以通过一个下载任务下载得到多个小文件,从而避免了多次建立和发送下载请求的过程,进而提高了文件传输的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一中的文件批量下载方法流程图;
图2是本发明实施例一中文件集合示意图;
图3是本发明实施例一中管理服务器的交互示意图;
图4是本发明实施例二中客户端的结构示意图;
图5是本发明实施例三中文件批量下载方法流程图;
图6是本发明实施例四中分发服务器的结构示意图;
图7是本发明实施例五中文件批量下载系统的交互示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
本申请提供一种文件批量下载方法,所述方法可以应用于客户端中,所述客户端可以是用户使用的具备网络通信功能的终端设备。例如,所述客户端可以是笔记本电脑、台式电脑、智能手机、智能可穿戴设备等。请参阅图1,所述方法可以包括以下步骤。
S11:向分发服务器发送查询指令,以使得所述分发服务器响应于所述查询指令,将所述分发服务器本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息。
在本实施方式中,所述分发服务器可以是存储文件的源服务器。在实际应用中,为了提高文件的传输速度,在所述源服务器和客户端之间可以通过内容分发网络(ContentDelivery Network,CDN)连接。在所述CDN中,可以具备多个节点服务器。客户端一方面可以从源服务器中获取文件,另一方面还可以从距离自身地理位置较近的节点服务器处获取文件。
在本实施方式中,客户端可以向分发服务器发送查询指令,该查询指令可以用于获取分发服务器中存储的文件的状态。分发服务器在接收到所述查询指令后,可以将本地的文件合并为至少一个文件集合。具体地,分发服务器本地的文件可以是按照文件目录进行存储的,那么在合并为文件集合时,可以将处于同一个目录或者子目录下的文件合并为一个文件集合。例如,分发服务器中包括目录A,该目录A下有并列的三个子目录A1、A2、A3,那么可以将该目录A中的文件合并为三个文件集合,这三个文件集合分别对应子目录A1、子目录A2以及子目录A3下的文件。在实际应用场景中,分发服务器可以预先对文件集合的规模进行限定。具体地可以通过限制参数来限定文件集合的规模。所述限制参数可以用于限定同一个文件集合中文件数量的上限值和/或文件数据总量的上限值。例如,所述限制参数可以限定一个文件集合中最多只能有10个文件或者一个文件集合的数据总量不能超过100M。这样,分发服务器在将文件进行合并时,可以先获取该限制参数,然后可以从本地获取符合所述限制参数的多个文件,并将获取的多个文件合并为一个文件集合。
在本实施方式中,合并后的文件集合可以具备文件索引信息。所述文件索引信息可以包括文件集合中各个小文件的数据量、偏移量、标识等信息。这样,通过所述文件索引信息,便可以在文件集合中定位到所需的小文件。例如,在一个文件集合中包括10个小文件,该文件集合的文件索引信息中可以包括这10个小文件的文件名、各个小文件的数据量以及各个小文件在文件集合中的偏移量。例如,第一个小文件的偏移量可以为0,第一个小文件的数据量为10M,那么第二个小文件的偏移量便可以为11。这样,通过文件索引信息中的文件名,可以查询到小文件对应的偏移量和数据量,从而可以从文件集合中将该小文件提取出来。
在一个实施方式中,所述文件索引信息和文件集合可以作为分立的数据进行关联存储。例如,文件索引信息和文件集合可以通过键值对(key-value)的形式进行存储,其中,文件索引信息可以作为键(key),对应的文件集合便可以作为值(value)。此外,所述文件索引信息和文件集合还可以作为同一个数据中的不同字段。例如,文件索引信息可以作为数据的文件头字段,而文件集合则可以作为数据的主体字段。文件头字段和主体字段可以具备各自的字段长度,这样,通过选定需要读取的字段长度,从而可以方便地从数据中读取出文件索引信息或者文件集合。
在一个实施方式中,分发服务器在将小文件合并为文件集合后,可以将所述文件集合以及对应的文件索引信息缓存至内容分发网络中的节点服务器处,这样,客户端可以从CDN的节点服务器处获取相应的文件集合,从而可以提高文件传输的速度。
S13:接收所述分发服务器反馈的所述文件索引信息。
S15:在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表。
在本实施方式中,分发服务器在将本地的文件整合为多个文件集合后,可以将各个文件集合的文件索引信息以及各个文件集合中小文件的标识发送至客户端。客户端在接收到文件索引信息和小文件的标识后,便可以获知当前在分发服务器中具备哪些可获取小文件。这样,客户端便可以针对其中的一部分小文件,创建下载任务。
在本实施方式中,客户端在创建小文件的下载任务时,可以对部分小文件的下载任务进行合并,从而可以通过一个下载任务下载得到多个小文件,避免多次建立和发起下载请求。具体地,若待下载的至少两个目标文件处于同一个目标文件集合内,那么可以将所述至少两个目标文件的下载任务合并为一个下载任务。例如,客户端在创建文件A、B、C的下载任务时,根据分发服务器提供的文件索引信息,确定文件A和文件C均处于目标文件集合K中,那么便可以将文件A和文件C的两个下载任务整合为一个下载任务。
在本实施方式中,合并后的下载任务中可以包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表。例如,在合并后的下载任务中,客户端可以添加目标文件集合K的目标文件索引信息,并且在该下载任务中,可以包括文件A和文件C的下载列表。
S17:通过合并后的下载任务下载所述目标文件集合,并基于所述目标文件索引信息以及所述下载列表,从所述目标文件集合中提取所述至少两个目标文件。
在本实施方式中,客户端在将多个小文件的下载任务合并为一个下载任务之后,可以通过合并后的下载任务下载包含这些小文件的目标文件集合。具体地,为了提高文件传输的速度,客户端可以向CDN中就近的节点服务器发送指向所述目标文件集合的下载请求。节点服务器在接收到该下载请求后,如果所述节点服务器中存在所述目标文件集合,那么所述客户端便可以从所述节点服务器中下载所述目标文件集合。如果所述节点服务器中不存在所述目标文件集合,那么节点服务器便可以向分发服务器请求该目标文件集合。这样,在所述节点服务器从所述分发服务器中获取所述目标文件集合之后,客户端可以从所述节点服务器中下载所述目标文件集合。
在本实施方式中,客户端下载到所述目标文件集合后,可以基于所述目标文件索引信息以及所述下载列表,从所述目标文件集合中提取所述至少两个目标文件。具体地,在所述下载列表中,可以包括客户端实际需要的目标文件的名称,这样,通过目标文件的名称,可以在所述目标文件索引信息中查询得到所述目标文件的目标偏移量以及目标数据量。这样,在所述目标文件集合中,可以从所述目标偏移量开始,读取所述目标数据量的数据,从而可以将读取的数据作为所述目标文件。例如,请参阅图2,合并后的下载任务中包括文件A和文件C,文件A和文件C属于目标文件集合K。这样,客户端在下载得到目标文件集合K之后,可以从目标文件索引信息中查询得到文件A的偏移量为0,数据量为10M,文件C的偏移量为20,数据量为5M。这样,客户端可以在目标文件集合K中偏移量为0的位置开始,读取10M的数据,从而可以将文件A从目标文件集合K中提取出来。同样地,客户端可以在目标文件集合K中偏移量为20的地方开始,读取5M的数据,从而将文件C读取出来。
在实际应用场景中,目标文件集合和目标文件索引信息可以为同一个数据中的文件头字段和主体字段,这样,客户端在获取到该数据之后,可以根据文件头字段和主体字段各自的字段长度,将文件头字段和主体字段进行拆分。拆分之后,客户端可以从文件头字段中提取目标文件索引信息,然后根据提取出的目标文件索引信息,按照上述实施方式中阐述的方式从主体字段中提取出相应的目标文件。
在一个实施方式中,为了确保客户端能够正常下载对应的文件集合,在下载之前,客户端可以进行回源校验。具体地,在将所述至少两个目标文件的下载任务合并为一个下载任务之后,客户端可以向所述分发服务器发送指向所述目标文件集合的校验请求。发送该校验请求的目的是从所述分发服务器中获取所述目标文件集合的当前文件索引信息。在分发服务器中的文件可能会发生改变,在文件改变之后,文件集合的文件索引信息也会同步更新。此时,为了确保客户端能够下载到最新的文件,分发服务器可以将所述目标文件集合的当前文件索引信息反馈给客户端。这样,客户端可以将所述当前文件索引信息与本地的目标文件索引信息进行对比。具体地,可以对比各个小文件的更新时间以及各个小文件的数据量大小,从而可以判断两者是否一致。若两者一致,表明分发服务器中的文件没有发生改变,此时,为了加快文件的下载速度,客户端可以向所述内容分发网络中的节点服务器发送指向所述目标文件集合的下载请求,从而可以从节点服务器中获取所述目标文件集合。但若两者不一致,表明分发服务器中的文件发生了改变,此时,客户端可以将本地的目标文件索引信息更新为所述当前文件索引信息。由于节点服务器中的文件也可能没有及时更新,因此客户端可以直接向所述分发服务器发送指向所述目标文件集合的下载请求,以从所述分发服务器中获取源文件,避免文件下载出错。具体地,分发服务器在接收到客户端的下载请求后,可以按照之前生成文件索引信息的方法,再次更新出所述目标文件集合最新的文件索引信息,然后可以将更新出的文件索引信息作为头文件字段写入发送缓冲区,之后按顺序将所述目标文件集合中的文件作为主体字段写入所述发送缓冲区。在文件写入结束后,便可以将发送缓冲区内的数据发送给客户端。
在本实施方式中,客户端在向分发服务器发起校验请求时,由于文件索引信息与文件集合为一个数据中的不同字段,为了避免将整个数据下载至本地,可以在校验请求中加入数据范围获取参数,所述数据范围获取参数可以限定读取的数据的长度,从而可以仅从分发服务器中获取文件索引信息,而不会获取文件集合。例如,所述数据范围获取参数可以是range参数,该range参数可以指定文件索引信息所在字段的字段长度,这样,分发服务器在接收到所述校验请求后,便可以将所述range参数限定的字段长度反馈给客户端。由上可见,所述数据范围获取参数可以用于从包含所述当前文件索引信息的数据中读取所述当前文件索引信息。
在一个实施方式中,客户端在从所述目标文件集合中提取所述至少两个目标文件之后,为了确保目标文件的正确性,可以对目标文件进行校验。具体地,客户端可以向所述分发服务器发送文件校验请求,以使得所述分发服务器计算本地存储的目标文件的第一校验码。所述第一校验码可以是基于哈希算法计算得到的哈希值,也可以是经过消息摘要算法计算得到的MD5值。分发服务器在计算得到本地存储的目标文件的第一校验码之后,可以将该计算得到的第一校验码发送至客户端。客户端在接收所述分发服务器反馈的第一校验码后,可以按照同样的算法计算提取的所述目标文件的第二校验码。然后客户端可以对比分发服务器反馈的第一校验码以及自身计算的第二校验码。若两个校验码一致,表明分发服务器中的目标文件与客户端中提取的目标文件一致,此时可以将所述目标文件的状态修改为已下载。若两个校验码不一致,则表明分发服务器中的目标文件与客户端中提取的目标文件不一致,客户端中下载的目标文件可能存在错误。此时,客户端可以删除所述目标文件集合以及提取的目标文件,并重新下载所述至少两个目标文件。第一校验码和第二校验码的命名,仅仅是为了进行区别和清楚说明。
需要说明的是,在另一个实施方式中,上述客户端所实现的功能,可以由管理服务器和客户端共同完成。请参阅图3,所述管理服务器可以向分发服务器发送查询指令,并且可以接收分发服务器反馈的文件索引信息。并且所述管理服务器可以基于分发服务器反馈的数据创建下载任务。在创建下载任务的过程中,管理服务器也可以将处于同一个文件集合中的多个小文件的下载任务进行合并。当管理服务器建立完下载任务之后,客户端可以从所述管理服务器中拉取相应的下载任务,从而开始目标文件集合的下载过程。
实施例二
请一并参阅图1和图4,本申请还提供一种客户端,所述客户端包括存储器和处理器,所述存储器中存储计算机程序,所述计算机程序被所述处理器执行时,实现以下功能:
S11:向分发服务器发送查询指令,以使得所述分发服务器响应于所述查询指令,将所述分发服务器本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息;
S13:接收所述分发服务器反馈的所述文件索引信息;
S15:在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表;
S17:通过合并后的下载任务下载所述目标文件集合,并基于所述目标文件索引信息以及所述下载列表,从所述目标文件集合中提取所述至少两个目标文件。
在本实施方式中,所述目标文件索引信息中包括各个文件的偏移量以及各个文件的数据量;相应地,所述计算机程序被所述处理器执行时,还实现以下功能:
从所述目标文件索引信息中确定所述目标文件的目标偏移量以及目标数据量;
在所述目标文件集合中,从所述目标偏移量开始,读取所述目标数据量的数据,并将读取的数据作为所述目标文件。
在本实施方式中,所述计算机程序被所述处理器执行时,还实现以下功能:
向所述分发服务器发送文件校验请求,以使得所述分发服务器计算本地存储的目标文件的第一校验码;
接收所述分发服务器反馈的第一校验码,并计算提取的所述目标文件的第二校验码;
若两个校验码一致,将所述目标文件的状态修改为已下载;
若两个校验码不一致,删除所述目标文件集合以及提取的目标文件,并重新下载所述至少两个目标文件。
实施例三
请参阅图5,本申请还提供一种文件批量下载方法,所述方法可以应用于分发服务器中,所述方法可以包括以下步骤。
S21:接收客户端发来的查询指令,并响应于所述查询指令,将本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息。
在本实施方式中,分发服务器在接收到客户端发来的查询指令后,可以将本地的文件合并为至少一个文件集合。具体地,分发服务器本地的文件可以是按照文件目录进行存储的,那么在合并为文件集合时,可以将处于同一个目录或者子目录下的文件合并为一个文件集合。例如,分发服务器中包括目录A,该目录A下有并列的三个子目录A1、A2、A3,那么可以将该目录A中的文件合并为三个文件集合,这三个文件集合分别对应子目录A1、子目录A2以及子目录A3下的文件。在实际应用场景中,分发服务器可以预先对文件集合的规模进行限定。具体地可以通过限制参数来限定文件集合的规模。所述限制参数可以用于限定同一个文件集合中文件数量的上限值和/或文件数据总量的上限值。例如,所述限制参数可以限定一个文件集合中最多只能有10个文件或者一个文件集合的数据总量不能超过100M。这样,分发服务器在将文件进行合并时,可以先获取该限制参数,然后可以从本地获取符合所述限制参数的多个文件,并将获取的多个文件合并为一个文件集合。
在本实施方式中,合并后的文件集合可以具备文件索引信息。所述文件索引信息可以包括文件集合中各个小文件的数据量、偏移量、标识等信息。这样,通过所述文件索引信息,便可以在文件集合中定位到所需的小文件。例如,在一个文件集合中包括10个小文件,该文件集合的文件索引信息中可以包括这10个小文件的文件名、各个小文件的数据量以及各个小文件在文件集合中的偏移量。例如,第一个小文件的偏移量可以为0,第一个小文件的数据量为10M,那么第二个小文件的偏移量便可以为11。这样,通过文件索引信息中的文件名,可以查询到小文件对应的偏移量和数据量,从而可以从文件集合中将该小文件提取出来。
S23:将所述文件集合以及对应的文件索引信息缓存至内容分发网络中的节点服务器处。
在本实施方式中,分发服务器在将小文件合并为文件集合后,可以将所述文件集合以及对应的文件索引信息缓存至内容分发网络中的节点服务器处,这样,客户端可以从CDN的节点服务器处获取相应的文件集合,从而可以提高文件传输的速度。
S25:向所述客户端反馈所述文件索引信息,以使得所述客户端在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,所述客户端将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表。
在本实施方式中,分发服务器在将本地的文件整合为多个文件集合后,可以将各个文件集合的文件索引信息以及各个文件集合中小文件的标识发送至客户端。客户端在接收到文件索引信息和小文件的标识后,便可以获知当前在分发服务器中具备哪些可获取小文件。这样,客户端便可以针对其中的一部分小文件,创建下载任务。
在本实施方式中,客户端在创建小文件的下载任务时,可以对部分小文件的下载任务进行合并,从而可以通过一个下载任务下载得到多个小文件,避免多次建立和发起下载请求。具体地,若待下载的至少两个目标文件处于同一个目标文件集合内,那么可以将所述至少两个目标文件的下载任务合并为一个下载任务。例如,客户端在创建文件A、B、C的下载任务时,根据分发服务器提供的文件索引信息,确定文件A和文件C均处于目标文件集合K中,那么便可以将文件A和文件C的两个下载任务整合为一个下载任务。
在本实施方式中,合并后的下载任务中可以包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表。例如,在合并后的下载任务中,客户端可以添加目标文件集合K的目标文件索引信息,并且在该下载任务中,可以包括文件A和文件C的下载列表。
在一个实施方式中,当客户端发起回源校验时,分发服务器可以接收所述客户端发来的指向所述目标文件集合的校验请求,并响应于所述校验请求,将所述目标文件集合的当前文件索引信息下发给所述客户端。这样,客户端可以将所述当前文件索引信息与本地的目标文件索引信息进行对比。若两者一致,表明分发服务器中的文件没有发生改变,此时,为了加快文件的下载速度,客户端可以向所述内容分发网络中的节点服务器发送指向所述目标文件集合的下载请求,从而可以从节点服务器中获取所述目标文件集合。但若两者不一致,表明分发服务器中的文件发生了改变,此时,由于节点服务器中的文件也可能没有及时更新,因此客户端可以直接向所述分发服务器发送指向所述目标文件集合的下载请求。当分发服务器接收到所述客户端发来的指向所述目标文件集合的下载请求后,可以向所述客户端下发所述目标文件集合。具体地,分发服务器在接收到客户端的下载请求后,可以按照之前生成文件索引信息的方法,再次更新出所述目标文件集合最新的文件索引信息,然后可以将更新出的文件索引信息作为头文件字段写入发送缓冲区,之后按顺序将所述目标文件集合中的文件作为主体字段写入所述发送缓冲区。在文件写入结束后,便可以将发送缓冲区内的数据发送给客户端。
在一个实施方式中,在客户端提取出目标文件之后,可以向分发服务器发起文件校验请求。此时,分发服务器可以计算本地存储的目标文件的第一校验码。所述第一校验码可以是基于哈希算法计算得到的哈希值,也可以是经过消息摘要算法计算得到的MD5值。分发服务器在计算得到本地存储的目标文件的第一校验码之后,可以将该计算得到的第一校验码发送至客户端。客户端在接收所述分发服务器反馈的校验码后,可以按照同样的算法计算提取的所述目标文件的第二校验码。然后客户端可以对比分发服务器反馈的第一校验码以及自身计算的第二校验码,从而确定提取的目标文件是否与分发服务器中的目标文件一致。
实施例四
请一并参阅图5和图6,本申请还提供一种分发服务器,所述分发服务器包括存储器和处理器,所述存储器中存储计算机程序,所述计算机程序被所述处理器执行时,实现以下功能:
S21:接收客户端发来的查询指令,并响应于所述查询指令,将本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息;
S23:将所述文件集合以及对应的文件索引信息缓存至内容分发网络中的节点服务器处;
S25:向所述客户端反馈所述文件索引信息,以使得所述客户端在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,所述客户端将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表。
在本实施方式中,所述计算机程序被所述处理器执行时,还实现以下功能:
接收所述客户端发来的指向所述目标文件集合的校验请求;
响应于所述校验请求,将所述目标文件集合的当前文件索引信息下发给所述客户端。
实施例五
请参阅图7,本申请还提供一种文件批量下载系统,所述系统包括客户端、分发服务器以及内容分发网络中的节点服务器,其中:
所述客户端,用于向所述分发服务器发送查询指令;接收所述分发服务器反馈的文件索引信息;在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表;通过合并后的下载任务下载所述目标文件集合,并基于所述目标文件索引信息以及所述下载列表,从所述目标文件集合中提取所述至少两个目标文件;
所述分发服务器,用于接收所述客户端发来的查询指令,并响应于所述查询指令,将本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息;将所述文件集合以及对应的文件索引信息缓存至所述内容分发网络中的节点服务器处;向所述客户端反馈所述文件索引信息;
所述节点服务器,用于缓存所述分发服务器发来的文件集合以及对应的文件索引信息。
请参阅图3,在一个实施方式中,上述客户端所实现的功能,可以由管理服务器和客户端共同完成。具体地,所述客户端还可以包括管理服务器,所述管理服务器用于向所述分发服务器发送查询指令,并接收所述分发服务器反馈的文件索引信息;创建下载任务,并响应于所述客户端的任务拉取请求,向所述客户端提供合并后的下载任务。
由上可见,本申请提供的技术方案,分发服务器中可以响应于客户端发起的查询指令,将本地存储的小文件整合为文件集合,整合后的文件集合可以具备文件索引信息。该文件索引信息中可以包括文件集合中各个小文件的数据量、偏移量、标识等信息。这样,当客户端在创建多个小文件的下载任务时,如果存在处于同一个文件集合中的小文件,那么可以将这些处于同一个文件集合中的小文件的下载任务合并为一个下载任务。这样,通过合并后的下载任务,可以将包含这些小文件的目标文件集合下载至本地,并可以根据该目标文件集合的目标文件索引信息,从所述目标文件集合中提取出所需要的小文件。由此可见,本申请可以通过一个下载任务下载得到多个小文件,从而避免了多次建立和发送下载请求的过程,进而提高了文件传输的效率。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对客户端、分发服务器以及系统的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (19)
1.一种文件批量下载方法,其特征在于,所述方法包括:
向分发服务器发送查询指令,以使得所述分发服务器响应于所述查询指令,将所述分发服务器本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息;
接收所述分发服务器反馈的所述文件索引信息和所述文件集合中包含的各个小文件的标识;
在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表;
通过合并后的下载任务下载所述目标文件集合,并基于所述目标文件索引信息以及所述下载列表,从所述目标文件集合中提取所述至少两个目标文件。
2.根据权利要求1所述的方法,其特征在于,在所述分发服务器将本地的文件合并为至少一个文件集合之后,所述方法还包括:
所述分发服务器将所述文件集合以及对应的文件索引信息缓存至内容分发网络中的节点服务器处。
3.根据权利要求2所述的方法,其特征在于,通过合并后的下载任务下载所述目标文件集合包括:
向所述内容分发网络中的节点服务器发送指向所述目标文件集合的下载请求;
当所述节点服务器中存在所述目标文件集合时,从所述节点服务器中下载所述目标文件集合;
当所述节点服务器中不存在所述目标文件集合时,在所述节点服务器从所述分发服务器中获取所述目标文件集合之后,从所述节点服务器中下载所述目标文件集合。
4.根据权利要求2所述的方法,其特征在于,在将所述至少两个目标文件的下载任务合并为一个下载任务之后,所述方法还包括:
向所述分发服务器发送指向所述目标文件集合的校验请求,以从所述分发服务器中获取所述目标文件集合的当前文件索引信息;
将所述当前文件索引信息与本地的目标文件索引信息进行对比,若两者一致,向所述内容分发网络中的节点服务器发送指向所述目标文件集合的下载请求;
若两者不一致,将本地的目标文件索引信息更新为所述当前文件索引信息,并向所述分发服务器发送指向所述目标文件集合的下载请求。
5.根据权利要求4所述的方法,其特征在于,所述校验请求中包括数据范围获取参数,所述数据范围获取参数用于从包含所述当前文件索引信息的数据中读取所述当前文件索引信息。
6.根据权利要求1所述的方法,其特征在于,所述分发服务器在将本地的文件合并为至少一个文件集合时,所述方法还包括:
所述分发服务器获取限制参数,所述限制参数用于限定同一个文件集合中文件数量的上限值和/或文件数据总量的上限值;
获取符合所述限制参数的多个文件,并将获取的多个文件合并为一个文件集合。
7.根据权利要求1所述的方法,其特征在于,所述目标文件索引信息中包括各个文件的偏移量以及各个文件的数据量;相应地,从所述目标文件集合中提取所述至少两个目标文件:
从所述目标文件索引信息中确定所述目标文件的目标偏移量以及目标数据量;
在所述目标文件集合中,从所述目标偏移量开始,读取所述目标数据量的数据,并将读取的数据作为所述目标文件。
8.根据权利要求1所述的方法,其特征在于,在从所述目标文件集合中提取所述至少两个目标文件之后,所述方法还包括:
向所述分发服务器发送文件校验请求,以使得所述分发服务器计算本地存储的目标文件的第一校验码;
接收所述分发服务器反馈的第一校验码,并计算提取的所述目标文件的第二校验码;
若所述第一校验码和所述第二校验码一致,将所述目标文件的状态修改为已下载;
若所述第一校验码和所述第二校验码不一致,删除所述目标文件集合以及提取的目标文件,并重新下载所述至少两个目标文件。
9.一种客户端,其特征在于,所述客户端包括存储器和处理器,所述存储器中存储计算机程序,所述计算机程序被所述处理器执行时,实现以下功能:
向分发服务器发送查询指令,以使得所述分发服务器响应于所述查询指令,将所述分发服务器本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息;
接收所述分发服务器反馈的所述文件索引信息和所述文件集合中包含的各个小文件的标识;
在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表;
通过合并后的下载任务下载所述目标文件集合,并基于所述目标文件索引信息以及所述下载列表,从所述目标文件集合中提取所述至少两个目标文件。
10.根据权利要求9所述的客户端,其特征在于,所述目标文件索引信息中包括各个文件的偏移量以及各个文件的数据量;相应地,所述计算机程序被所述处理器执行时,还实现以下功能:
从所述目标文件索引信息中确定所述目标文件的目标偏移量以及目标数据量;
在所述目标文件集合中,从所述目标偏移量开始,读取所述目标数据量的数据,并将读取的数据作为所述目标文件。
11.根据权利要求9所述的客户端,其特征在于,所述计算机程序被所述处理器执行时,还实现以下功能:
向所述分发服务器发送文件校验请求,以使得所述分发服务器计算本地存储的目标文件的第一校验码;
接收所述分发服务器反馈的第一校验码,并计算提取的所述目标文件的第二校验码;
若所述第一校验码和所述第二校验码一致,将所述目标文件的状态修改为已下载;
若所述第一校验码和所述第二校验码不一致,删除所述目标文件集合以及提取的目标文件,并重新下载所述至少两个目标文件。
12.一种文件批量下载方法,其特征在于,所述方法包括:
接收客户端发来的查询指令,并响应于所述查询指令,将本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息;
将所述文件集合以及对应的文件索引信息缓存至内容分发网络中的节点服务器处;
向所述客户端反馈所述文件索引信息和所述文件集合中包含的各个小文件的标识,以使得所述客户端在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,所述客户端将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
接收所述客户端发来的指向所述目标文件集合的校验请求;
响应于所述校验请求,将所述目标文件集合的当前文件索引信息下发给所述客户端。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
当所述当前文件索引信息与所述目标文件索引信息不一致时,接收所述客户端发来的指向所述目标文件集合的下载请求;
向所述客户端下发所述目标文件集合。
15.根据权利要求12所述的方法,其特征在于,所述方法还包括:
接收所述客户端发来的文件校验请求;
响应于所述文件校验请求,计算本地存储的目标文件的校验码,并向所述客户端反馈计算得到的所述校验码。
16.一种分发服务器,其特征在于,所述分发服务器包括存储器和处理器,所述存储器中存储计算机程序,所述计算机程序被所述处理器执行时,实现以下功能:
接收客户端发来的查询指令,并响应于所述查询指令,将本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息;
将所述文件集合以及对应的文件索引信息缓存至内容分发网络中的节点服务器处;
向所述客户端反馈所述文件索引信息和所述文件集合中包含的各个小文件的标识,以使得所述客户端在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,所述客户端将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表。
17.根据权利要求16所述的分发服务器,其特征在于,所述计算机程序被所述处理器执行时,还实现以下功能:
接收所述客户端发来的指向所述目标文件集合的校验请求;
响应于所述校验请求,将所述目标文件集合的当前文件索引信息下发给所述客户端。
18.一种文件批量下载系统,其特征在于,所述系统包括客户端、分发服务器以及内容分发网络中的节点服务器,其中:
所述客户端,用于向所述分发服务器发送查询指令;接收所述分发服务器反馈的文件索引信息和文件集合中包含的各个小文件的标识;在创建下载任务时,若待下载的至少两个目标文件处于同一个目标文件集合内,将所述至少两个目标文件的下载任务合并为一个下载任务;其中,合并后的下载任务中包括所述目标文件集合的目标文件索引信息以及所述至少两个目标文件的下载列表;通过合并后的下载任务下载所述目标文件集合,并基于所述目标文件索引信息以及所述下载列表,从所述目标文件集合中提取所述至少两个目标文件;
所述分发服务器,用于接收所述客户端发来的查询指令,并响应于所述查询指令,将本地的文件合并为至少一个文件集合,其中,所述文件集合具备文件索引信息;将所述文件集合以及对应的文件索引信息缓存至所述内容分发网络中的节点服务器处;向所述客户端反馈所述文件索引信息和所述文件集合中包含的各个小文件的标识;
所述节点服务器,用于缓存所述分发服务器发来的文件集合以及对应的文件索引信息。
19.根据权利要求18所述的系统,其特征在于,所述客户端包括管理服务器,所述管理服务器用于向所述分发服务器发送查询指令,并接收所述分发服务器反馈的文件索引信息;创建下载任务,并响应于所述客户端的任务拉取请求,向所述客户端提供合并后的下载任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710942958.6A CN107613016B (zh) | 2017-10-11 | 2017-10-11 | 文件批量下载方法、客户端、分发服务器及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710942958.6A CN107613016B (zh) | 2017-10-11 | 2017-10-11 | 文件批量下载方法、客户端、分发服务器及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107613016A CN107613016A (zh) | 2018-01-19 |
CN107613016B true CN107613016B (zh) | 2020-05-22 |
Family
ID=61068640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710942958.6A Expired - Fee Related CN107613016B (zh) | 2017-10-11 | 2017-10-11 | 文件批量下载方法、客户端、分发服务器及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107613016B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108282543A (zh) * | 2018-03-05 | 2018-07-13 | 北京云端智度科技有限公司 | 一种cdn节点内容校验方法和系统 |
CN111258956B (zh) * | 2019-03-22 | 2023-11-24 | 深圳市远行科技股份有限公司 | 一种面向远端海量数据文件预读的方法及设备 |
CN114070844B (zh) * | 2021-11-05 | 2024-05-14 | 统信软件技术有限公司 | 一种文件下载方法、装置、计算设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103841135A (zh) * | 2012-11-22 | 2014-06-04 | 腾讯科技(深圳)有限公司 | 文件加速下载方法及装置 |
CN104978351A (zh) * | 2014-04-09 | 2015-10-14 | 中国电信股份有限公司 | 海量小文件备份方法与云存储网关 |
KR20160067289A (ko) * | 2014-12-03 | 2016-06-14 | 충북대학교 산학협력단 | 분산 파일 시스템에서 소형 파일에 대한 접근성 향상을 위한 캐시 관리 시스템 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503692B2 (en) * | 2015-02-03 | 2019-12-10 | Quantum Corporation | Filter file system with inode number as primary database key |
-
2017
- 2017-10-11 CN CN201710942958.6A patent/CN107613016B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103841135A (zh) * | 2012-11-22 | 2014-06-04 | 腾讯科技(深圳)有限公司 | 文件加速下载方法及装置 |
CN104978351A (zh) * | 2014-04-09 | 2015-10-14 | 中国电信股份有限公司 | 海量小文件备份方法与云存储网关 |
KR20160067289A (ko) * | 2014-12-03 | 2016-06-14 | 충북대학교 산학협력단 | 분산 파일 시스템에서 소형 파일에 대한 접근성 향상을 위한 캐시 관리 시스템 |
Also Published As
Publication number | Publication date |
---|---|
CN107613016A (zh) | 2018-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10694353B2 (en) | Updating web resources | |
EP3660664B1 (en) | File folder transmission on network | |
CN109347968B (zh) | 一种下载资源文件的数据块的方法、设备和系统 | |
CN101350790B (zh) | 基于即时通讯系统的文件传输方法及装置 | |
EP3063925B1 (en) | Synchronizing event history for multiple clients | |
CN107613016B (zh) | 文件批量下载方法、客户端、分发服务器及系统 | |
US20150067109A1 (en) | Method for processing shared file and cloud storage server | |
US20140359066A1 (en) | System, method and device for offline downloading resource and computer storage medium | |
CN103297447B (zh) | 一种资源共享方法及其设备 | |
CN102523299B (zh) | 基于消息摘要进行内容标识的缓存方法 | |
CN111273863B (zh) | 高速缓存管理 | |
WO2013078797A1 (zh) | 网络文件传输方法及系统 | |
EP2975825A1 (en) | Difference based content networking | |
CN103312489A (zh) | 一种终端与服务器进行同步的方法和装置 | |
US8984100B2 (en) | Data downloading method, terminal, server, and system | |
CN107918617B (zh) | 数据查询方法和装置 | |
CN112039993B (zh) | 一种长连接地址处理方法和装置 | |
CN109471713B (zh) | 用于查询信息的方法和装置 | |
CN110895583B (zh) | 数据资源获取的方法、装置和系统 | |
CN103118045A (zh) | 一种离线下载的方法及系统 | |
CN104639651A (zh) | 一种移动设备信息传输方法 | |
CN113452733A (zh) | 文件下载方法和装置 | |
CN109688204B (zh) | 基于ndn网络的文件下载方法、节点、终端 | |
CN102685160B (zh) | P2sp中资源下载方法、服务器、感知服务器、客户端及系统 | |
CN111245949A (zh) | 文件归档传输方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200522 |
|
CF01 | Termination of patent right due to non-payment of annual fee |