一种资源下载方法、装置、系统以及资源服务器与流程

文档序号:11879032阅读:324来源:国知局
一种资源下载方法、装置、系统以及资源服务器与流程

本发明涉及计算机技术领域,尤其是一种资源下载方法、装置、系统以及资源服务器。



背景技术:

一般地,当需要提供数据量较大(例如,上百G数据)、访问频繁的下载服务时,在传统企业中可以通过CDN(内容分发网络)、分区域服务等方式来构建良好的用户体验。但在一些其他场景(例如开源社区)中,是无法投入如此昂贵的服务器以及带宽资源的。

一种解决办法是采用资源服务器加资源服务器的镜像服务器的方式。此时,让用户尽可能选择连接状况最好的镜像服务器,以达到带宽质量最优的效果,但另一方面,还要解决镜像服务器和资源服务器的数据一致性问题。因此,需要一种优化的数据下载方案,能够折衷考虑数据一致性和带宽质量问题。



技术实现要素:

为此,本发明提供了一种资源下载方法、装置、系统以及资源服务器,以力图解决或者至少缓解上面存在的至少一个问题。

根据本发明的一个方面,提供了一种资源下载方法,该方法适于在客户端中执行,客户端与资源服务器和资源服务器的镜像服务器相连,该方法包括步骤:从资源服务器获取服务器列表和所有资源的索引文件,其中服务器列表中存储多个镜像服务器的服务器地址,索引文件包含资源的相对地址,且资源的相对地址的编码方式能够反映资源内容的变化;当要下载资源时,根据待下载资源的相对地址和服务器列表中的服务器地址生成多个待下载地址;根据多个待下载地址逐个构造资源探测请求发送给对应的镜像服务器;根据多个镜像服务器的响应结果,分析得到响应最优的镜像服务器,并从多个待下载地址中选取该响应最优的镜像服务器对应的下载地址;以及根据下载地址发送下载请求,以便获取待下载资源。

可选地,在根据本发明的资源下载方法中,还包括更新服务器列表和索引文件的步骤:每隔预定时间从资源服务器获取服务器列表和资源的索引文件,以更新原有服务器列表和索引文件,其中资源服务器定期对所有镜像服务器的同步进度进行检测,并根据同步进度检测结果更新服务器列表。

可选地,在根据本发明的资源下载方法中,资源的相对地址是根据资源的标识(ID)和版本号计算得到。

可选地,在根据本发明的资源下载方法中,资源的相对地址是资源内容的hash值。

可选地,在根据本发明的资源下载方法中,资源服务器分级存储索引文件,且一级资源索引指向二级资源索引,更新索引文件的步骤,还包括步骤:从资源服务器获取一级资源索引;以及根据一级资源索引向镜像服务器获取二级资源索引。

可选地,在根据本发明的资源下载方法中,更新索引文件的步骤,还包括步骤:根据资源的内容属性分块存储索引文件,其中内容属性至少包括游戏、驱动、视音频中的一种。

可选地,在根据本发明的资源下载方法中,分析得到响应最优的镜像服务器,并从多个待下载地址中选取该响应最优的镜像服务器对应的下载地址的步骤还包括:当所有镜像服务器的响应速度均低于预设的响应速度阈值时,将资源服务器作为响应最优服务器;以及根据待下载资源的相对地址和资源服务器地址生成下载地址。

可选地,在根据本发明的资源下载方法中,资源服务器定期对所有镜像服务器的同步进度进行检测,并根据同步进度检测结果更新服务器列表的步骤包括:资源服务器在每个资源目录下建立一个测试资源,并生成测试文件,其中测试文件中的一条记录标记一个测试资源的相对地址;资源服务器将待检测的镜像服务器的地址逐一与测试文件中的每个测试资源的相对地址合并,生成多个待下载地址;根据生成的多个待下载地址,发送多个下载请求到待检测的镜像服务器;资源服务器根据待检测的镜像服务器的响应结果计算该镜像服务器的同步进度;以及若待检测的镜像服务器的同步进度低于阈值,资源服务器就从服务器列表中删除该镜像服务器,以便客户端定期获取更新的服务器列表。

可选地,在根据本发明的资源下载方法中,资源服务器根据待检测的镜像服务器的响应结果计算该镜像服务器的同步进度的步骤包括:根据响应结果统计待检测的镜像服务器中存在的测试资源数目;以及根据该存在的测试资源的数目和测试资源总数量计算该镜像服务器的同步进度。

可选地,在根据本发明的资源下载方法中,测试资源为空文件。

可选地,在根据本发明的资源下载方法中,资源探测请求是HTTP HEAD请求,或,自定义的HTTP GET请求,其中自定义的HTTP GET请求在得到http header后断开当前连接。

根据本发明的另一方面,提供了一种资源下载装置,该装置布置在客户端中,客户端与资源服务器和资源服务器的镜像服务器相连,装置包括:接口单元,适于从资源服务器获取服务器列表和所有资源的索引文件,其中服务器列表中存储多个镜像服务器的服务器地址,索引文件包含资源的相对地址,且资源的相对地址的编码方式能够反映资源内容的变化;存储单元,适于存储服务器列表和索引文件;第一处理单元,适于当要下载资源时,根据待下载资源的相对地址和服务器列表中的服务器地址生成多个待下载地址、还适于根据多个待下载地址逐个构造资源探测请求;接口单元还适于发送资源探测请求给对应的镜像服务器、以及接收镜像服务器的响应结果;第二处理单元,适于根据多个镜像服务器的响应结果,分析得到响应最优的镜像服务器、且从多个待下载地址中选取该响应最优的镜像服务器对应的下载地址;以及接口单元还适于根据下载地址发送下载请求,以便获取待下载资源。

可选地,在根据本发明的资源下载装置中,接口单元还适于每隔预定时间从资源服务器获取服务器列表和资源的索引文件,其中资源服务器定期对所有镜像服务器的同步进度进行检测,并根据同步进度检测结果更新服务器列表;以及存储单元适于每隔预定时间更新原有服务器列表和索引文件。

可选地,在根据本发明的资源下载装置中,资源的相对地址是根据资源的标识(ID)和版本号计算得到。

可选地,在根据本发明的资源下载装置中,资源的相对地址是资源内容的hash值。

可选地,在根据本发明的资源下载装置中,资源服务器分级存储索引文件,且一级资源索引指向二级资源索引,接口单元适于从资源服务器获取一级资源索引;以及根据一级资源索引向镜像服务器获取二级资源索引。

可选地,在根据本发明的资源下载装置中,接口单元适于根据资源的内容属性分块获取索引文件;存储单元适于根据资源的内容属性分块存储索引文件,其中,内容属性至少包括游戏、驱动、视音频中的一种。

可选地,在根据本发明的资源下载装置中,第二处理单元还包括:判断模块,适于判断所有镜像服务器的响应速度是否均低于预设的响应速度阈值;第二处理单元还适于当判断得所有镜像服务器的响应速度均低于预设的响应速度阈值时,将资源服务器作为响应最优服务器、且根据待下载资源的相对地址和资源服务器地址生成下载地址。

可选地,在根据本发明的资源下载装置中,资源服务器被配置为:适于在每个资源目录下建立一个测试资源,并生成测试文件,其中测试文件中的一条记录标记一个测试资源的相对地址、且将待检测的镜像服务器的地址逐一与测试文件中的每个测试资源的相对地址合并,生成多个待下载地址;还适于根据生成的多个待下载地址,发送多个下载请求到待检测的镜像服务器、并根据该待检测的镜像服务器的响应结果计算该镜像服务器的同步进度;以及还适于在待检测镜像服务器的同步进度低于阈值时,从服务器列表中删除该镜像服务器以便客户端定期获取更新的服务器列表。

可选地,在根据本发明的资源下载装置中,资源服务器还适于根据响应结果统计待检测的镜像服务器中存在的测试资源数目,并且根据该存在的测试资源的数目和测试资源总数量计算该镜像服务器的同步进度。

可选地,在根据本发明的资源下载装置中,测试资源为空文件。

可选地,在根据本发明的资源下载装置中,资源探测请求是HTTP HEAD请求,或,自定义的HTTP GET请求,其中自定义的HTTP GET请求在得到http header后断开当前连接。

根据本发明的又一方面,提供了一种资源服务器,资源服务器与客户端和镜像服务器相连,资源服务器包括:列表管理单元,适于建立服务器列表和所有资源的索引文件,其中服务器列表中存储多个镜像服务器的服务器地址,索引文件包含所有资源的相对地址,且资源的相对地址的编码方式能够反映资源内容的变化;以及连接管理单元,适于响应于客户端的请求,定期发送服务器列表和索引文件给客户端,以便客户端更新服务器列表和索引文件、还适于响应于镜像服务器的同步请求,发送资源给镜像服务器,其中所发送的资源包括索引文件。

可选地,在根据本发明的资源服务器中,连接管理单元还适于接收来自客户端的资源探测请求,并发送响应消息给客户端,以及接收来自客户端的下载请求,并将该下载请求中指向的待下载资源发送给客户端。

可选地,在根据本发明的资源服务器中,列表管理单元还包括:地址编码模块,适于根据资源的标识(ID)和版本号得到资源的相对地址。

可选地,在根据本发明的资源服务器中,列表管理单元还包括:地址编码模块,适于对资源内容做hash计算得到资源的相对地址。

可选地,在根据本发明的资源服务器中,列表管理单元还适于分级存储索引文件,并根据一级资源索引能够查找二级资源索引;以及连接管理单元还适于在响应客户端的请求后,发送一级资源索引给客户端,以便于客户端根据一级资源索引向镜像服务器获取二级资源索引。

可选地,在根据本发明的资源服务器中,列表管理单元还适于根据资源的内容属性分块存储索引文件,其中内容属性至少包括游戏、驱动、视音频中的一种。

可选地,在根据本发明的资源服务器中,还包括适于对所有镜像服务器进行同步检测的同步检测单元,同步检测单元包括:测试资源管理模块,适于在每个资源目录下建立一个测试资源,并生成测试文件,其中测试文件中的一条记录标记一个测试资源的相对地址;测试地址生成模块,适于将待检测的镜像服务器的地址逐一与测试文件中的每个测试资源的相对地址合并生成多个待下载地址;连接管理单元还适于发送下载请求给待检测的镜像服务器;计算模块,适于根据待检测的镜像服务器的响应结果计算该镜像服务器的同步进度;以及列表管理单元,适于在待检测镜像服务器的同步进度低于阈值时,从服务器列表中删除该镜像服务器以便客户端定期获取更新的服务器列表。可选地,在根据本发明的资源服务器中,

可选地,在根据本发明的资源服务器中,计算模块还适于根据响应结果统计待检测的镜像服务器中存在的测试资源数目,并且根据该存在的测试资源的数目和测试资源总数量计算该镜像服务器的同步进度。

可选地,在根据本发明的资源服务器中,测试资源为空文件。

根据本发明的另一方面,提供了一种资源下载系统,该系统包括:客户端,具有如上所述的资源下载装置;如上所述的资源服务器;以及镜像服务器。

根据本发明的资源下载方案,资源服务器根据资源目录建立索引文件,在索引文件中,资源的相对地址的编码方式能够反映资源内容的变化,以保证资源服务器、镜像服务器、客户端上的数据的一致性,只要资源服务器上的资源有变化,通过定期同步/更新索引文件,镜像服务器和客户端也可以获知最新资源目录。同时,客户端根据服务器列表和索引文件,通过资源探测请求动态选择响应最优的镜像服务器,保证资源下载时的带宽最优。另外,通过分级/分块存储索引文件的方式,可以有效缓解资源服务器的带宽压力,还提高了更新索引文件的效率。

进一步地,镜像服务器定时或不定时地从资源服务器同步资源,资源服务器根据镜像服务器的同步状况建立/更新服务器列表;客户端再定期从资源服务器拉取服务器列表以便更新。这样就解决了镜像服务器不受资源服务器管理的限制,资源服务器可以将同步状况不好的镜像服务器从服务器列表中剔除,客户端就不用向该镜像服务器发送资源探测请求,以节省资源、提高效率。

附图说明

为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。

图1示出了根据本发明一个实施例的资源下载系统100的示意图;

图2示出了根据本发明一个实施例的资源下载方法200的流程图;

图3示出了根据本发明一个实施例的资源下载装置300的示意图;

图4示出了根据本发明一个实施例的资源服务器120的示意图;以及

图5示出了根据本发明又一实施例的资源服务器120的示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1示出了根据本发明一个实施例的资源下载系统100的示意图。参见图1,该系统100包括客户端110、资源服务器120以及资源服务器120的镜像服务器130(具有多个),其中客户端110、资源服务器120、镜像服务器130通过网络相互连接,本发明对连接方式并不作限制。客户端110可以是计算机(PC)、智能电视等大屏幕计算设备,也可以是平板、手机等移动终端,或者是智能手表、智能眼镜等可联网的可穿戴设备等,在客户端110上布置有资源下载装置300,以向资源服务器120和镜像服务器130下载资源。虽然图1中仅示例性地示出了一个客户端110,但是本领域技术人员可以意识到,资源下载系统中可以包括多个客户端,本发明对系统100中的客户端的数目并无限制。资源服务器120(或镜像服务器130)可以是一台服务器,也可以是由若干台服务器组成的服务器集群,或者是一个云计算服务中心。此外,用于组成服务器集群或云计算服务中心的多个服务器可以驻留在多个地理位置中,本发明对资源服务器120(或镜像服务器130)的部署方式不做限制。

对于资源下载系统,目前常用的两种资源下载方式,一种是在资源服务器端根据定期检测的镜像服务器状态以及用户的请求信息进行URL的跳转,也就是由资源服务器智能选取镜像服务器,其缺点是在资源服务器端做出的判断逻辑,并不能准确反映出客户端与所选镜像服务器的实际连接情况。另一种是由用户在客户端选择固定使用的服务器,比如在网络游戏中,就是由用户自行选择服务器,这种方式的好处是用户能很准确的使用自己期望的服务器,但缺点是大部分用户并不能做出正确判断,尤其当镜像服务器的连接出现问题或者没有同步更新时,客户端的用户并不能及时获取信息。

鉴于此,在本发明中,初始资源都存储在资源服务器120上,资源服务器120根据资源目录建立索引文件;同时,镜像服务器130定时或不定时地从资源服务器120同步资源,资源服务器120根据镜像服务器的同步状况建立/更新服务器列表。客户端110会定期从资源服务器120更新索引文件和服务器列表。当要下载资源时,客户端110向镜像服务器130发送资源探测请求,探测到响应最优的镜像服务器130时,就向该镜像服务器发送下载请求,下载资源。一方面,客户端通过资源探测请求动态选择响应最优的镜像服务器,另一方面,通过资源服务器端的索引文件和服务器列表,动态监测资源的同步更新,很好地解决了数据一致性问题。

以下将详细介绍在本系统100中执行资源下载方法的过程。

在资源服务器120上建立服务器列表和所有资源的索引文件,其中服务器列表中存储多个镜像服务器130的服务器地址,索引文件包含所有资源的相对地址,且资源的相对地址的编码方式能够反映资源内容的变化,也就是说,资源内容与资源的相对地址是一一对应的,只要资源内容有变化,它在索引文件中的记录也会变成另一个新的资源,以便于维护系统100中资源的一致性。

可选地,根据资源的标识ID和版本号计算得到资源的相对地址。例如,一个资源有如下信息:

Package:deepin-appstore

Version:4.0.8.1-1

Architecture:amd64

将其资源标识(包名)、版本号进行合并得到资源的相对地址为:Filename:pool/main/d/deepin-appstore/deepin-appstore_4.0.8.1-1_amd64.deb。

根据又一实施例,也可以对资源内容做hash计算得到资源的相对地址,例如,在索引文件中记录一个资源目录:

Package:deepin-appstore

MD5:2bf414b036aa5d4e1138d01de992e579

客户端110会定期向资源服务器120更新服务器列表和索引文件,响应于客户端110的请求,资源服务器120会定期发送上述索引文件和服务器列表给客户端110,以便于客户端110更新数据。

同样,响应于镜像服务器130的同步请求,资源服务器120也会发送资源以及索引文件给镜像服务器130,在这里,索引文件被认为是一种特殊的资源文件。

当用户想下载某个资源时,客户端110根据待下载资源的相对地址和服务器列表中的服务器地址生成多个待下载地址。例如,若资源的相对地址为:R=pool/main/3/389-admin.deb,选取服务器列表中一个镜像服务器的地址为:S1=http://cdn.packages.deepin/deepin,将其合并生成一个待下载地址为:http://cdn.packages.deepin/deepin/pool/main/3/389-admin.deb。

客户端110可以对服务器列表中的所有服务器地址生成一个待下载地址,然后根据多个待下载地址逐个构造资源探测请求发送给对应的镜像服务器130。根据一种实现方式,资源探测请求是HTTP HEAD请求,一个HEAD请求的响应中,HTTP头中包含的元信息应该和一个HTTP GET请求的响应消息相同,HEAD方法可以用来获取请求中隐含的元信息,而不用传输实体本身,因此常用来测试超链接的有效性、可用性和最近的修改。对于有些禁用了HEAD方法的服务器,客户端也可以自定义一个特殊的HTTP GET请求,其实质和HTTP HEAD请求相同,即得到http header后立刻断开当前连接。

镜像服务器130在接收到资源探测请求后,向资源服务器120反馈响应消息。例如,返回200OK,表示客户端请求成功;返回404Not Found,表示请求资源不存在。

客户端110根据多个镜像服务器的响应结果,分析其中响应最优的镜像服务器,并从多个待下载地址中选取该响应最优的镜像服务器对应的下载地址,根据下载地址发送下载请求给对应的服务器,以获取待下载资源。根据一个实施例,客户端110将返回“200OK”且响应速度最快的镜像服务器作为响应最优的镜像服务器,然后根据该镜像服务器对应的待下载地址向该镜像服务器发送下载请求。

根据一种实现方式,当客户端110分析得到所有镜像服务器的响应速度均低于预设的响应速度阈值时,就将资源服务器120作为响应最优服务器,并根据待下载资源的相对地址和资源服务器地址生成下载地址,以向资源服务器120发送下载请求。

设想一种场景:若多个客户端110均向资源服务器120发送下载请求,资源服务器120的压力就会增大,进而影响下载的带宽质量。本发明的资源下载方案,一个优势就在于用多个镜像服务器来缓解资源服务器的带宽压力,根据资源探测请求的响应结果判断,当响应速度差距不大时,资源服务器会尽量避免被选中,而是将下载请求分散到各个镜像服务器上;只有在所有镜像服务器的响应速度均不能满足预设要求时,才选用资源服务器进行下载。

进一步地,为提高客户端更新索引文件的速度,在本方案中,资源服务器120适于分级存储索引文件。例如将索引文件分成多级进行存储,其中一级资源索引能够指向二级资源索引、二级资源索引能够指向三级资源索引……以此类推。依前文所述,在同步时,索引文件也会作为资源文件同步给镜像服务器。

当接收到客户端110更新索引文件的请求时,资源服务器120发送一级资源索引给客户端,然后客户端根据一级资源索引向镜像服务器获取二级资源索引、三级资源索引…在减小资源服务器带宽压力的同时,可以提高更新的速度。

根据另一种实施方式,资源服务器120也适于分块存储索引文件。例如根据资源的内容属性对其分块,然后分块存储索引文件,其中内容属性至少包括游戏、驱动、视音频中的一种。

在一些场景中,资源的数据量非常大,例如超过500多GB,此时索引文件也会有成百MB的数据量,更新一次索引文件消费的时间也会很庞大。此时,通过分级/分块存储索引文件的方式,就可以有效提高更新索引文件的速度。

另外,前文提到,资源服务器120根据镜像服务器130的同步状况建立/更新服务器列表,那么,资源服务器要对所有镜像服务器的同步进度进行检测,根据检测结果更新服务器列表。具体的同步检测步骤包括:

资源服务器120在每个资源目录下建立测试资源,并生成测试文件,其中测试文件就如同索引文件一样,一条记录标记一个测试资源的相对地址,并且相对地址的编码方式能够反映测试资源内容的变动。

例如,测试资源为_GUARD2016-02-18-13:00:32:12,生成100个这种测试资源(用2016-02-18-13:00:**:**区分不同的测试资源),考虑到测试资源仅作同步检测用,测试资源的内容设为空。将测试资源的相对地址记录在一个index2016-18-13:00:32:12文件中,作为测试文件,关于相对地址的编码方式,可以参考前文对资源的相对地址的编码方式。

然后,资源服务器120将测试文件中每个测试资源的相对地址逐一与待检测的镜像服务器的地址合并生成多个待下载地址,并向对应的待检测镜像服务器发送下载请求。因为测试资源的内容为空,因此,资源服务器可以直接下载测试资源看是否有错即可,当然,也可以通过HTTP HEAD请求查看是否存在该测试资源。

根据待检测的镜像服务器的响应结果,资源服务器计算该镜像服务器的同步进度。例如,对于100个这样的测试资源,根据响应结果统计得到镜像服务器上存在60个测试资源,那么该镜像服务器的同步进度就为60%。

最后,根据计算得的同步进度结果,更新服务器列表——根据本发明的一个实施例,若待检测的镜像服务器的同步进度低于阈值,就从服务器列表中删除该待检测镜像服务器,以便客户端定期获取更新的服务器列表。可选地,对于某些长期不进行同步、或者同步进度极低的镜像服务器,可以从服务器列表中删除该镜像服务器的服务器地址。由于镜像服务器的管理是相对独立的,也就是说,镜像服务器什么时候出问题、什么时候进行同步、带宽如何等等都是资源服务器不太好控制的,那么通过同步检测,根据镜像服务器的同步进度去更新服务器列表,就可以保证客户端110进行通讯的镜像服务器的有效性,以提高资源下载的效率。

如图2示出了根据本发明一个实施例的资源下载方法200的流程图。本方法200在客户端110中执行,方法始于步骤S210,从资源服务器获取服务器列表和所有资源的索引文件,其中服务器列表中存储多个镜像服务器的服务器地址,索引文件包含资源的相对地址,且资源的相对地址的编码方式能够反映资源内容的变化。可选地,资源的相对地址是根据资源的标识ID和版本号计算得到;也可以是资源内容的hash值,只要资源内容发生变化,资源的相对地址就会变化。本步骤在基于图2的描述中已经给出示例,此处不再赘述。

随后在步骤S220中,当要下载资源时,根据待下载资源的相对地址和服务器列表中的服务器地址生成多个待下载地址。

随后在步骤S230中,根据多个待下载地址逐个构造资源探测请求发送给对应的镜像服务器。可选地,资源探测请求是HTTP HEAD请求,或,自定义的HTTP GET请求,其中自定义的HTTP GET请求同HTTP HEAD请求一样,只获取请求的响应消息,而不需要传输实体本身,故在得到http header后断开当前连接。

随后在步骤S240中,根据多个镜像服务器的响应结果,分析得到响应最优的镜像服务器。例如,将返回“200OK”且响应速度最快的镜像服务器作为响应最优的镜像服务器,然后从多个待下载地址中选取该响应最优的镜像服务器对应的下载地址。

根据本发明的实施方式,当所有镜像服务器的响应速度均低于预设的响应速度阈值时,将资源服务器作为响应最优服务器,并根据待下载资源的相对地址和资源服务器地址生成下载地址。

随后在步骤S250中,根据该下载地址发送下载请求,以便获取待下载资源。

根据本发明一个实施例,资源服务器上的资源发生变化时,索引文件也会发生变化,因此客户端还包括更新索引文件的步骤:每隔预定时间从资源服务器获取资源的索引文件,以更新原有索引文件。为提高更新索引文件的速度和效率,资源服务器会分级存储索引文件,且一级资源索引指向二级资源索引……以此类推。在更新索引文件时,客户端从资源服务器获取一级资源索引、再根据一级资源索引向镜像服务器获取二级资源索引,甚至三级资源索引等多级资源索引。当然,除了分级存储索引文件外,亦可以根据资源的内容属性分块存储索引文件,其中内容属性至少包括游戏、驱动、视音频中的一种。

同理,根据镜像服务器的连接情况(或者说,同步情况),客户端还包括更新服务器列表的步骤:由资源服务器对所有镜像服务器的同步进度进行检测,资源服务器根据计算得的同步进度结果,更新服务器列表,以便客户端定期获取更新的服务器列表。可选地,客户端可以在定期更新索引文件的同时,更新服务器列表。

根据本发明的资源下载方法200,在索引文件中,资源的相对地址的编码方式能够反映资源内容的变化,以保证资源服务器、镜像服务器、客户端上的数据的一致性,只要资源服务器上的资源有变化,通过定期同步/更新索引文件,镜像服务器和客户端也可以获知最新资源目录。那么客户端在下载资源时,就可以根据服务器列表和索引文件,通过资源探测请求动态选择响应最优的镜像服务器,保证资源下载时的带宽最优。

另外,通过分级/分块存储索引文件的方式,可以有效缓解资源服务器的带宽压力,还提高了更新索引文件的效率。

进一步地,资源服务器根据镜像服务器的同步状况建立/更新服务器列表,客户端再定期从资源服务器拉取服务器列表以便更新。这样就解决了镜像服务器不受资源服务器管理的限制,资源服务器可以将同步状况不好的镜像服务器从服务器列表中剔除,客户端只向服务器列表中存在的镜像服务器发送资源探测请求,以节省资源、提高下载效率。

图3示出了根据本发明一个实施例的布置于客户端110上的资源下载装置300的示意图。装置300包括:接口单元310、存储单元320、第一处理单元330和第二处理单元340。

接口单元310适于从资源服务器获取服务器列表和所有资源的索引文件,其中服务器列表中存储多个镜像服务器的服务器地址,索引文件包含资源的相对地址,且资源的相对地址的编码方式能够反映资源内容的变化。可选地,资源的相对地址可以是根据资源的标识ID和版本号计算得到;也可以是资源内容的hash值。关于资源相对地址的编码方式,上文已经给出示例说明,此处不再赘述。

存储单元320适于存储接口单元310接收的服务器列表和索引文件。

第一处理单元330适于当要下载资源时,根据待下载资源的相对地址和服务器列表中的服务器地址生成多个待下载地址、还适于根据多个待下载地址逐个构造资源探测请求。根据本发明一个实施例,资源探测请求是HTTP HEAD请求,或,自定义的GET请求(针对于某些不支持HEAD请求的服务器),其中自定义的GET请求在得到http header后断开当前连接。

接口单元310还适于发送资源探测请求给对应的镜像服务器、以及接收镜像服务器的响应结果。

第二处理单元340适于根据多个镜像服务器的响应结果,分析得到响应最优的镜像服务器、且从多个待下载地址中选取该响应最优的镜像服务器对应的下载地址。

根据一种实现方式,第二处理单元340还包括适于判断所有镜像服务器的响应速度是否均低于预设的响应速度阈值的判断模块。第二处理单元340适于当判断模块判断得所有镜像服务器的响应速度均低于预设的响应速度阈值时,将资源服务器作为响应最优服务器、且根据待下载资源的相对地址和资源服务器地址生成下载地址。

再由接口单元310根据下载地址向对应的响应最优服务器发送下载请求,以便获取待下载资源。

根据本发明的实施方式,接口单元310还适于每隔预定时间从资源服务器获取服务器列表和资源的索引文件,交由存储单元320更新原有服务器列表和索引文件。

依前文所述,资源服务器适于分级存储索引文件,且一级资源索引指向二级资源索引,接口单元310适于在获取索引资源时,从资源服务器获取一级资源索引、再根据一级资源索引向镜像服务器获取二级资源索引。

或者,资源服务器也适于分块存储索引文件,那么接口单元310适于根据资源的内容属性分块获取索引文件,存储单元320亦适于根据资源的内容属性分块存储索引文件,其中内容属性至少包括游戏、驱动、视音频中的一种。

上述获取资源的索引文件的方式,均是考虑到在资源的数据量非常大的场景下(此时索引文件也会很大),更新一次索引文件消费的时间会很庞大。通过分级/分块获取索引文件的方式,就可以有效提高更新索引文件的效率。

另一方面,接口单元310还适于定期从资源服务器获取更新的服务器列表,其中资源服务器定期对所有镜像服务器的同步进度进行检测,并根据同步进度检测结果更新服务器列表。此处不再赘述。

图4示出了根据本发明一个实施例的资源服务器120的示意图。资源服务器120包括:列表管理单122和连接管理单元124。

列表管理单元122适于建立服务器列表和所有资源的索引文件,其中服务器列表中存储多个镜像服务器的服务器地址,索引文件包含所有资源的相对地址,且资源的相对地址的编码方式能够反映资源内容的变化。

根据本发明的实施方式,列表管理单元122包括地址编码模块,适于根据资源的标识ID和版本号得到资源的相对地址;地址编码模块也适于对资源内容做hash计算得到资源的相对地址。总之,通过地址编码模块得到的资源的相对地址能够与资源内容一一对应。

连接管理单元124适于响应于客户端的请求,定期发送服务器列表和索引文件给客户端,以便客户端更新服务器列表和索引文件。连接管理单元124还适于响应于镜像服务器的同步请求,发送资源给镜像服务器,其中所发送的资源包括索引文件(即,将索引文件作为一种特殊的资源文件一起同步)。

连接管理单元124还适于接收来自客户端的资源探测请求,并发送响应消息给客户端;或者是,连接管理单元124接收来自客户端的下载请求,并将该下载请求中指向的待下载资源发送给客户端。如前文所述,资源探测请求是HTTP HEAD请求或自定义的类似HEAD请求的HTTP GET请求,因此,反馈的响应消息中只针对请求的元信息,例如,返回200OK,表示客户端请求成功;返回404Not Found,表示请求资源不存在。根据本发明的实施方式,客户端的资源探测请求可以暂不发给资源服务器(只发给服务器列表中的镜像服务器),只有当探测不到响应最优的镜像服务器时,才去资源服务器下载资源。一般地,资源服务器上保存所有的资源,故当客户端要向资源服务器下载资源时,亦可以不发送资源探测请求、直接发送下载请求,本发明对此方面不再限制。

为了分散资源服务器定期向客户端更新索引文件的压力、以及提高更新索引文件的效率,在资源服务器上采用分级/分块存储索引文件的方式。具体地,列表管理单元122适于分级存储索引文件,并根据一级资源索引能够查找二级资源索引,连接管理单元124适于在响应客户端的请求后,发送一级资源索引给客户端,以便于客户端根据一级资源索引向镜像服务器获取二级资源索引。或者是,列表管理单元122适于根据资源的内容属性分块存储索引文件,其中内容属性至少包括游戏、驱动、视音频中的一种。

根据本发明又一实施例,资源服务器120还适于定期检测所有镜像服务器130的同步进度,以更新服务器列表。如图5示出了根据本发明又一实施例的资源服务器120的示意图,资源服务器120除了列表管理单元122和连接管理单元124外,还包括同步检测单元126。

同步检测单元126包括适于在每个资源目录下建立一个测试资源,并生成测试文件的测试资源管理模块1262、和适于将待检测的镜像服务器的地址逐一与测试文件中的每个测试资源的相对地址合并生成多个待下载地址的测试地址生成模块1264。其中,测试文件中的一条记录标记一个测试资源的相对地址,并且相对地址的编码方式能够反映测试资源内容的变动。

根据一个实施例,由测试资源管理模块1262在每个资源目录下建立一个测试资源,例如生成100个如下的测试资源:_GUARD2016-02-18-13:00:32:12、_GUARD2016-02-18-13:00:32:13、_GUARD2016-02-18-13:00:32:14,考虑到测试资源仅作同步检测用,将测试资源的内容设为空。同时,测试资源的相对地址记录在一个index2016-18-13:00:32:12文件中,作为测试文件,关于相对地址的编码方式,可以参考列表管理单元122中对资源的相对地址的编码方式。

同样地,测试地址生成模块1264将待下载地址传送给连接管理单元124,由其发送下载请求给对应的待检测镜像服务器。由于测试资源为空文件,连接管理单元124可以通过直接下载测试资源探测其是否存在。

同步检测单元126还包括计算模块1266,适于根据待检测镜像服务器的响应结果计算该待检测镜像服务器的同步进度。例如,对于100个测试资源,根据响应结果统计得到一个待检测镜像服务器上存有30个测试资源,那么该镜像服务器的同步进度就是30%。

列表管理单元122适于根据计算得的同步进度结果更新服务器列表,在待检测镜像服务器的同步进度低于阈值时,从服务器列表中删除该镜像服务器,以便客户端定期获取更新的服务器列表。由于镜像服务器的管理是相对独立的,也就是说,镜像服务器什么时候出问题、什么时候进行同步、带宽如何等等都不受资源服务器的控制,通过同步进度检测,根据镜像服务器的同步进度来更新服务器列表,变相管理镜像服务器的同步进度,以保证客户端进行通讯的镜像服务器的有效性,以提高资源下载的效率。

应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

A4、如A1或2所述的方法,其中资源的相对地址是资源内容的hash值。A5、如A2-4中任一项所述的方法,其中资源服务器分级存储索引文件,且一级资源索引指向二级资源索引,更新索引文件的步骤,还包括步骤:从资源服务器获取一级资源索引;以及根据一级资源索引向镜像服务器获取二级资源索引。A6、如A2-4中任一项所述的方法,其中更新索引文件的步骤,还包括步骤:根据资源的内容属性分块存储索引文件,其中内容属性至少包括游戏、驱动、视音频中的一种。A7、如A1-6中任一项所述的方法,其中分析得到响应最优的镜像服务器,并从多个待下载地址中选取该响应最优的镜像服务器对应的下载地址的步骤还包括:当所有镜像服务器的响应速度均低于预设的响应速度阈值时,将资源服务器作为响应最优服务器;以及根据待下载资源的相对地址和资源服务器地址生成下载地址。A8、如A2-7中任一项所述的方法,其中资源服务器定期对所有镜像服务器的同步进度进行检测,并根据同步进度检测结果更新服务器列表的步骤包括:资源服务器在每个资源目录下建立一个测试资源,并生成测试文件,其中测试文件中的一条记录标记一个测试资源的相对地址;资源服务器将待检测的镜像服务器的地址逐一与测试文件中的每个测试资源的相对地址合并,生成多个待下载地址;根据生成的多个待下载地址,发送多个下载请求到待检测的镜像服务器;资源服务器根据待检测的镜像服务器的响应结果计算该镜像服务器的同步进度;以及若待检测的镜像服务器的同步进度低于阈值,资源服务器就从服务器列表中删除该镜像服务器,以便客户端定期获取更新的服务器列表。A9、如A8所述的方法,其中资源服务器根据待检测的镜像服务器的响应结果计算该镜像服务器的同步进度的步骤包括:根据响应结果统计待检测的镜像服务器中存在的测试资源数目;以及根据该存在的测试资源的数目和测试资源总数量计算该镜像服务器的同步进度。A10、如A8或9所述的方式,其中测试资源为空文件。A11、如A1-10中任一项所述的方法,其中资源探测请求是HTTP HEAD请求,或,自定义的HTTP GET请求,其中自定义的HTTP GET请求在得到http header后断开当前连接。

B15、如B12或13所述的装置,其中资源的相对地址是资源内容的hash值。B16、如B13-15中任一项所述的装置,其中资源服务器分级存储索引文件,且一级资源索引指向二级资源索引,接口单元适于从所述资源服务器获取一级资源索引;以及根据一级资源索引向镜像服务器获取二级资源索引。B17、如B13-15中任一项所述的装置,其中接口单元适于根据资源的内容属性分块获取索引文件;存储单元适于根据资源的内容属性分块存储索引文件,其中,内容属性至少包括游戏、驱动、视音频中的一种。B18、如B12-17中任一项所述的装置,其中第二处理单元还包括:判断模块,适于判断所有镜像服务器的响应速度是否均低于预设的响应速度阈值;第二处理单元还适于当判断得所有镜像服务器的响应速度均低于预设的响应速度阈值时,将资源服务器作为响应最优服务器、且根据待下载资源的相对地址和资源服务器地址生成下载地址。B19、如B12-18中任一项所述的装置,其中资源服务器被配置为:适于在每个资源目录下建立一个测试资源,并生成测试文件,其中所述测试文件中的一条记录标记一个测试资源的相对地址、且将待检测的镜像服务器的地址逐一与测试文件中的每个测试资源的相对地址合并,生成多个待下载地址;还适于根据生成的多个待下载地址,发送多个下载请求到待检测的镜像服务器、并根据该待检测的镜像服务器的响应结果计算该镜像服务器的同步进度;以及还适于在待检测镜像服务器的同步进度低于阈值时,从服务器列表中删除该镜像服务器以便客户端定期获取更新的服务器列表。B20、如B19所述的装置,其中资源服务器还适于根据响应结果统计待检测的镜像服务器中存在的测试资源数目,并且根据该存在的测试资源的数目和测试资源总数量计算该镜像服务器的同步进度。B21、如B19或20所述的装置,其中测试资源为空文件。B22、如B12-21中任一项所述的装置,其中资源探测请求是HTTP HEAD请求,或,自定义的HTTP GET请求,其中自定义的HTTP GET请求在得到http header后断开当前连接。

C26、如C23或24所述的资源服务器,其中列表管理单元还包括:地址编码模块,适于对资源内容做hash计算得到资源的相对地址。C27、如C23-26中任一项所述的资源服务器,其中列表管理单元还适于分级存储索引文件,并根据一级资源索引能够查找二级资源索引;以及连接管理单元还适于在响应客户端的请求后,发送一级资源索引给客户端,以便于客户端根据一级资源索引向镜像服务器获取二级资源索引。C28、如C23-26中任一项所述的资源服务器,其中列表管理单元还适于根据资源的内容属性分块存储索引文件,其中内容属性至少包括游戏、驱动、视音频中的一种。C29、如C23-28中任一项所述的资源服务器,还包括适于对所有镜像服务器进行同步检测的同步检测单元,同步检测单元包括:测试资源管理模块,适于在每个资源目录下建立一个测试资源,并生成测试文件,其中测试文件中的一条记录标记一个测试资源的相对地址;测试地址生成模块,适于将待检测的镜像服务器的地址逐一与测试文件中的每个测试资源的相对地址合并生成多个待下载地址;连接管理单元还适于发送下载请求给待检测的镜像服务器;计算模块,适于根据待检测的镜像服务器的响应结果计算该镜像服务器的同步进度;以及列表管理单元,适于在待检测镜像服务器的同步进度低于阈值时,从服务器列表中删除该镜像服务器以便客户端定期获取更新的服务器列表。C30、如C29所述的资源服务器,其中计算模块还适于根据响应结果统计待检测的镜像服务器中存在的测试资源数目,并且根据该存在的测试资源的数目和测试资源总数量计算该镜像服务器的同步进度。C31、如C29或30所述的资源服务器,其中测试资源为空文件。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。

如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。

尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1