CN102164160B - 支持大并发量文件下载的方法、装置及系统 - Google Patents
支持大并发量文件下载的方法、装置及系统 Download PDFInfo
- Publication number
- CN102164160B CN102164160B CN201010624817.8A CN201010624817A CN102164160B CN 102164160 B CN102164160 B CN 102164160B CN 201010624817 A CN201010624817 A CN 201010624817A CN 102164160 B CN102164160 B CN 102164160B
- Authority
- CN
- China
- Prior art keywords
- file
- download server
- download
- server
- list
- 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.)
- Active
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种支持大并发量文件下载的方法、装置及系统,涉及计算机通信领域,降低大并发量下载对服务器造成的下载压力。一种支持大并发量文件下载的方法,包括:下载控制服务器接收客户端的下载服务器查询请求消息;根据所述下载服务器查询请求消息,并依据缓存文件分布和下载服务器的负载情况,获取一个下载服务器;将所述获取的一个下载服务器的地址发送给所述客户端,指示客户端从所述地址对应的下载服务器中下载文件。本发明实施例用于提供文件下载的计算机网络,缓解了大并发量文件下载时服务器的处理瓶颈问题。
Description
技术领域
本发明涉及计算机通信领域,尤其涉及在网络中支持大并发量文件下载的方法、装置及系统。
背景技术
随着计算机网络技术的发展,通过网络共享的各种文件越来越多,提供应用的服务器中存储了大量的应用文件以供用户进行下载。常见的网络文件传输方式主要为C/S(client/server,客户端/服务器)模式,当出现热门文件或是提供升级服务的系统在发布新的升级文件时,用户终端会集中在短时间内下载升级文件,造成服务器的并发下载压力。为缓解服务器的大并发量下载压力,常使用增加新的服务器的方式来满足下载需求,减轻大并发量下载压力。现有技术还提供一种通过缓存方式提高下载速度以减轻大并发量下载压力的方案,通过缓存技术,将文件存入服务器的缓存,当大量用户下载文件时,直接访问服务器的缓存,而不必频繁对文件服务器硬盘进行读取访问,以提高下载的速度。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
使用增加新的服务器的方式来缓解大并发量下载压力,当服务器数量较多时,对于提供下载服务的多台服务器缺乏有效的综合管理和负载分配机制,因而不能满足并发下载量持续增加的要求。
在使用缓存技术的方案中,当服务器中有大量文件的缓存时,由于缺乏对被缓存文件的管理调节,在并发下载量继续增加时仍会出现并发下载压力。
发明内容
本发明的实施例提供一种支持大并发量文件下载的方法、装置、系统,能进一步降低大并发量下载对服务器造成的下载压力。
为达到上述目的,本发明的实施例采用如下技术方案:
一种支持大并发量文件下载的方法,包括:
下载控制服务器接收客户端的下载服务器查询请求消息;
根据所述下载服务器查询请求消息,并依据缓存文件分布和下载服务器的负载情况,获取一个下载服务器;
将所述获取的一个下载服务器的地址发送给所述客户端,指示客户端从所述地址对应的下载服务器中下载文件;
其中,所述根据所述下载服务器查询请求消息,并依据缓存文件分布和下载服务器的负载,获取下载服务器,包括:
根据所述下载服务器查询请求消息,查询文件服务器中是否存在所述请求文件;
记录所述请求文件的大小;
若存在所述请求文件,则查询所述请求文件是否已在下载服务器的缓存中;
若所述请求文件已在下载服务器的缓存中,则从所述缓存有请求文件的下载服务器中选取一个客户端连接数小于既定最大连接数且客户端数量最少的下载服务器;
若所述请求文件不在下载服务器的缓存中,或是缓存有请求文件的下载服务器中的客户端连接数均大于等于既定最大连接数,则从下载控制服务器所管辖的所有下载服务器中选取一个处于在线状态的下载服务器;
所述下载控制服务器中还维护了一个下载服务器列表,一个已缓存文件列表,一个未缓存文件列表;
所述下载服务器列表中的信息包括:所有下载服务器的地址及连接状态,每台下载服务器的当前连接数、可用内存、时间记录;
所述已缓存文件列表中的信息包括:已存储到某下载服务器的内存中并可进行缓存下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间及缓存文件的下载服务器地址;
所述未缓存文件列表中的信息包括:未存储到下载服务器的内存中并可进行普通下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间。
一种支持大并发量文件下载的装置,包括:
服务器请求接收单元,用于接收客户端的下载服务器查询请求消息;
服务器获取单元,用于根据所述下载服务器查询请求消息,并依据缓存文件分布和下载服务器的负载情况,获取一个下载服务器;
服务器请求返回单元,用于将所述获取的一个下载服务器的地址发送给所述客户端,指示客户端从所述地址对应的下载服务器中下载文件;
所述服务器获取单元,还包括:
第一查询模块,用于根据所述下载服务器查询请求消息,查询文件服务器中是否存在所述请求文件;
第一记录模块,用于记录所述请求文件的大小;
第二查询模块,用于当文件服务器中存在所述请求文件时,查询所述请求文件是否已在下载服务器的缓存中;
第一选择模块,用于当所述请求文件已在下载服务器的缓存时,获取缓存有所述请求文件的下载服务器,并从所述缓存有请求文件的下载服务器中选取一个客户端连接数小于既定最大连接数且客户端数量最少的下载服务器;
第二选择模块,用于当所述请求文件不在下载服务器的缓存中,或是缓存有请求文件的下载服务器中的客户端连接数均大于等于既定最大连接数时,从下载控制服务器所管辖的所有下载服务器中,选取一个处于在线状态的下载服务器;
所述下载控制服务器中还维护了一个下载服务器列表,一个已缓存文件列表,一个未缓存文件列表;
所述下载服务器列表中的信息包括:所有下载服务器的地址及连接状态,每台下载服务器的当前连接数、可用内存、时间记录;
所述已缓存文件列表中的信息包括:已存储到某下载服务器的内存中并可进行缓存下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间及缓存文件的下载服务器地址;
所述未缓存文件列表中的信息包括:未存储到下载服务器的内存中并可进行普通下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间。
一种支持大并发量文件下载的系统,包括:
客户端,用于向下载控制服务器发送下载服务器查询请求消息,所述下载服务器查询请求消息中携带需下载文件的标识;
下载控制服务器,用于接收客户端的下载服务器查询请求消息;根据所述下载服务器查询请求消息,并依据缓存文件分布和下载服务器的负载情况,获取一个下载服务器;将所述获取的一个下载服务器的地址发送给所述客户端,指示客户端从所述地址对应的下载服务器中下载文件;
其中,所述依据缓存文件分布和下载服务器的负载情况,获取下载服务器,包括:
根据所述下载服务器查询请求消息,查询文件服务器中是否存在所述请求文件;
记录所述请求文件的大小;
若存在所述请求文件,则查询所述请求文件是否已在下载服务器的缓存中;
若所述请求文件已在下载服务器的缓存中,则从所述缓存有请求文件的下载服务器中选取一个客户端连接数小于既定最大连接数且客户端数量最少的下载服务器;
若所述请求文件不在下载服务器的缓存中,或是缓存有请求文件的下载服务器中的客户端连接数均大于等于既定最大连接数,则从下载控制服务器所管辖的所有下载服务器中选取一个处于在线状态的下载服务器;
所述客户端还用于在接收到下载控制服务器返回的下载服务器地址后,向所述返回的下载服务器地址发起文件下载请求消息;
所述下载控制服务器中还维护了一个下载服务器列表,一个已缓存文件列表,一个未缓存文件列表;
所述下载服务器列表中的信息包括:所有下载服务器的地址及连接状态,每台下载服务器的当前连接数、可用内存、时间记录;
所述已缓存文件列表中的信息包括:已存储到某下载服务器的内存中并可进行缓存下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间及缓存文件的下载服务器地址;
所述未缓存文件列表中的信息包括:未存储到下载服务器的内存中并可进行普通下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间。
本发明实施例提供的支持大并发量文件下载的方法、装置、系统,下载控制服务器通过由分析缓存文件及判断下载服务器的负载情况组成的负载均衡原则,选出下载压力最小的一台下载服务器提供文件下载服务。当出现大并发量下载的情况时,下载控制服务器依照所述负载均衡原则对各下载服务器进行任务分担,实现了对大并发量文件下载任务的优化分配,从而减轻了大并发量文件下载对服务器造成的下载压力。
附图说明
图1为本发明实施例1中支持大并发量文件下载的方法的流程图;
图2为本发明实施例1中支持大并发量文件下载的装置的框图;
图3为本发明实施例1中支持大并发量文件下载的系统的框图;
图4为本发明实施例2中支持大并发量文件下载的方法的流程图;
图5为本发明实施例2中支持大并发量文件下载的方法的流程图;
图6为本发明实施例2中支持大并发量文件下载的方法的流程图;
图7为本发明实施例2中支持大并发量文件下载的方法的流程图;
图8为本发明实施例3中支持大并发量文件下载的装置的框图;
图9为本发明实施例3中支持大并发量文件下载的装置的框图;
图10为本发明实施例3中支持大并发量文件下载的装置的框图;
图11为本发明实施例3中支持大并发量文件下载的装置的框图;
图12为本发明实施例3中支持大并发量文件下载的装置的框图;
图13为本发明实施例4中支持大并发量文件下载的系统的框图。
具体实施方式
下面结合本发明实施例的附图对本发明实施例的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实例1:
本发明实施例公开了一种支持大并发量文件下载的方法,如图1所示,包括以下步骤:
101、下载控制服务器接收客户端的下载服务器查询请求消息,所述下载服务器查询请求消息中携带了所述客户端需下载的文件的标识。
102、下载控制服务器根据所述下载服务器查询请求消息,并依据缓存文件分布和下载服务器的负载情况,获取一个下载服务器。
103、将所述获取的一个下载服务器的地址发送给所述客户端,指示客户端从所述地址对应的下载服务器中下载文件。
本发明实施例还公开了一种支持大并发量文件下载的装置,如图2。所述支持大并发量文件下载的装置包括:服务器请求接收单元21,服务器获取单元22,服务器请求返回单元23。
客户端向下载控制服务器发出服务器查询请求后,服务器请求接收单元21接收所述客户端的下载服务器查询请求消息;服务器获取单元22根据所述下载服务器查询请求消息,并依据缓存文件分布和下载服务器的负载情况,获取一个下载服务器;然后,服务器请求返回单元23将所述获取的一个下载服务器的地址发送给所述客户端,指示客户端从所述地址对应的下载服务器中下载文件。
本发明实施例还公开了一种支持大并发量文件下载的系统,如图3所示,包括客户端31、下载控制服务器32。所述客户端一般在两个或两个以上,本实施例以客户端31为例进行说明。客户端31向下载控制服务器32发送下载服务器查询请求消息,所述下载服务器查询请求消息中携带需下载文件的标识。下载控制服务器32接收客户端31的下载服务器查询请求消息后,根据所述下载服务器查询请求消息,并依据缓存文件分布和各下载服务器的负载情况,获取一个下载服务器,将所述获取的一个下载服务器的地址发送给客户端31,指示客户端31从所述地址对应的下载服务器中下载文件。客户端31在接收到下载控制服务器32返回的下载服务器地址后,向所述返回的下载服务器地址发起文件下载请求消息。
本实施例提供的一种支持大并发量文件下载的方法、装置及系统,当出现大并发量下载的情况时,通过对缓存文件分布和下载服务器的负载情况的分析,从所有下载服务器中获取一个下载压力最小的下载服务器向客户端提供文件下载服务。实现了负载的均衡分配,减轻了大并发量文件下载对服务器造成的下载压力。
实例2:
本发明实施例公开了一种支持大并发量文件下载的方法,如图4所示,包括以下步骤:
401、客户端发起下载请求后,下载控制服务器接收客户端的下载服务器查询请求消息,所述下载服务器查询请求消息中携带了所述客户端需下载的文件的标识。
402、根据所述下载服务器查询请求消息中的文件的标识,查询文件服务器中是否存在所述请求文件,若不存在所述请求文件,转向步骤403;若存在所述请求文件,则转向步骤404。
403、下载控制服务器通知客户端不存在所述请求文件,结束客户端本次下载请求。
404、记录所述请求文件的大小。
405、查询所述请求文件是否已在下载服务器的缓存中,如果所述请求文件已在下载服务器的缓存中,转向步骤406;如果所述请求文件不在任何下载服务器的缓存中,转向步骤408。
406、在缓存有请求文件的下载服务器中选取一个最优下载服务器,所述最优下载服务器的客户端连接数小于既定最大连接数且客户端连接数最少,如果存在所述最优下载服务器,则转向步骤408;如果不存在所述最优下载服务器,转向步骤407。
407、在所述请求文件不在任何下载服务器的缓存中、或是不存在所述最优下载服务器的情况下,下载控制服务器从所管辖的所有下载服务器中,选取一个处于在线状态的下载服务器。
408、将所述最优下载服务器的地址、或所述选出的处于在线状态的下载服务器的地址返回给客户端,结束本次过程。
在步骤407中,所述选取一个处于在线状态的下载服务器的选择过程如图5所示,包括以下步骤:
501、从下载控制服务器的下载服务器列表中选择处于在线状态并且客户端连接数小于既定最大连接数的下载服务器的集合,如果不存在所述下载服务器的集合,转向步骤502;如果存在所述下载服务器的集合,转向步骤503。
502、下载控制服务器通知客户端不存在可用的下载服务器,结束客户端本次下载请求。
503、在所述下载服务器的集合中,选择可用内存容量大于请求文件大小的一组下载服务器,如果选择出可用内存容量大于请求文件大小的下载服务器个数大于0,转向步骤504;如果选择出可用内存容量大于请求文件大小的下载服务器个数等于0,转向步骤506。
504、在所述选择出的可用内存容量大于请求文件大小的一组下载服务器中,选择出连接数最少的一个下载服务器。
505、将步骤504中选出的下载服务器的下载方式设置为缓存下载,并将步骤504中选出的下载服务器对应的请求文件的标识和文件大小以及步骤504中选出的下载服务器的地址发送给已缓存文件列表。
506、在步骤501中选出的所述下载服务器的集合中,选择出连接数最少的一个下载服务器。
507、将选择出的下载服务器的下载方式设置为普通下载,并将步骤506选出的下载服务器对应的请求文件的标识和文件大小发送给未缓存文件列表。
在下载控制服务器执行完步骤505后,下载控制服务器还需对已缓存文件列表执行以下步骤:
根据步骤505中发送给已缓存文件列表的请求文件的标识、提供缓存下载的下载服务器的地址,在已缓存文件列表中查找是否存在与所述请求文件的标识、提供缓存下载的下载服务器的地址对应的已缓存文件记录;
如果查找到所述已缓存文件记录,将所述已缓存文件记录的被请求次数加1,将所述已缓存文件记录的最后一次请求时间更新为当前时间;
如果未查找到所述已缓存文件记录,则向所述提供缓存下载的下载服务器的地址发送带有所述请求文件的标识和文件大小的增加缓存文件消息;
发送所述增加缓存文件消息后,在已缓存文件列表中添加所述发送给已缓存文件列表请求文件的记录,包括记录文件大小、记录所述提供缓存下载的下载服务器的地址、将所述请求文件的被请求次数设为1、将所述请求文件的最后一次请求时间更新为当前时间。
在下载控制服务器执行完步骤507后,下载控制服务器还需对未缓存文件列表执行以下步骤:
根据步骤507中发送给未缓存文件列表的请求文件的标识在未缓存文件列表中查找是否存在与发送给未缓存文件列表的请求文件的标识对应的未缓存文件记录;
如果查找到所述未缓存文件记录,将所述对未缓存文件记录的被请求次数加1,将所述未缓存文件记录的最后一次请求时间更新为当前时间;
如果未查找到所述未缓存文件记录,则在已缓存文件列表中添加所述发送给未缓存文件列表的请求文件的记录,包括记录文件大小、将请求文件的被请求次数设为1、将请求文件的最后一次请求时间更新为当前时间。
本发明实施例的支持大并发量文件下载的方法,还提供对已缓存文件列表和未缓存文件列表中的文件的记录进行删除的操作,如图6所示,所述删除的动作包括以下步骤:
601、下载控制服务器按一定周期依次访问未缓存文件列表的文件记录,检查当前时间与每个文件记录中的最后一次请求时间的差值是否超过1分钟。在本实施例中,所述的一定周期可以为5秒。
602、如果当前时间与所述文件记录的最后一次请求时间的差值超过1分钟,从未缓存文件列表中删除所述文件记录,继续检查下一个文件记录。
603、检查完未缓存文件列表的全部文件记录后,再逐个访问已缓存文件列表的文件记录,检查当前时间与已缓存文件列表的每个文件记录中的最后一次请求时间的差值是否超过1分钟。
604、如果当前时间与所述已缓存文件列表的文件记录的最后一次请求时间的差值超过1分钟,向为所述已缓存文件列表的文件提供缓存的下载服务器发送删除缓存文件消息。
605、当下载控制服务器接收到所述提供缓存的下载服务器返回的删除成功的消息后,将被下载服务器删除缓存的文件的记录从已缓存文件列表中删除。
在步骤605中将被下载服务器删除缓存的文件的记录从已缓存文件列表中删除的过程中,同时还要将下载服务器列表中记录的所述删除缓存文件的下载服务器的可用内存进行增加,增加的容量等于所述被删除的缓存文件的容量。如果在执行步骤605时,下载控制服务器未接收到所述提供缓存下载的下载服务器返回的删除成功的消息,则不对当前被检查的文件记录做处理,继续检查下一个文件记录。
图6提供的对已缓存文件列表和未缓存文件列表的删除操作,清理了长时间不被请求的文件的记录。
本发明实施例的支持大并发量文件下载的方法,还提供对进行普通下载的文件分配可提供缓存下载的下载服务器的操作,如图7所示,包括以下步骤:
701、将未缓存文件列表中的文件记录按被请求次数从多到少进行排序。
702、从被请求次数最多的文件开始,下载控制服务器依照被请求次数从多到少的顺序,针对所有未缓存文件列表中的文件记录,查找是否有符合缓存下载要求的下载服务器。
所述查找是否有符合缓存下载要求的下载服务器的方法,依照图5所示的操作步骤执行。与图5所示的操作步骤有所不同的是,如果未查找到可用服务器或是查找到的下载方式为普通下载,结束本次对进行普通下载的文件分配可提供缓存下载的下载服务器的操作;如果查找到所述符合缓存下载要求的下载服务器,则将与所述符合缓存下载要求的下载服务器对应的请求文件的记录加入已缓存文件列表的同时,还需执行步骤703。
703、将与所述符合缓存下载要求的下载服务器对应的请求文件的记录从未缓存文件列表删除。
图7的操作过程,可以在完成图6所示的对已缓存文件列表和未缓存文件列表中的文件的记录的删除的操作后进行。
本发明实施例的支持大并发量文件下载的方法,还提供以下操作过程:
接收新的下载服务器的注册,在下载服务器列表中记录所述新的下载服务器的地址和可用内存,并将所述新的下载服务器的状态设置为在线状态,将所述新的下载服务器的时间记录更新为当前时间。
本发明实施例的支持大并发量文件下载的方法,还提供以下操作过程:
接收所有下载服务器发送的状态信息,所述状态信息中包含对应下载服务器的地址、连接状态、当前连接数、可用内存。根据所述状态信息,更新下载服务器列表中对应的下载服务器的地址、当前连接数、可用内存,并将时间记录更新为当前时间。特别的,如果接收到处于离线状态的下载服务器的状态信息,则在下载服务器列表中将所述处于离线状态的下载服务器的状态重新设置为在线状态,更新所述重新设置为在线状态的下载服务器的当前连接数、可用内存,并将时间记录更新为当前时间。
本发明实施例的支持大并发量文件下载的方法,还提供以下操作过程:
周期性检查所有下载服务器,将状态异常的下载服务器设置为离线状态。比如,可以以2秒为周期,检查下载服务器列表中记录的下载服务器的时间记录,如果所述下载服务器的时间记录与当前时间差值超过6秒,则将所述差值超过6秒的下载服务器判断为状态异常,将连接状态由在线状态改为离线状态。下载控制服务器在为客户端选择下载服务器时,不会将离线状态的下载服务器纳入选择范围,直到所述离线状态的下载服务器重新回到在线状态。
本实施例所述下载服务器列表中的信息包括:所有下载服务器的地址及连接状态,每台下载服务器的当前连接数、可用内存、时间记录。
本实施例所述已缓存文件列表中的信息包括:已存储到某下载服务器的内存中并可进行缓存下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间及缓存文件的下载服务器地址;
本实施例所述未缓存文件列表中的信息包括:未存储到下载服务器的内存中并可进行普通下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间。
本实施例提供了一种支持大并发量文件下载的方法,下载控制服务器通过对缓存文件分布情况及下载服务器的负载情况进行分析判断,选出下载压力最小的一台下载服务器以提供文件下载服务。下载控制服务器在对下载服务器的控制及下载任务分配中,总能够选择出下载压力最小的一台下载服务器来提供下载服务,当出现大并发量下载的情况时,可以实现对大并发量文件下载任务的优化分配,从而减轻了大并发量文件的下载压力。同时,下载控制服务器能够对缓存文件进行管理,通知下载服务器删除长时间无下载请求的缓存文件,还可将下载服务器的下载方式由普通下载转变为缓存下载,不断优化下载服务器的服务质量。
实例3:
本发明实施例公开了一种支持大并发量文件下载的装置,如图8所示,所述装置包括:服务器请求接收单元81、服务器获取单元82、服务器请求返回单元83。所述服务器获取单元82中,还包括第一查询模块821、第一记录模块822、第二查询模块823、第一选择模块824、第二选择模块825。
下载控制服务器的服务器请求接收单元81接收客户端的下载服务器查询请求消息。根据所述下载服务器查询请求消息,服务器获取单元的第一查询模块821查询文件服务器中是否存在所述请求文件,如果不存在所述请求文件,下载控制服务器通知客户端不出在所述请求文件,结束客户端本次下载请求;如果存在所述请求文件,第一记录模块822记录所述请求文件的大小。然后,第二查询模块823查询所述请求文件是否已在下载服务器的缓存中,如果所述请求文件已在下载服务器的缓存中,则第一选择模块824在缓存有请求文件的下载服务器中选取一个最优下载服务器,所述最优下载服务器的客户端连接数小于既定最大连接数且客户端连接数最少。如果第二查询模块823查询到所述请求文件不在任何下载服务器的缓存中,或所述最优下载服务器不存在,则第二选择模块825从下载控制服务器所管辖的所有下载服务器中,选取一个处于在线状态的下载服务器。服务器请求返回单元83将第一选择模块824选出的最优下载服务器的地址、或第二选择模块825选出的处于在线状态的下载服务器的地址返回给客户端。
所述第二选择模块825还包括:第一选择子模块8251、第二选择子模块8252、第三选择子模块8253、第一下载设置子模块8254、第四选择子模块8255、第二下载设置子模块8256。
在第二选择模块825选择处于在线状态的下载服务器时,首先由第一选择子模块8251从下载控制服务器的下载服务器列表中选择处于在线状态并且客户端连接数小于既定最大连接数的下载服务器的集合。第二选择子模块8252在所述下载服务器的集合中,选择可用内存容量大于请求文件大小的一组下载服务器。然后,第三选择子模块8253在所述选择出的一组下载服务器中,选择出连接数最少的一个下载服务器。第一下载设置子模块8254将所述选择出的连接数最少的下载服务器的下载方式设置为缓存下载,并将所述下载方式设置为缓存下载的文件的标识和文件大小以及选择出的连接数最少的下载服务器的地址发送给已缓存文件列表。
若在所述下载服务器的集合中,不存在可用内存容量大于请求文件大小的下载服务器,则第四选择子模块8255在所述下载服务器集合中选择出连接数最少的一个下载服务器。然后由第二下载设置子模块8256将所述选择出的连接数最少的下载服务器的下载方式设置为普通下载,并将所述下载方式设置为普通下载的文件的标识和文件大小发送给未缓存文件列表。
第一下载设置子模块8254将所述下载方式设置为缓存下载的文件的标识和文件大小以及选择出的连接数最少的下载服务器的地址发送给已缓存文件列表后,如图9所示,所述装置还包括已缓存文件查找单元91、已缓存文件更新单元92、新缓存消息发送单元93、第一文件添加单元94。
已缓存文件查找单元91根据所述文件的标识和所述下载服务器的地址在已缓存文件列表中查找是否存在所述文件的记录。在查找到所述文件的记录时,已缓存文件更新单元92将所述文件的被请求次数加1,将最后一次请求时间更新为当前时间。在未查找到所述文件的记录时,新缓存消息发送单元93向所述下载服务器的地址发送带有所述文件的标识和文件大小的增加缓存文件消息。在发送所述增加缓存文件消息后,第一文件添加单元94在已缓存文件列表中添加所述文件的记录,包括记录文件大小、记录所述下载服务器的地址、将所述文件的被请求次数设为1、将最后一次请求时间更新为当前时间。
第二下载设置子模块8256将所述下载方式设置为普通下载的文件的标识和文件大小以及选择出的连接数最少的下载服务器的地址发送给未缓存文件列表后,如图9所示,所述装置还包括未缓存文件查找单元95、未缓存文件更新单元96、第二文件添加单元97。
未缓存文件查找单元95根据所述文件的标识在未缓存文件列表中查找是否存在所述文件的记录。在查找到所述文件的记录时,未缓存文件更新单元96将所述文件的被请求次数加1,将最后一次请求时间更新为当前时间。在未查找到所述文件的记录时,第二文件添加单元97在未缓存文件列表中添加所述文件的记录,包括记录文件大小、将所述文件的被请求次数设为1、将最后一次请求时间更新为当前时间。
本发明实施例的支持大并发量文件下载的装置,还提供对已缓存文件列表和未缓存文件列表中的文件的记录进行删除的操作,以及对进行普通下载的文件分配可提供缓存下载的下载服务器的操作。如图10所示,所述装置还包括:文件删除控制单元101、缓存下载分配单元102。文件删除控制单元101周期性检查已缓存文件列表和未缓存文件列表,将近期没有下载请求的文件的记录从已缓存文件列表和未缓存文件列表中删除。缓存下载分配单元102对进行普通下载的文件分配可提供缓存下载的下载服务器。在本实施例中,文件删除控制单元101可以5秒为周期检查已缓存文件列表和未缓存文件列表。缓存下载分配单元102可以在文件删除控制单元101完成对已缓存文件列表和未缓存文件列表中的文件的记录的删除的操作后,再执行对进行普通下载的文件分配可用的下载服务器的操作。
本发明实施例提供的支持大并发量文件下载的装置,如图11所述,所述装置还包括:服务器注册单元111、状态接收控制单元112、状态周期检查单元113。
服务器注册单元111接收新的下载服务器的注册,将所述新的下载服务器的信息记录到下载服务器列表。
状态接收控制单元112接收所有下载服务器的状态信息,并在接收到处于离线状态的下载服务器的状态信息时,将下载服务器列表中记录的所述处于离线状态的下载服务器设置为在线状态。
状态周期检查单元113周期性对下载服务器列表中的所有下载服务器的信息进行检查,将状态异常的下载服务器设置为离线状态。比如,本实施例中,状态周期检查单元113可以以2秒为周期,检查下载服务器列表中记录的下载服务器的时间记录,如果所述下载服务器的时间记录与当前时间差值超过6秒,则将所述差值超过6秒的下载服务器判断为状态异常,将连接状态由在线状态改为离线状态。下载控制服务器在为客户端选择下载服务器时,不会将离线状态的下载服务器纳入选择范围,直到所述离线状态的下载服务器重新回到在线状态。
本实施例所述的下载服务器列表、已缓存文件列表、未缓存文件列表可参照实施例2中对下载服务器列表、已缓存文件列表、未缓存文件列表进行的描述。
本实施例提供了一种支持大并发量文件下载的装置,下载控制服务器通过对缓存文件分布情况及下载服务器的负载情况进行分析,选出下载压力最小的一台下载服务器。当出现大并发量下载的情况时,下载控制服务器对下载服务器的控制及下载任务进行均衡分配,选择出下载压力最小的一台下载服务器来提供下载服务,实现了对大并发量文件下载任务的优化分配,减轻了大并发量文件的下载对下载服务器造成的负担。同时,下载控制服务器能够对缓存文件进行管理,通知下载服务器删除长时间无下载请求的缓存文件,还可将下载服务器的下载方式由普通下载转变为缓存下载,不断优化下载服务器的服务质量。
实例4:
本实施例提供了一种支持大并发量文件下载的系统,如图12所示,所述系统包括下载控制服务器121、客户端122、下载服务器123。
所述客户端的数量一般为两个或两个以上,所述下载服务器的数量一般为两个或两个以上。
客户端122向下载控制服务器121发送下载服务器查询请求消息,所述下载服务器查询请求消息中携带需下载文件的标识。下载控制服务器121接收客户端122的下载服务器查询请求消息后,根据所述下载服务器查询请求消息,并依据缓存文件分布和各下载服务器的负载情况,获取下载服务器123,将所述获取的下载服务器123的地址发送给客户端31,指示客户端122从下载服务器123中下载文件。客户端122在接收到下载控制服务器121返回的下载服务器123地址后,向下载服务器123发起文件下载请求消息。下载服务器123在接收到客户端122的文件下载请求消息后,向客户端122提供缓存下载或普通下载。
下载控制服务器121还用于接收新加入的下载服务器的注册,在下载服务器列表中记录所述新加入的下载服务器的地址和可用内存,并将所述新加入的下载服务器的状态设置为在线状态,将所述新加入的下载服务器的时间记录更新为当前时间。
下载控制服务器121还用于接收所有下载服务器发送的状态信息,所述状态信息中包含对应下载服务器的地址、连接状态、当前连接数、可用内存。以下载服务器123为例进行说明,当下载控制服务器121接收到下载服务器123的状态信息后,更新下载服务器列表中下载服务器123的地址、当前连接数、可用内存,并将时间记录更新为当前时间。特别的,如果接收到处于离线状态的下载服务器123的状态信息,则在下载服务器列表中将下载服务器123的状态重新设置为在线状态,并更新下载服务器123的当前连接数、可用内存,并将时间记录更新为当前时间。
另外,下载控制服务器121周期性检查下载服务器列表中的所有下载服务器,将状态异常的下载服务器设置为离线状态。比如,以2秒为周期,检查下载服务器列表中记录的下载服务器的时间记录。以下载服务器123为例,检查其时间记录,如果下载服务器123的时间记录与当前时间差值超过6秒,则将下载服务器123判断为状态异常,将连接状态由在线状态改为离线状态。下载控制服务器121在为客户端选择下载服务器时,不会将离线状态的下载服务器123纳入选择范围,直到下载服务器123重新回到在线状态。
下载控制服务器121为某请求文件获取到一个新的下载服务器123时,还对下载方式进行选择。若下载方式选择为缓存下载,则下载控制服务器121向下载服务器123发送增加缓存文件消息。下载服务器123接收所述增加缓存文件消息后,为所述某请求文件分配缓存空间。
下载控制服务器121还提供对已缓存文件列表和未缓存文件列表中的文件的记录进行删除的操作,具体操作步骤可参考实施例2中的步骤601至605。本实施例中,以下载服务器123为已缓存文件列表的文件提供缓存为例进行说明:下载控制服务器121向下载服务器123发送删除缓存文件消息,下载服务器123接收所述删除缓存文件消息后,将与所述删除缓存文件消息对应的缓存从内存中删除,并向下载控制服务器121返回一个删除成功消息。下载控制服务器接收所述删除成功消息后,将被下载服务器123删除缓存的文件的记录从已缓存文件列表中删除。
本实施例中的下载服务器需进行下载服务器初始化。所述初始化包括:将可用内存赋值为所述下载服务器的最大可用内存值、将当前客户端的连接数设为0,并向下载控制服务器121发起注册,所述注册的内容包括所述下载服务器的地址及可用内存。
本实施列中的下载服务器还需周期性向下载控制服务器121发送状态信息,所述状态信息包含所述下载服务器的地址、连接状态、当前连接数、可用内存。本实施例中,发送状态信息的周期可以设置为0.1秒。
本实施例中的下载服务器还提供缓存管理功能。所述缓存管理功能包括:缓存的初始化、缓存文件的增加、缓存文件的删除。
以下载服务器123为例,缓存的初始化按照以下方式进行。下载服务器123中,根据自身的最大可用内存值和内存块大小block_size计算出内存块数MAX_N(MAX_N等于所述自身的最大内存值除以block_size)。根据每个内存块的起始地址,按起始地址由低到高的顺序,为每个内存块分配索引号block_idx。block_idx由0开始,排列到MAX_N-1。下载服务器123创建一个空闲内存链表,所述空闲内存链表记录block_idx以及block_idx对应的内存地址(block_idx对应的内存地址等于所述最大可用内存值的起始地址加上block_idx*block_size)。在缓存的初始化中,所有内存块都设置为空闲,存储在一个空闲内存哈希表中。所述空闲内存哈希表中还记录了一个空闲内存块数N,在所述缓存的初始化时,所述空闲内存块数N被赋值为MAX_N。同时,在所述缓存的初始化中,下载服务器123还创建一个缓存文件信息表。所述缓存文件信息表的每条缓存文件信息项包括:缓存文件的标识、缓存文件的大小、一个内存块索引数组、一个内存块可用标志数组以及缓存文件占用的内存块数。所述内存块索引数组记录所在缓存文件信息项的缓存文件占用的各内存块的起始地址及block_idx。内存块可用标志数组记录所在缓存文件信息项的缓存文件占用的各个内存块是否可用。
以下载服务器123为例,缓存文件的增加按照以下方式进行。首先,下载服务器123接收下载控制服务器121的增加缓存文件消息,所述增加缓存文件消息包含请求文件的标识及文件大小file_size。计算需要的内存块数n(内存块数n等于文件大小除以内存块大小,如果计算出的内存块数n不是整数,则将内存块数n向上取整)。若所述内存块数n大于空闲内存块数N,则下载服务器123向下载控制服务器121返回增加缓存文件失败的消息。若所述内存块数n不大于空闲内存块数N,为所述请求文件分配一个缓存文件信息项,记录所述请求文件的标识、文件大小,并将缓存文件占用的内存块数设置为n,同时,从所述空闲哈希表的表头方向开始,取出n个连续的空闲内存块的记录,将所述空闲内存块的记录记入内存索引数组的前n项,将内存块可用标志数组前n项设置为不可用。然后,清除空闲内存哈希表中对应的n个连续的空闲内存块记录,并将空闲内存块数N减去n。然后,向下载控制服务器121回复增加缓存文件成功的消息。最后,下载服务器123根据所述请求文件的标识向文件服务器申请所述请求文件,文件服务器将所述请求文件对应的数据依次存入所述n个连续的空闲内存块,每填满一个空闲内存块,就将对应的内存块可用标志数组的数组项设置为可用。在设置为可用后,客户端121才能对缓存文件进行下载。
上述下载服务器123根据所述请求文件的标识向文件服务器申请所述请求文件的操作过程是:下载服务器123向文件服务器发起n次文件请求消息,所述文件请求消息包含所述请求文件的标识、每次从文件服务器请求文件的开始位置start_pos(start_pos=i*data_size)、每次文件请求消息申请的数据大小data_size,其中i表示内存块索引数组第i项,i的取值范围为从0至n-1。当i<n-1时,data_size=block_size。当i=n-1时,data_size=file_size-i*block_size。对于每次所述的文件请求消息,文件服务器将对应的数据传输到对应的内存块中。
以下载服务器123为例,缓存文件的删除按照以下方式进行。首先,下载服务器123接收下载控制服务器121的删除缓存文件消息,所述删除缓存文件消息包含待删除文件的标识及文件大小。根据所述待删除文件的标识在缓存文件信息表中查找对应的缓存文件信息项,取得所述待删除文件占用的内存块数m。将所述待删除文件对应的内存块索引数组的前m项依次添加到所述空闲哈希表,并将空闲内存块数N加m。最后,删除所述待删除文件对应的缓存文件信息项。
本实施例中,下载服务器123向客户端122提供缓存下载或普通下载的判断方法如下:接收客户端122的文件下载请求消息,所述文件下载请求消息包括请求文件的标识、下载起始位置from_pos,根据from_pos的取值,支持客户端从任意位置开始数据续传。比如,如果from_pos=0,则从文件存储的起始位置开始下载传输;如果from_pos大于0,则从距起始位置from_pos长度的位置开始续传。如果当前的连接数大于等于既定最大连接数,则向客户端返回拒绝下载消息。如果当前的连接数小于既定最大连接数,则根据所述请求文件的标识查找缓存文件信息表,如果找到对应的缓存文件信息表项,则提供缓存下载;否则提供普通下载。下载服务器123将自身的连接数加1,并将总带宽除以所有的连接数得到的带宽量设定为新的下载比特率,如果所述新的下载比特率大于既定最大下载比特率,将新的下载比特率修正为所述既定最大下载比特率。
下载服务器123向客户端122提供对所述请求文件的缓存下载的处理过程为:
(1)、从所述请求文件的标识对应的缓存文件信息表项取得占用的内存块数n;
(2)、根据from_pos计算开始进行下载的内存块from_n,计算方法为:from_n=from_pos/block_size。后续依次读取n-from_n个内存块,并将内存块的数据发送给客户端122;
(3)、i代表当前发送缓存文件的第i个内存块(i取值范围from_n到n-1),首先判断缓存文件的可用标志数组第i项是否为可用状态,如果为不可用状态,等待0.1s再次判断状态,循环判断直到可用标志为可用状态,如果当前i为from_n,转到4)处理,否则转到5)处理;
(4)、计算下载起始位置from_pos在当前内存块的偏移位置from_off(from_off=from_pos%block_size),从内存块索引数组第i项记录的内存块的起始地址加上from_off处开始,取得data_size大小的数据发送客户端122。如果i<n-1,data_size=block_size-from_off,如果i=n-1,data_size=file_size-i*block_size-from_off。
(5)、从内存块索引数组第i项记录的内存块的起始地址取出data_size大小的数据发送客户端122。如果i<n-1,data_size=block_size,如果i=n-1,data_size=file_size-i*block_size。
(6)、将data_size大小数据发送客户端122后,将i加1,如果i<n,回到(3)继续处理过程,如果i=n,结束对客户端122的此次文件缓存下载处理过程。
下载服务器123向客户端122提供对所述请求文件的普通下载的处理过程为:
(7)、下载服务器123为所述进行普通下载的文件分配256KB的临时缓存,并设置一个已读取文件长度read_len,用以记录已经从文件服务器中读取的文件数据长度,将read_len初始化为from_pos。
(8)、下载服务器123根据所述进行普通下载的文件的标识查询文件服务器,获得所述进行普通下载的文件的file_size。
(9)、如果read_len<file_size,下载服务器123向文件服务器发送普通下载请求消息,所述普通下载请求消息包含所述进行普通下载的文件的标识、请求的开始位置read_len、请求的数据大小data_size。如果file_size减去read_len的差值大于256KB,data_size取值256KB;若所述差值小于等于256KB,data_size=file_size-read_len。文件服务器将data_size大小的文件数据传输到所述临时缓存中。
(10)、下载服务器123将所述临时缓存中的文件数据发送给客户端122,发送完成后将read_len加上data_size。如果read_len小于file_size,转到普通下载的处理过程(9)进行普通下载的处理;如果read_len等于file_size,完成普通下载的处理。
此外,本系统所使用的文件服务器独立于下载服务器之外,文件服务器的文件存储不受下载服务器的限制,不需将被请求文件在文件服务器的存储位置通知下载服务器。在当新的下载服务器连接入系统时,文件服务器的文件存储不受影响,保证了文件服务器中存储的数据的稳定性。
本实施例所述的下载服务器列表、已缓存文件列表、未缓存文件列表可参照实施例2中对下载服务器列表、已缓存文件列表、未缓存文件列表进行的描述。
本实施例提供了一种支持大并发量文件下载的装置,通过下载服务器和下载控制服务器组成的系统实现对文件下载的负载均衡分配,较好的解决了出现大并发量文件下载时服务器处理瓶颈问题。同时,下载控制服务器通过对下载服务器的控制实现了缓存文件的管理,适时的删除或增加缓存文件,提高下载速度并进一步降低下载压力。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (17)
1.一种支持大并发量文件下载的方法,其特征在于,下载控制服务器中维护了一个下载服务器列表,一个已缓存文件列表,一个未缓存文件列表;所述下载服务器列表中的信息包括:所有下载服务器的地址及连接状态,每台下载服务器的当前连接数、可用内存、时间记录;所述已缓存文件列表中的信息包括:已存储到某下载服务器的内存中并可进行缓存下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间及缓存文件的下载服务器地址;所述未缓存文件列表中的信息包括:未存储到下载服务器的内存中并可进行普通下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间,
所述方法包括:
所述下载控制服务器接收客户端的下载服务器查询请求消息;
根据所述下载服务器查询请求消息,查询文件服务器中是否存在所述请求文件;
记录所述请求文件的大小;
若存在所述请求文件,则查询所述请求文件是否已在下载服务器的缓存中;
A:若所述请求文件已在下载服务器的缓存中,则从所述缓存有请求文件的下载服务器中选取一个客户端连接数小于既定最大连接数且客户端数量最少的下载服务器;B:若所述请求文件不在下载服务器的缓存中,或是缓存有请求文件的下载服务器中的客户端连接数均大于等于既定最大连接数,则从下载控制服务器的下载服务器列表中选择处于在线状态并且客户端连接数小于既定最大连接数的下载服务器的集合,并在所述下载服务器的集合中,选择可用内存容量大于请求文件大小的一组下载服务器,然后在所述选择出的一组下载服务器中,选择出连接数最少的一个下载服务器,最后将所述选择出的一个下载服务器的下载方式设置为缓存下载,并将所述下载方式设置为缓存下载的文件的标识和文件大小以及选择出的连接数最少的下载服务器的地址发送给已缓存文件列表;
将根据A或B获取的一个下载服务器的地址发送给所述客户端,指示客户端从所述地址对应的下载服务器中下载文件;
在将所述下载方式设置为缓存下载的文件的标识和文件大小以及选择出的连接数最少的下载服务器的地址发送给已缓存文件列表后,所述方法还包括:
根据所述文件的标识和所述下载服务器的地址在已缓存文件列表中查找是否存在所述文件的记录;如果查找到所述文件的记录,将所述文件的被请求次数加1,将最后一次请求时间更新为当前时间;如果未查找到所述文件的记录,则向所述下载服务器的地址发送带有所述文件的标识和文件大小的增加缓存文件消息;发送所述增加缓存文件消息后,在已缓存文件列表中添加所述文件的记录,包括记录文件大小、记录所述下载服务器的地址、将所述文件的被请求次数设为1、将最后一次请求时间更新为当前时间。
2.根据权利要求1所述的方法,其特征在于,还包括:
如果在所述下载服务器的集合中,不存在可用内存容量大于请求文件大小的下载服务器,则在所述下载服务器集合中选择出连接数最少的一个下载服务器;
将所述选择出的一个下载服务器的下载方式设置为普通下载,并将所述下载方式设置为普通下载的文件的标识和文件大小发送给未缓存文件列表。
3.根据权利要求2所述的方法,其特征在于,将所述下载方式设置为普通下载的文件的标识和文件大小发送给未缓存文件列表后,还包括:
根据所述文件的标识在未缓存文件列表中查找是否存在所述文件的记录;
如果查找到所述文件的记录,将所述文件的被请求次数加1,将最后一次请求时间更新为当前时间;
如果未查找到所述文件的记录,则在未缓存文件列表中添加所述文件的记录,包括记录文件大小、将所述文件的被请求次数设为1、将最后一次请求时间更新为当前时间。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
定期检查已缓存文件列表和未缓存文件列表,将近期没有下载请求的文件的记录从已缓存文件列表和未缓存文件列表中删除;
对进行普通下载的文件分配可提供缓存下载的下载服务器。
5.根据权利要求4所述的方法,所述将近期没有下载请求的文件的记录从已缓存文件列表和未缓存文件列表中删除包括:
逐个访问未缓存文件列表的文件记录,检查当前时间与每个文件记录中的最后一次请求时间的差值是否超过1分钟;
如果当前时间与所述文件记录的最后一次请求时间的差值超过1分钟,从未缓存文件列表中删除所述文件记录;
检查完未缓存文件列表的全部文件记录后,再逐个访问已缓存文件列表的文件记录,检查当前时间与已缓存文件列表的每个文件记录中的最后一次请求时间的差值是否超过1分钟;
如果当前时间与所述已缓存文件列表的文件记录的最后一次请求时间的差值超过1分钟,向为所述已缓存文件列表的文件提供缓存的下载服务器发送删除缓存文件消息;
所述提供缓存的下载服务器返回删除成功的消息后,将被删除文件的记录从已缓存文件列表中删除;
所述对进行普通下载的文件分配可用的下载服务器进行缓存下载包括:
将未缓存文件列表中的文件记录按被请求次数从多到少进行排序;
从被请求次数最多的文件开始,针对所有未缓存文件列表中的文件记录,查找是否有符合缓存下载要求的下载服务器;
如果检测到所述符合缓存下载要求的下载服务器,则将对应的请求文件的记录加入已缓存文件列表并将所述对应的请求文件的记录从未缓存文件列表删除。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收新的下载服务器的注册,将所述新的下载服务器的信息记录到下载服务器列表;
接收所有下载服务器的状态信息,所述下载服务器的状态信息包括:所述下载服务器的地址、连接数、可用内存;所述下载控制服务器接收所述状态信息后,更新下载服务器列表中记录的所述下载服务器的连接数、可用内存,如果接收到处于离线状态的下载服务器的状态信息,将所述处于离线状态的下载服务器设置为在线状态;
周期性检查所有下载服务器,将状态异常的下载服务器设置为离线状态。
7.一种支持大并发量文件下载的装置,其特征在于,下载控制服务器中维护了一个下载服务器列表,一个已缓存文件列表,一个未缓存文件列表;所述下载服务器列表中的信息包括:所有下载服务器的地址及连接状态,每台下载服务器的当前连接数、可用内存、时间记录;所述已缓存文件列表中的信息包括:已存储到某下载服务器的内存中并可进行缓存下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间及缓存文件的下载服务器地址;所述未缓存文件列表中的信息包括:未存储到下载服务器的内存中并可进行普通下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间,所述装置包括:
服务器请求接收单元,用于接收客户端的下载服务器查询请求消息;
服务器获取单元,用于根据所述下载服务器查询请求消息,并依据缓存文件分布和下载服务器的负载情况,获取一个下载服务器;
服务器请求返回单元,用于将所述获取的一个下载服务器的地址发送给所述客户端,指示客户端从所述地址对应的下载服务器中下载文件;
所述服务器获取单元,还包括:
第一查询模块,用于根据所述下载服务器查询请求消息,查询文件服务器中是否存在所述请求文件;
第一记录模块,用于记录所述请求文件的大小;
第二查询模块,用于当文件服务器中存在所述请求文件时,查询所述请求文件是否已在下载服务器的缓存中;
第一选择模块,用于当所述请求文件已在下载服务器的缓存时,获取缓存有所述请求文件的下载服务器,并从所述缓存有请求文件的下载服务器中选取一个客户端连接数小于既定最大连接数且客户端数量最少的下载服务器;
第二选择模块,用于当所述请求文件不在下载服务器的缓存中,或是缓存有请求文件的下载服务器中的客户端连接数均大于等于既定最大连接数时,从下载控制服务器所管辖的所有下载服务器中,选取一个处于在线状态的下载服务器;
所述第二选择模块,还包括:
第一选择子模块,用于从下载控制服务器的下载服务器列表中选择处于在线状态并且客户端连接数小于既定最大连接数的下载服务器的集合;
第二选择子模块,用于在所述下载服务器的集合中,选择可用内存容量大于请求文件大小的一组下载服务器;
第三选择子模块,用于在所述选择出的一组下载服务器中,选择出连接数最少的一个下载服务器;
第一下载设置子模块,用于将所述第一选择模块或所述第二选择模块选择出的一个下载服务器的下载方式设置为缓存下载,并将所述下载方式设置为缓存下载的文件的标识和文件大小以及选择出的连接数最少的下载服务器的地址发送给已缓存文件列表;
所述装置还包括:
已缓存文件查找单元,用于根据与所述第二选择模块对应的所述文件的标识和所述下载服务器的地址在已缓存文件列表中查找是否存在所述文件的记录;
已缓存文件更新单元,用于在查找到所述文件的记录时,将所述文件的被请求次数加1,将最后一次请求时间更新为当前时间;
新缓存消息发送单元,用于在未查找到所述文件的记录时,向所述下载服务器的地址发送带有所述文件的标识和文件大小的增加缓存文件消息;
第一文件添加单元,用于在发送所述增加缓存文件消息后,在已缓存文件列表中添加所述文件的记录,包括记录文件大小、记录所述下载服务器的地址、将所述文件的被请求次数设为1、将最后一次请求时间更新为当前时间。
8.根据权利要求7所述的装置,其特征在于,如果在所述下载服务器的集合中,不存在可用内存容量大于请求文件大小的下载服务器,则还包括:
第四选择子模块,用于在所述下载服务器集合中选择出连接数最少的一个下载服务器;
第二下载设置子模块,用于将所述选择出的一个下载服务器的下载方式设置为普通下载,并将所述下载方式设置为普通下载的文件的标识和文件大小发送给未缓存文件列表。
9.根据权利要求8所述的装置,其特征在于,将所述下载方式设置为普通下载的文件的标识和文件大小发送给未缓存文件列表后,还包括:
未缓存文件查找单元,用于根据所述文件的标识在未缓存文件列表中查找是否存在所述文件的记录;
未缓存文件更新单元,用于在查找到所述文件的记录时,将所述文件的被请求次数加1,将最后一次请求时间更新为当前时间;
第二文件添加单元,用于在未查找到所述文件的记录时,则在未缓存文件列表中添加所述文件的记录,包括记录文件大小、将所述文件的被请求次数设为1、将最后一次请求时间更新为当前时间。
10.根据权利要求7或8所述的装置,其特征在于,还包括:
文件删除控制单元,用于定期检查已缓存文件列表和未缓存文件列表,将近期没有下载请求的文件的记录从已缓存文件列表和未缓存文件列表中删除;
缓存下载分配单元,用于对进行普通下载的文件分配可提供缓存下载的下载服务器。
11.根据权利要求7所述的装置,其特征在于,还包括:
服务器注册单元,用于接收新的下载服务器的注册,将所述新的下载服务器的信息记录到下载服务器列表;
状态接收控制单元,用于接收所有下载服务器的状态信息,所述下载服务器的状态信息包括:所述下载服务器的地址、连接数、可用内存;所述下载控制服务器接收所述状态信息后,更新下载服务器列表中记录的所述下载服务器的连接数、可用内存并在接收到处于离线状态的下载服务器的状态信息时,将所述处于离线状态的下载服务器设置为在线状态;
状态周期检查单元,周期性检查所有下载服务器,将状态异常的下载服务器设置为离线状态。
12.一种支持大并发量文件下载的系统,其特征在于,包括:
客户端,用于向下载控制服务器发送下载服务器查询请求消息,所述下载服务器查询请求消息中携带需下载文件的标识;
下载控制服务器,用于接收客户端的下载服务器查询请求消息,并依据缓存文件分布和下载服务器的负载情况,选择一个下载服务器;将所述选择的一个下载服务器的地址发送给所述客户端,指示客户端从所述地址对应的下载服务器中下载文件;
其中,所述依据缓存文件分布和下载服务器的负载情况,获取下载服务器,包括:
根据所述下载服务器查询请求消息,查询文件服务器中是否存在所述请求文件;
记录所述请求文件的大小;
若存在所述请求文件,则查询所述请求文件是否已在下载服务器的缓存中;
若所述请求文件已在下载服务器的缓存中,则从所述缓存有请求文件的下载服务器中选取一个客户端连接数小于既定最大连接数且客户端数量最少的下载服务器;
若所述请求文件不在下载服务器的缓存中,或是缓存有请求文件的下载服务器中的客户端连接数均大于等于既定最大连接数,则从下载控制服务器的下载服务器列表中选择处于在线状态并且客户端连接数小于既定最大连接数的下载服务器的集合,并在所述下载服务器的集合中,选择可用内存容量大于请求文件大小的一组下载服务器,然后在所述选择出的一组下载服务器中,选择出连接数最少的一个下载服务器,最后将所述选择出的一个下载服务器的下载方式设置为缓存下载,并将所述下载方式设置为缓存下载的文件的标识和文件大小以及选择出的连接数最少的下载服务器的地址发送给已缓存文件列表;
所述客户端还用于在接收到下载控制服务器返回的下载服务器地址后,向所述返回的下载服务器地址发起文件下载请求消息;
所述下载控制服务器中还维护了一个下载服务器列表,一个已缓存文件列表,一个未缓存文件列表;
所述下载服务器列表中的信息包括:所有下载服务器的地址及连接状态,每台下载服务器的当前连接数、可用内存、时间记录;
所述已缓存文件列表中的信息包括:已存储到某下载服务器的内存中并可进行缓存下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间及缓存文件的下载服务器地址;
所述未缓存文件列表中的信息包括:未存储到下载服务器的内存中并可进行普通下载的文件的标识及文件大小,每个文件的被请求次数、最后一次请求时间;
在将所述下载方式设置为缓存下载的文件的标识和文件大小以及选择出的连接数最少的下载服务器的地址发送给已缓存文件列表后,所述下载控制服务器还用于:
根据所述文件的标识和所述下载服务器的地址在已缓存文件列表中查找是否存在所述文件的记录;如果查找到所述文件的记录,将所述文件的被请求次数加1,将最后一次请求时间更新为当前时间;如果未查找到所述文件的记录,则向所述下载服务器的地址发送带有所述文件的标识和文件大小的增加缓存文件消息;发送所述增加缓存文件消息后,在已缓存文件列表中添加所述文件的记录,包括记录文件大小、记录所述下载服务器的地址、将所述文件的被请求次数设为1、将最后一次请求时间更新为当前时间。
13.根据权利要求12所述的系统,其特征在于,所述系统还包括:
下载服务器,用于在接收所述客户端的文件下载请求消息后,向所述客户端提供文件的缓存下载或普通下载。
14.根据权利要求13所述的系统,其特征在于,所述下载服务器还用于将自身的状态信息发送给所述下载控制服务器;
所述下载服务器的状态信息包括:所述下载服务器的地址、连接数、可用内存;
所述下载控制服务器接收所述状态信息后,更新下载服务器列表中记录的所述下载服务器的连接数、可用内存,如果所述发送状态信息的下载服务器处于离线状态,则所述下载控制服务器将下载服务器列表中记录的所述下载服务器的状态更改为在线状态。
15.根据权利要求14所述的系统,其特征在于,所述下载服务器根据所述下载控制服务器发送的增加缓存文件消息和删除缓存文件消息,在内存中增加缓存文件或删除缓存文件。
16.根据权利要求12所述的系统,其特征在于,所述下载控制服务器还用于:
接收新加入的下载服务器的注册;
所述新加入的下载服务器向所述下载控制服务器发出注册消息,所述注册消息包含所述新加入的下载服务器的地址、可用内存;所述下载控制服务器接收所述注册消息并将所述新加入的下载服务器加入下载服务器列表中。
17.根据权利要求12所述的系统,其特征在于,所述下载控制服务器为某请求文件获取到一个新的下载服务器时,还对下载方式进行选择;
若下载方式选择为缓存下载,则所述下载控制服务器向所述新的下载服务器发送增加缓存文件消息;
所述下载服务器接收所述增加缓存文件消息后,为所述某请求文件分配缓存空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010624817.8A CN102164160B (zh) | 2010-12-31 | 2010-12-31 | 支持大并发量文件下载的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010624817.8A CN102164160B (zh) | 2010-12-31 | 2010-12-31 | 支持大并发量文件下载的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102164160A CN102164160A (zh) | 2011-08-24 |
CN102164160B true CN102164160B (zh) | 2015-06-17 |
Family
ID=44465132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010624817.8A Active CN102164160B (zh) | 2010-12-31 | 2010-12-31 | 支持大并发量文件下载的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102164160B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103248636B (zh) * | 2012-02-03 | 2018-06-15 | 深圳市腾讯计算机系统有限公司 | 离线下载的系统及方法 |
CN105930405B (zh) * | 2013-07-12 | 2019-09-24 | 北京鑫富天恒科技有限公司 | 适于url数据抓取中对数据缓存的方法及装置 |
CN104426917A (zh) * | 2013-08-19 | 2015-03-18 | 中兴通讯股份有限公司 | 一种下载处理方法、下载处理装置及客户端 |
CN104320455B (zh) * | 2014-10-23 | 2018-05-01 | 京信通信系统(中国)有限公司 | 一种数据分发方法、服务器及系统 |
CN104462523B (zh) * | 2014-12-23 | 2018-05-01 | 合一网络技术(北京)有限公司 | 设备缓存文件的整理方法及系统 |
CN106487768A (zh) * | 2015-08-31 | 2017-03-08 | 北京国双科技有限公司 | 一种文件共享方法及装置 |
CN108243203A (zh) * | 2016-12-23 | 2018-07-03 | 航天星图科技(北京)有限公司 | 一种云系统中的数据共享方法 |
CN110147508A (zh) * | 2017-10-26 | 2019-08-20 | 北京京东尚科信息技术有限公司 | 一种系统限流的方法和装置 |
CN110620802B (zh) * | 2018-06-20 | 2021-04-09 | 华为技术有限公司 | 一种负载均衡方法和装置 |
CN110875951B (zh) * | 2018-09-04 | 2022-07-01 | 北京奇虎科技有限公司 | 一种调用消息并发量的统计方法及装置 |
CN109639827B (zh) * | 2019-01-07 | 2021-11-09 | 新华三云计算技术有限公司 | 客户端升级方法及装置 |
CN111930696B (zh) * | 2020-07-22 | 2023-08-01 | 建信金融科技有限责任公司 | 一种基于小程序的文件传输处理方法及系统 |
CN112671918B (zh) * | 2020-12-29 | 2024-03-05 | 平安普惠企业管理有限公司 | 基于二进制的分布式数据下载方法、装置、设备及介质 |
CN116760824A (zh) * | 2023-08-18 | 2023-09-15 | 安擎计算机信息股份有限公司 | 一种老化测试的测试文件分发方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005372A (zh) * | 2006-01-19 | 2007-07-25 | 思华科技(上海)有限公司 | 集群式缓存服务系统及其实现方法 |
CN101051980A (zh) * | 2007-05-21 | 2007-10-10 | 华为技术有限公司 | 一种文件数据分发方法及相关设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050216519A1 (en) * | 2004-03-26 | 2005-09-29 | Mayo Glenna G | Access point that monitors guest usage |
CN101030873A (zh) * | 2007-02-15 | 2007-09-05 | 深圳市迅雷网络技术有限公司 | 一种下载数据的方法及系统 |
-
2010
- 2010-12-31 CN CN201010624817.8A patent/CN102164160B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005372A (zh) * | 2006-01-19 | 2007-07-25 | 思华科技(上海)有限公司 | 集群式缓存服务系统及其实现方法 |
CN101051980A (zh) * | 2007-05-21 | 2007-10-10 | 华为技术有限公司 | 一种文件数据分发方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102164160A (zh) | 2011-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102164160B (zh) | 支持大并发量文件下载的方法、装置及系统 | |
US11349940B2 (en) | Server side data cache system | |
CN104731516B (zh) | 一种存取文件的方法、装置及分布式存储系统 | |
CN102523279B (zh) | 一种分布式文件系统及其热点文件存取方法 | |
CN103984640B (zh) | 实现数据预取方法及装置 | |
CN108011929A (zh) | 数据请求处理方法、装置、计算机设备和存储介质 | |
CN102523285B (zh) | 一种基于对象分布式文件系统的存储缓存方法 | |
US8250171B2 (en) | Content delivery apparatus, content delivery method, and content delivery program | |
CN103338242B (zh) | 一种基于多级缓存的混合云存储系统和方法 | |
CN103678523A (zh) | 分布式高速缓存cache数据访问方法和装置 | |
CN102771080A (zh) | 使用缓存的高效媒体传送的系统和方法 | |
CN103729247B (zh) | 数据获取请求的处理方法、系统及服务器 | |
CN101350030A (zh) | 用于缓存数据的方法及装置 | |
US8086629B2 (en) | Content delivery apparatus, content delivery method, and content delivery program | |
CN105635196A (zh) | 一种获取文件数据的方法、系统和应用服务器 | |
CN104811493A (zh) | 一种网络感知的虚拟机镜像存储系统及读写请求处理方法 | |
CN111158851B (zh) | 一种虚拟机快速部署方法 | |
CN101404649B (zh) | 一种基于cache的数据处理系统及其方法 | |
CN102546674A (zh) | 一种基于网络存储装置的目录树缓存系统及方法 | |
CN108777718B (zh) | 一种业务系统通过客户端访问读多写少系统的方法和装置 | |
CN109597903A (zh) | 图像文件处理装置和方法、文件存储系统及存储介质 | |
EP2695362B1 (en) | Multi-user cache system | |
JP5163171B2 (ja) | キャッシュシステムおよびサーバ | |
CN100473041C (zh) | 一种p2p系统中查找种子的方法及系统 | |
CN103491124A (zh) | 一种对彩信数据进行处理的方法及分布式缓存系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170124 Address after: 266100 Shandong Province, Qingdao city Laoshan District Songling Road No. 399 Patentee after: Poly Polytron Technologies Inc Address before: 266071 Laoshan, Qingdao province Hongkong District No. East Road, room 248, room 131 Patentee before: Qingdao Hisense Media Networks Co., Ltd. |