一种数据下载方法转让专利

申请号 : CN200510112713.8

文献号 : CN1852307B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王军

申请人 : 华为技术有限公司

摘要 :

本发明提供了一种数据下载方法,其关键是由主服务器按照请求下载数据和数据源服务器的下载速度,来确定承担下载任务的被选服务器。当用户端向主服务器请求数据下载时,主服务器将主动搜索具有同样下载数据的数据源服务器,并在数据源服务器中确定被选服务器和被选服务器的下载任务。当被选服务器并行向客户端下载数据时,主服务器实时监控被选服务器下载状况,若发现某被选服务器下载不正常,主服务器将立即放弃该被选服务器,而用备用服务器替代该被选服务器的下载任务,从而达到客户端请求数据下载既快速又稳定的目的。此外,本发明还能够对下载数据进行安全性监控,以防止不良信息的传播。

权利要求 :

1.一种数据下载方法,其特征在于,该方法包括以下步骤:

a、客户端向主服务器发数据下载请求;

b、主服务器在网络中检索具有客户端请求下载数据的数据源服务器;

主服务器判断客户端请求下载的数据是否需要分割,如果需要,则将客户端请求下载的数据分割成数据片断;否则,不作分割处理,直接将下载速度最快的数据源服务器指定为被选服务器,其它的数据源服务器指定为备用服务器,并通知被选服务器其下载任务,再执行步骤d;

c1、将具有请求下载数据的数据源服务器进行组合,由客户端请求下载的数据量和每个组合中各数据源服务器下载的总速度,得到每个组合完成下载任务的时间,并选择出下载任务时间次优的组合;

c2、由选择出组合的下载任务的时间和该组合中各数据源服务器的下载速度,得到该组合中各数据源服务器的下载任务的数据量;

c3、把该组合中下载任务的数据量超过一个数据片断数据量的数据源服务器作为被选服务器,再通过被选服务器的总速度和客户端请求下载的数据量,得到被选服务器的下载时间;主服务器将未作为被选服务器且具有请求下载数据的数据源服务器作为备用服务器,所述备用服务器包括速度最快的数据源服务器;

c4、由被选服务器下载任务的时间和各被选服务器的下载速度,得到各被选服务器的下载任务的数据量,并将下载任务数据量通知给被选服务器;

d、被选服务器根据自身下载任务的数据量将数据并行下载到客户端;在被选服务器下载过程中,主服务器实时监控被选服务器下载是否正常,如果正常,则继续下载数据,直到下载完毕;如果下载不正常,则判断:如果无顺序要求的数据下载不正常,主服务器则通知下载不正常的被选服务器放弃下载任务,并重新指定备用服务器来完成下载任务;如果有顺序要求的数据下载不正常,主服务器通知该被选服务器放弃下载任务,重新指定速度最快的数据源服务器作为备用服务器来完成下载任务,并暂停顺序在后的被选服务器下载任务,等速度最快的数据源服务器下载完以后,被暂停的被选服务器才开始下载。

2.根据权利要求1所述的数据下载方法,其特征在于,所述主服务器将确定的下载数据量通知给被选服务器的方法是:主服务器判断请求下载的数据是否有顺序要求,若有,主服务器按照计算出的各被选服务器下载数据量和数据的顺序,将顺序在前的数据分配给下载速度快的被选服务器,顺序在后的数据分配给下载速度慢的被选服务器;否则,主服务器按照计算出的各被选服务器下载数据量,给被选服务器分配数据下载任务。

3.根据权利要求1或2所述的数据下载方法,其特征在于,被选服务器实时监控主服务器是否有新的下载任务,如果有,则将新的请求下载数据并行下载到相应的客户端。

4.根据权利要求1或2所述的数据下载方法,其特征在于,所述主服务器判断被选服务器下载是否正常的方法是:主服务器检查被选服务器的在预定时间段内的平均下载速度是否低于预设的下限值,如果低于下限值,则判断该被选服务器下载的速度不正常,否则,判断为正常。

5.根据权利要求1或2所述的数据下载方法,其特征在于,所述步骤d所述被选服务器根据自身下载任务的数据量将数据并行下载到客户端为:被选服务器根据自身下载任务的数据量,通过多线程下载并支持断点续传的方式将数据并行下载到客户端。

6.根据权利要求1或2所述的数据下载方法,其特征在于,在步骤d之前进一步包括:

被选服务器对下载到客户端的数据进行加密。

7.根据权利要求1或2所述的数据下载方法,其特征在于,步骤a和步骤b之间进一步包括:主服务器判断是否允许客户端请求下载的数据进行下载,如果允许,则继续执行。

说明书 :

一种数据下载方法

技术领域

[0001] 本发明涉及网络数据下载技术,特别是涉及一种数据下载方法。

背景技术

[0002] 网络数据下载技术是实现网络资源共享的关键技术之一。在相同的条件下,数据下载速度和稳定性是衡量数据下载方式优劣的重要指标,这里所说的条件是指网络带宽、服务器的性能、下载数据量等。目前的下载方式主要有基于服务器/客户端的下载方式和基于对等网络(P2P,Peer-to-Peer)的多点下载方式。
[0003] 在传统的服务器/客户端下载模式下,由于下载数据的任务靠一个服务器完成,在目前网络带宽条件下,很难实现数据文件特别是大数据量文件从服务器端快速、稳定地下载到客户端。虽然某些基于服务器/客户端模式的下载软件采用多线程下载技术和支持断点续传来加快下载速度,但在服务器/客户端模式下仍然很难突破网络带宽和服务器性能对下载速度和稳定性的限制。另一类基于P2P技术下的多点下载软件突破了传统的服务器/客户端下载模式,如BitTorrent。基于P2P技术下的多点下载技术的思想是:客户端在下载的同时还可能充当服务器的角色向请求下载数据的其它客户端传输数据。例如:客户端A向服务器请求数据下载,服务器在网络中搜索到具有请求下载数据的客户端B和客户端C,由客户端B和客户端C把不同的数据片断直接传输到客户端A;同时,客户端A可以充当服务器,把自身获得的而客户端B或客户端C没有的数据片断传输给客户端B或客户端C。这类数据下载技术克服了服务器/客户端的缺点,使客户端A请求下载的数据可以分片断从充当服务器的角色的客户端B和客户端C并行下载,从而避免传统方法下载数据缓慢的缺点。但由于这类下载方式不受服务器控制,容易造成网络阻塞问题,导致数据下载不稳定。
[0004] 由此可见,在现有技术还不能很好地实现下载速度快而且稳定的数据下载方式。

发明内容

[0005] 有鉴于此,本发明的主要目的在于提供一种快速而稳定的数据下载方法。为了达到上述目的,本发明提出的技术方案为:
[0006] 一种数据下载方法,该方法包括以下步骤:
[0007] a、客户端向主服务器发数据下载请求;
[0008] b、主服务器在网络中检索具有客户端请求下载数据的数据源服务器;
[0009] 主服务器判断客户端请求下载的数据是否需要分割,如果需要,则将客户端请求下载的数据分割成数据片断;否则,不作分割处理,直接将下载速度最快的数据源服务器指定为被选服务器,其它的数据源服务器指定为备用服务器,并通知被选服务器其下载任务,再执行步骤d;
[0010] c1、将具有请求下载数据的数据源服务器进行组合,由客户端请求下载的数据量和每个组合中各数据源服务器下载的总速度,得到每个组合完成下载任务的时间,并选择出下载任务时间次优的组合;
[0011] c2、由选择出组合的下载任务的时间和该组合中各数据源服务器的下载速度,得到该组合中各数据源服务器的下载任务的数据量;
[0012] c3、把该组合中下载任务的数据量超过一个数据片断数据量的数据源服务器作为被选服务器,再通过被选服务器的总速度和客户端请求下载的数据量,得到被选服务器的下载时间;主服务器将未作为被选服务器且具有请求下载数据的数据源服务器作为备用服务器,所述备用服务器包括速度最快的数据源服务器;
[0013] c4、由被选服务器下载任务的时间和各被选服务器的下载速度,得到各被选服务器的下载任务的数据量,并将下载任务数据量通知给被选服务器;
[0014] d、被选服务器根据自身下载任务的数据量将数据并行下载到客户端;在被选服务器下载过程中,主服务器实时监控被选服务器下载是否正常,如果正常,则继续下载数据,直到下载完毕;如果下载不正常,则判断:如果无顺序要求的数据下载不正常,主服务器则通知下载不正常的被选服务器放弃下载任务,并重新指定备用服务器来完成下载任务;如果有顺序要求的数据下载不正常,主服务器通知该被选服务器放弃下载任务,重新指定速度最快的数据源服务器作为备用服务器来完成下载任务,并暂停顺序在后的被选服务器下载任务,等速度最快的数据源服务器下载完以后,被暂停的被选服务器才开始下载。。
[0015] 为了保证数据下载地顺序性,所述主服务器将确定的下载数据量通知给相应被选服务器的方法是:
[0016] 主服务器判断请求下载的数据是否有顺序要求,若有,主服务器按照计算出的各被选服务器下载数据量和数据的顺序,将顺序在前的数据分配给下载速度快的被选服务器,顺序在后的数据分配给下载速度慢的被选服务器;否则,主服务器按照计算出的各被选服务器下载数据量,给被选服务器分配数据下载任务。
[0017] 为了能同时处理新的下载任务,被选服务器实时监控主服务器是否有新的下载任务,如果有,则将新的请求下载数据并行下载到相应的客户端。
[0018] 进一步地,所述主服务器判断被选服务器下载是否正常的方法是:
[0019] 主服务器检查被选服务器的在预定时间段内的平均下载速度是否低于预设的下限值,如果低于下限值,则判断该被选服务器下载的速度不正常,否则,判断为正常。
[0020] 为了更快地下载数据,所述步骤d所述被选服务器根据自身下载任务的数据量将数据并行下载到客户端为:被选服务器根据自身下载任务的数据量,通过多线程下载并支持断点续传的方式将数据并行下载到客户端。
[0021] 进一步地,在步骤d之前进一步包括:被选服务器对下载到客户端的数据进行加密。
[0022] 为了保证数据传播的安全性,步骤a和步骤b之间进一步包括:主服务器判断是否允许客户端请求下载的数据进行下载,如果允许,则继续执行。
[0023] 综上所述,本发明提出的基于多服务器的并行数据下载方法具有以下优点:
[0024] 第一、在本发明中,当主服务器接收到客户端的下载请求时,将主动搜索具有下载数据的数据源服务器,并指定被选服务器和下载任务,由被选服务器将数据并行下载到客户端。其中,被选服务器可以是主服务器,可以是由主服务器控制的从服务器,还可以是有上传功能的客户端,所以,本发明可以避免传统的服务器/客户端模式的下载方式中,数据通常由主服务器完成下载而造成的阻塞问题。
[0025] 第二、本发明中,主服务器分配任务时,考虑了被选服务器的下载速度和下载数据的数据量大小,可以选择速度最快的服务器组合进行下载,从而提高了下载速度。
[0026] 第三、本发明中,主服务器将实时监控下载情况,当下载不正常时,可以用备用服务器承担下载任务,保证下载的稳定性。
[0027] 第四、本发明中,主服务器对下载数据进行监控,可以有效地防止不良信息在网络中的传播扩散。

附图说明

[0028] 图1是应用本发明方案的组网图;
[0029] 图2是本发明方案中的触发机制一消息流示意图;
[0030] 图3是本发明方案中的触发机制二消息流示意图;
[0031] 图4是应用本发明方案的实施例一流程图。

具体实施方式

[0032] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
[0033] 本发明的基本构思是:客户端向主服务器发数据下载请求,当主服务器在网络中检索到有请求下载数据的数据源服务器时,主服务器从检索到的数据源服务器中确定承担下载任务的被选服务器,主服务器再确定每个被选服务器的下载数据量,将确定的下载数据量分配给相应被选服务器,并将下载任务分别通知每个确定的被选服务器,然后再由被选服务器将数据下载到客户端。
[0034] 本实施例的组网图如图1所示,包括的网元有主服务器、从服务器1至从服务器n、具有上传功能的客户端1至客户端n,各种网元通过IP协议网络进行连接。在图1中,具有用户请求数据的网元在本发明中被称为数据源服务器,数据源服务器可以是主服务器或从服务器,也可以是具有上传功能的客户端。在本发明中,被选服务器是指已经指定承担下载任务的数据源服务器。
[0035] 本实施例中,主服务器通知被选服务器下载任务时,需要建立一个下载任务列表,该任务列表可以包括数据标识、片断标识和用户标识三项内容。任务列表中的数据标识可以指定需要下载的数据位于被选服务器哪个文件中;片断标识可以指定文件中哪个数据片断是需要下载的;用户标识可以指定下载路径,即请求下载客户端的IP地址或电话号码等唯一识别标记。在实际应用中,也可以采用其它的形式来通知被选服务器明确各自的下载任务和下载路径。
[0036] 本实施例中,当下载数据任务分配完毕以后,可以通过以下两种触发机制来开始下载数据。图2显示了触发机制一的消息流示意图,具体方法是:客户端向主服务器发下载请求;主服务器指定并通知被选服务器的下载任务;被选服务器明确自身的下载任务以后,向主服务器发送下载分配完毕的响应消息;主服务器向客户端发送消息询问是否下载;客户端向主服务器发送开始下载的确认下载消息;主服务器向被选服务器发送开始下载的指令;被选服务器开始向客户端传输下载数据。图3显示了触发机制二的消息流示意图,具体方法是:客户端向主服务器发下载请求;主服务器指定并通知被选服务器的下载任务;
被选服务器明确自身的下载任务以后,向主服务器发送响应消息;被选服务器向客户端发送消息询问是否下载;客户端向被选服务器发送开始下载的确认下载消息;被选服务器开始向客户端传输下载数据。
[0037] 实施例一:
[0038] 本实施例组网环境如图1所示,主服务器、从服务器1至n、客户端1至n都通过IP协议网络相互连接。本实施例中,假定客户端1向主服务器请求下载一个无顺序要求的安全的数据;请求下载的数据量为100兆;主服务器中预设的最大数据片断的值为20兆;从服务器1至4以及客户端2有客户端1请求下载的数据;从服务器1的下载速度为2兆每秒,从服务器2的下载速度为1兆每秒,从服务器3的下载速度为0.05兆每秒,从服务器
4下载速度为0.04兆每秒,客户端2下载速度为0.05兆每秒;主服务器预设的最低阀值为一分钟内平均下载速度值为0.01兆每秒。上述的速度值都是在假定各数据源服务器一直保持下载状态的情况下,得到的平均下载速度。
[0039] 参照图4,本实施例中实现数据下载的过程包括以下步骤:
[0040] 步骤401:客户端1向主服务器发出下载数据请求。
[0041] 步骤402:主服务器判断该数据是否允许下载,如果允许,则执行下一步,否则;结束下载任务。
[0042] 本实施例中,假定客户端1请求下载的数据是安全的,应该执行下一步。
[0043] 步骤403:主服务器在网络中检索具有请求下载数据的数据源服务器。
[0044] 本实施例中,主服务器检索到从服务器1至4以及客户端2有客户端1请求下载的数据。这里,主服务器如何检索到具有请求下载数据的数据源服务器属于现有技术,在此不再赘述。
[0045] 步骤404:主服务器判断数据是否需要分割,如果需要,则将数据进行分割;否则,直接将下载速度最快的数据源服务器中指定为被选服务器,其它的数据源服务器指定为备用服务器,再执行步骤409。
[0046] 本实施例中,请求下载的数据量为100M,而主服务器预设的最大数据片断为20M,所以需要分割请求数据为5个数据片断。
[0047] 本实施例中,是将请求下载的数据进行平均分割的,但在实际应用中,也可以将请求数据分割成不相等的数据片断。
[0048] 本实施例中,主服务器判断数据是否应该被分割,是与预设的数据片断最大值进行比较,如果超过这个预设值,就应该进行分割,否则,不作处理。在实际应用中,预设的最大数据量值可以由应用本发明方案的使用者自行决定,主要根据应用环境中的服务器性能、网络状况等因素来确定。
[0049] 步骤405:主服务器将具有请求下载数据的数据源服务器进行组合,由客户端1请求下载的数据量和每个组合中各数据源服务器下载的总速度,得到每个组合完成下载任务的时间,再选择出下载任务的时间最小的组合。
[0050] 本实施例中,显然,因为包括所有的数据源服务器的组合的总速度最大,所以,这个组合的下载时间也最小,为100/3.014秒。
[0051] 本实施例中,主服务器根据请求下载的数据量和各数据源服务器的下载速度来确定被选服务器,并选择下载速度最快的组合作为被选服务器。实际应用中,也可以参考其它条件来确定被选服务器,如数据源服务器到请求下载的客户端地理位置、数据源服务器到请求下载的客户端的网络工作状态等。主服务器确定的被选服务器组合也可以不是下载速度最优的组合,而是次优的组合,这样就可以将速度最快的数据源服务器作为备用服务器,当被选服务器工作不正常时由速度最快的数据源服务器完成下载任务,保证数据,特别是有顺序数据下载的稳定性。
[0052] 步骤406:主服务器由选出的组合的下载时间和组合中各数据源服务器的下载速度,得到各数据源服务器的下载任务的数据量,然后,将下载任务数据量超过一个数据片断的作为被选服务器。
[0053] 本实施例中,假定从服务器1的下载速度为2兆每秒,从服务器2的下载速度为1兆每秒,从服务器3的下载速度为0.05兆每秒,从服务器4下载速度为0.04兆每秒,客户端2下载速度为0.05兆每秒,由步骤405得到下载时间为100/3.014秒,那么,可以得到从服务器3、从服务器4以及客户端2的下载任务数据量将低于数据片断的数据量。所以,应该将从服务器1和从服务器2作为被选服务器,而从服务器3、从服务器4以及客户端2作为备用服务器。
[0054] 步骤407:主服务器根据请求下载的数据量和被选服务器的下载总速度得到下载时间,再由下载时间和各被选服务器的下载速度,得到各被选服务器的下载任务数据量。
[0055] 本实施例中,得到下载时间应该为100/3秒,从服务器1的下载任务数据量应该为200/3兆,即应该将三个数据片断分配给从服务器1,从服务器2的下载任务数据量应该为
100/3兆,即应该将两个数据片断分配给从服务器2。
[0056] 本实施例中,主服务器分配任务时,是根据被选服务器的下载速度来决定下载任务的数据量的,而且规定一个数据片断由一个被选服务器完成下载任务。在实际应用中,主服务器也可以将同一个数据片断分配给多个被选服务器。这是因为实际应用中的被选服务器下载速度经常会变化,网络的性能也可能不稳定的,下载速度快的被选服务器可能在下载过程速度变慢,而下载速度快的被选服务器也可能在下载过程速度变慢。如果多个被选服务器同时下载同一个数据片断,就可以在该数据片断最先到达客户端以后,放弃其它被选服务器对该数据片断的下载任务,从而保证数据较快地到达客户端。其中,主服务器可以通过向被选服务器发PING命令来计算得到被选服务器的下载速度,也可以通过其它方法得到被选服务器的下载速度。
[0057] 步骤408:主服务器判断数据是否有顺序要求,如果有,则按照各被选服务器的下载任务,并将顺序在前的数据片断分配给速度快的被选服务器,顺序在后的数据片断分配给速度慢的被选服务器;否则,只按照各被选服务器的下载任务数据量进行分配。
[0058] 本实施例中,假定请求下载的数据无顺序要求,则主服务器只按照各被选服务器的下载任务进行分配,而不考虑顺序性。
[0059] 步骤409:主服务器创建任务列表,通知每个被选服务器的下载任务,被选服务器明确任务以后,将数据进行加密,并采用触发机制二,然后通过多线程、支持断点续传的方式开始进行数据下载。
[0060] 本实施例中,加密算法可以采用公知的公钥加密RSA算法、数字签名DSA算法、椭圆曲线加密ECC算法等进行加密;数据加密标准可以是美国数据加密标准DES、高级加密标准AES和欧洲数据数据加密标准DES等。
[0061] 本实施例中,采用触发机制二来开始下载。实际应用中,还可以采用其它的触发机制。
[0062] 步骤410:主服务器实时监控被选服务器数据下载是否正常,如果正常,则继续下载数据,当数据下载完毕以后,执行步骤412;否则,执行步骤411。
[0063] 本实施例中,假定被选服务器下载保持正常的速度,则主服务器不作处理,当数据下载完毕之后,执行步骤412。
[0064] 本实施例中,主服务器根据被选服务器的下载速度,与预设的下载速度最低值进行比较来判断被选服务器的下载是否正常。
[0065] 步骤411:主服务器判断数据是否有顺序要求,如果有,则放弃下载不正常的被选服务器下载任务,暂停顺序在后的被选服务器下载任务,指定备用服务器来替代下载不正常的被选服务器的下载任务,当备用服务器完成下载任务以后,主服务器通知顺序在后的被选服务器继续开始下载,再返回步骤410;否则,放弃下载不正常的被选服务器下载任务,并指定备用服务器来替代下载不正常的被选服务器的下载任务,再返回步骤410。
[0066] 步骤412:主服务器通知客户端1数据下载工作已经完成,客户端将各数据片断进行拼接,然后结束数据下载。
[0067] 本实施例中,步骤404至步骤409实现了主服务器分割数据、指定被选服务器和被选服务器的下载数据量,并把下载任务分配给被选服务器,然后由被选服务器下载到客户端。实际应用中,主服务器可以采用其它方法来确定被选服务器,并且按照被选服务器的下载速度可以把数据分割成大小不等的数据片断,然后分配给被选服务器进行下载。
[0068] 综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。