[0032] 下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。
[0033] 参加附图1,其示出了本发明方法所应用的系统环境逻辑结构图。系统中包括一个调度服务器和多个下载服务器,以及多个下载客户端。所述调度服务器、下载服务器和客户端通过互联网相互连接和通信。
[0034] 所述下载服务器用于存储可下载的文件,并在调度服务器的安排下,与客户端建立下载连接,向客户端传输其指定的文件。基于本发明的方法,相同的文件可以存储于一个或多个下载服务器中。
[0035] 所述调度服务器有两方面的作用。其一是在接受客户端的下载请求后,确定所要下载文件所在的一个或多个下载服务器,从这些下载服务器中选择负载最轻的下载服务器,指示该负载最轻的服务器与客户端建立连接提供下载服务。这种负载均衡的方法在现有技术中已经有多种实现方案。其二是本发明所提供的方法,即根据每个文件的下载情况,确定存储该文件的下载服务器。
[0036] 首先说明一般的下载过程,客户端根据从网页上获取的下载链接url提出下载请求,这一下载链接首先指向调度服务器,调度服务器根据下载链接中包括的下载文件,确定存储该文件的下载服务器,从而通知客户端和下载服务器建立下载连接,客户端直接从该下载服务器下载文件。
[0037] 在初始状态时,提供下载的文件只存在于一台下载服务器中,如果该文件比较热门,针对该文件的下载请求可能很多,这会给该下载服务器带来很大的压力。因此,此时需要针对该文件,增加下载服务器。另一方面,文件的下载热度通常只是局限于一段时间内,在这一段时间过后,文件的下载请求会减少,此时继续给该文件提供多台下载服务器就不再必要。因此,需要根据文件的下载情况动态调整该文件的下载服务器。
[0038] 下面具体说明本发明的方法步骤:
[0039] 步骤100:初始状态下,即文件初始提供下载时,将该文件仅存储于一台下载服务器中。
[0040] 具体的,网站管理人员将该文件加入可下载列表时,从网站所有的下载服务器中选择一台,将该文件存储于所选择的下载服务器,并将该文件的相关信息存储于调度服务器中,所述相关信息包括文件的下载链接、文件的实际存储位置、文件的大小等等。
[0041] 其中,初始选择的下载服务器可以根据现有下载服务器的存储状态选择,例如选择当前存储可下载文件数量最少的下载服务器,或者当前存储的可下载文件的总容量最小的下载服务器。也可以根据下载服务器的在过去一段时间内的负荷状态进行选择,例如选择负荷最小的下载服务器。
[0042] 步骤200:调度服务器定时计算在过去的第一时间段内每个文件的绝对压力值。
[0043] 优选的,调度服务器可以在每天24点时进行步骤200的计算,所述第一时间段可以根据具体情况由管理员确定,优选情况下,所述第一时间段为一星期7天。这样,根据本发明的优选实施例,调度服务器就在每天24点时,计算每个文件在过去7天内的绝对压力值。
[0044] 一个文件的绝对压力值指的是该文件的总下载数据量(通常以字节为单位),即该文件在每个下载服务器的下载数据量之和。简单情况下,如果过去7天内文件被下载的次数为count,文件的大小为size,则过去7天内该文件的绝对压力值=size×count,这一公式可以粗略估计总下载数据量。但是在实际应用中,并不一定每次下载请求都下载了完整的文件,下载过程可能会被中断,因此如果需要精确计算,就不能简单的应用上述公式,而需要每个下载服务器统计该文件的实际下载的数据量,并上报给调度服务器,由调度服务器计算实际下载数据量的总和,作为其绝对压力值。
[0045] 通常情况下,粗略估计就已经足够,可以在误差范围内接受。精确计算虽然准确,但是耗费系统资源比较大。具体采用粗略计算还是精确计算,取决于整体策略。但是无论采用哪种方法,调度服务器都可依据预定方法,完成步骤200的计算。
[0046] 步骤300:如果一个文件F在过去的第一时间段内的绝对压力值超过第一阈值,则调度服务器计算该文件F在过去的第二时间段内的相对压力值,其中第二时间段小于第一时间段。
[0047] 优选的,第一时间段为7天,第二时间段为1天。所述第一阈值可以根据具体策略事先确定,也就是说,当一个文件在过去一周的下载数据量超过该第一阈值后,可以判断该文件的下载需求较高,可能需要给该文件增加下载服务器。但是,仅仅一周内下载需求高并不一定就需要增加下载服务器,还需要看该文件的下载是否在短时间内给整个系统带来了较大的下载压力,这就是相对压力值。
[0048] 具体的,针对一个文件F,当调度服务器判断该文件F在过去的第一时间段内的绝对压力值超过第一阈值后,调度服务器立即计算该文件F在过去的第二时间段内的相对压力值PF,具体计算方法如下:
[0049] 步骤310:假设该文件F存储于n个下载服务器上,则这n个下载服务器分别计算自身在过去的第二时间段内的负载等级。
[0050] 所述负载等级用于表示下载服务器的负载情况,优选的,服务器的负载可以分为三个等级:低负载、中负载和高负载。现有技术中已经有了多种划分计算机负载等级的技术,本发明都可以使用。
[0051] 当所述第二时间段是1天时,所述负载等级表示的是过去一天内下载服务器的平均负载。基于本发明的一个优选实施例,可以统计下载服务器在过去一天内的数据吞吐量,基于该数据吞吐量的大小划分负载等级。例如,数据吞吐量小于预定的低负载阈值时,负载等级为低,数据吞吐量大于低负载阈值但是小于高负载阈值时,负载等级为中,数据吞吐量大于高负载阈值时,负载等级为高。由此划分为三个负载等级。
[0052] 为了后续计算,本发明给每个负载等级都赋予了一个权重值,同样以上述三个负载等级为例,低负载的权重为0,中负载的权重为1,高负载的权重为2。如果划分为更多的负载等级,也需要设置更多的权重值。
[0053] 步骤320:记所述n个下载服务器为分别为Server1,Server2,……,Servern,则其中每个Serveri(1≤i≤n)计算所述文件F在过去第二时间段内在该Serveri上产生的相对压力值Ai,即:Ai=WiDi/Si。
[0054] 其中,Wi是Serveri的负载等级的权重值,Di是过去第二时间段内的该文件F在Serveri上产生的下载数据量,Si则是Serveri在过去第二时间段内产生的总下载数据量(即所有文件在Serveri上产生的下载数据量)。
[0055] 由此可以看出,基于权重的设置,在高负载服务器上,文件F产生的相对压力值越高,反之亦然。例如,在低负载的下载服务器上,由于其权重为0,则文件F产生的相对压力值也为0。并且,文件F产生的相对压力值与该文件产生的下载量比例正相关。
[0056] 步骤330:计算该文件F在过去的第二时间段内的相对压力值PF,即[0057]
[0058] 其中,PF_old是该文件F上一次计算得到的相对压力值,文件F的相对压力值的初始值为0,K是预先设置的衰减系数,0<K<1。
[0059] 例如,当第二时间段为1天时,调度服务器在每天的24点计算文件的绝对压力值和相对压力值,那么PF_old就是前一天24点计算得到的相对压力值(第一次计算时,PF_old为初始值0),由于衰减系数的存在,旧的相对压力值的影响逐渐减小。由此计算得到的相对压力值可以衡量文件F在过去一段时间内对整个系统的相对负载压力。
[0060] 步骤300包括上述步骤310-330,从而使得调度服务器计算得到每个文件在过去第二时间段内的相对压力值。
[0061] 步骤400:调度服务器根据文件F在过去第二时间段内的相对压力值PF,确定存储该文件F的下载服务器数量,并据此调整存储该文件的下载服务器。
[0062] 具体的,根据本发明的一个优选实施例,可以采用以下方式确定文件F的下载服务器数量,
[0063] 如果PF<T1,且n>1,则将存储文件F的下载服务器的数量减少一个,其中T1是预先确定的第二阈值,n是当前存储该文件F的下载服务器的数量;
[0064] 如果T1≤PF≤T2,则维持存储文件F的下载服务器的数量不变;其中T2是预先确定的第三阈值;
[0065] 如果T2<PF≤2T2,则将存储文件F的下载服务器的数量增加一个;
[0066] 如果2T2<PF≤3T2,则将存储文件F的下载服务器的数量增加2个;
[0067] 依次类推,即如果mT2<PF≤(m+1)T2,则将存储文件F的下载服务器的数量增加m个。当然,下载服务器的数量是有限的,当增加后的下载服务器数量超过下载服务器数量的最大值后,就直接设置下载服务器数量为所述最大值。
[0068] 从上述过程可以看出,当相对压力值减小时,下载服务器的数量只是逐步的每次减少一个,这样可以应对相对压力值只是由于偶然减少的情况。而如果相对压力值增加较大,则下载服务器的数量也相应增加较快,这样可以应对文件下载需求迅速上升的情况。
[0069] 此外,如果一个文件在过去的第一时间段内的绝对压力值小于第一阈值,则可以直接将该文件的下载服务器数量设置为1。
[0070] 在确定了增减文件F的下载服务器的数量后,调度服务器可以根据下载服务器的负载等级来确定增加或减少哪些下载服务器。通常而言,如果需要增加下载服务器,则可以选择低负载的下载服务器,如果需要减少下载服务器,则可以选择高负载的下载服务器。本领域技术人员也可以选择其他方法进行调整,本发明对此不作限制。
[0071] 通过本发明的上述方法,可以根据下载服务器中每个文件的下载需求,对文件在各个下载服务器的存储情况进行调整,从而平衡了下载服务器的负载。
[0072] 以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。