一种基于分布式资源节点的资源下载方法及装置与流程

文档序号:11843172阅读:269来源:国知局
一种基于分布式资源节点的资源下载方法及装置与流程

本发明涉及下载技术领域,尤其涉及一种基于分布式资源节点的资源下载方法及装置。



背景技术:

终端从网络侧下载文件或资源是最常见的一种用户上网行为,下载技术在互联网中无处不在,从数据的读取到文件的自定义下载,下载技术均起到至关重要的作用。

现有技术的下载方案可分为以下两种:

1、基于BT方式的下载方式,该方式在线用户越多下载速度越快;

2、端对端下载方式,主要是通过HTTP、FTP等协议从单一的下载资源节点所在服务器中进行下载。

但是,这两种下载方案存在以下缺陷,对于BT多用户分布式下载,其保证用户能够下载资源的前提是要有其它在线用户,以其他在线用户作为资源节点下载资源,这种资源节点不稳定,不能为用户提供稳定的资源节点;而利用端到端下载方式受限于服务器的网络带宽及负载性能影响,不能保证用户的下载速度。



技术实现要素:

本发明提供一种基于分布式资源节点的资源下载方法及装置,用以解决现有技术不能为用户提供稳定的资源节点以及不能保证用户的下载速度的问题。

一种基于分布式资源节点的资源下载方法,包括:

收到终端发送的下载请求时,根据所述下载请求确定所述终端请求下载的 文件的标识,并获取所述终端的性能指标;

根据终端请求下载的文件的标识,确定保存有所述文件的第一类资源节点,并获取所述第一类资源节点的性能指标,所述第一类资源节点至少包括两个,用于为终端提供下载资源;

根据所述终端的性能指标以及所述第一类资源节点中各资源节点的性能指标,生成资源分配任务并发送给所述终端,以使所述终端根据所述资源分配任务下载所述文件,所述资源分配任务包括:第一类资源节点中各资源节点标识、第一类资源节点中各资源节点提供给所述终端的下载线程数、各下载线程对应的所述文件的切片。

所述方法中,所述终端的性能指标包括当前可用带宽,第一类资源节点中各资源节点的性能指标包括当前可用带宽,根据所述终端的性能指标以及所述第一类资源节点中各资源节点的性能指标,生成资源分配任务,具体包括:

确定所述第一类资源节点中所有资源节点的当前可用带宽之和不小于所述终端的当前可用带宽时,确定生成资源分配任务。

本发明实施例在充分考虑终端可用带宽以及资源节点可用带宽,在资源节点可用带宽足够的情况下,为终端生成资源分配任务,从而保证终端下载资源的速率和稳定性,使终端能够顺畅的下载文件。

所述方法中,所述终端的性能指标还包括所述终端的IP地址,第一类资源节点中各资源节点的性能指标还包括位置区域信息、所属运营商信息,则根据所述终端的性能指标以及所述第一类资源节点中各资源节点的性能指标,生成资源分配任务,具体包括:

根据所述终端的IP地址确定所述终端所属的位置区域以及所述终端注册的运营商;

根据所述第一类资源节点中各资源节点的位置区域信息、所属运营商信息,选取所述第一类资源节点中与所述终端所属的位置区域以及所述终端注册的运营商都相同的第二类资源节点;

根据所述终端的性能指标以及所述第二类资源节点中各资源节点的性能指标,生成资源分配任务。

本发明实施例,可为终端分配较优的资源节点,以供终端更加快速的下载文件。

所述方法中,第一类资源节点中各资源节点的性能指标还包括:并发限制、当前用户数、出口带宽、当前CPU使用率、当前内存使用率以及当前磁盘I/O速率,则根据所述终端的性能指标以及所述第一类资源节点中各资源节点的性能指标,生成资源分配任务,具体包括:

针对第一类资源节点中每个资源节点的每个性能指标设置一个设定阈值,确定所述第一类资源节点中各性能指标均小于该性能指标对应的设定阈值的第三类资源节点;

根据所述终端的性能指标以及所述第三类资源节点中各资源节点的性能指标,生成资源分配任务。

利用本优选实施方式,在考虑负载均衡(资源节点性能指标)的基础上,根据性能相对较优的资源节点为终端生成资源分配任务,即将性能相对较优的资源节点分配给终端,从而在一定程度上提高终端的下载速度。

所述方法,生成资源分配任务并发送给终端后,还包括:

周期性获取所述终端在下载所述文件的过程中所使用的带宽以及所述终端的磁盘I/O;

根据所述终端的当前可用带宽以及所述所使用的带宽,计算所述终端在下载所述文件的过程中的带宽利用率;

确定所述带宽利用率小于设定带宽利用率阈值,且所述终端的磁盘I/O速率小于设定磁盘I/O速率阈值时,指示所述第一类资源节点中各资源节点新开启设定数目个下载线程,并确定各个所述新开启的下载线程对应的所述文件的切片。

本发明实施例能够实施监控终端可用带宽的利用情况,在可用带宽利用率 不高的情况下,实时开启新的下载线程,达到了充分利用终端可用带宽的目的。

所述方法,采用如下方式确定所述第一类资源节点中各资源节点可提供的下载线程数:

根据所述终端的当前可用带宽确定终端当前所需的下载线程总数;

确定所述第一类资源节点的总个数;

将所述下载线程总数除以所述第一类资源节点的总个数得到的结果作为所述第一类资源节点中各资源节点可提供的下载线程数。

本发明实施例提供了优选地为终端提供下载服务的各资源节点应开启的线程数的计算方式,也可采用其它计算方式。

本发明提供一种基于分布式资源节点的资源下载装置,包括:

第一获取单元,用于收到终端发送的下载请求时,根据所述下载请求确定所述终端请求下载的文件的标识,并获取所述终端的性能指标;

第二获取单元,用于根据终端请求下载的文件的标识,确定保存有所述文件的第一类资源节点,并获取所述第一类资源节点的性能指标,所述第一类资源节点至少包括两个,用于为终端提供下载资源;

发送单元,用于根据所述终端的性能指标以及所述第一类资源节点中各资源节点的性能指标,生成资源分配任务并发送给所述终端,以使所述终端根据所述资源分配任务下载所述文件,所述资源分配任务包括:第一类资源节点中各资源节点标识、第一类资源节点中各资源节点提供给所述终端的下载线程数、各下载线程对应的所述文件的切片。

所述装置中,所述发送单元具体用于:

在所述终端的性能指标包括当前可用带宽,第一类资源节点中各资源节点的性能指标包括当前可用带宽时,确定所述第一类资源节点中所有资源节点的当前可用带宽之和不小于所述终端的当前可用带宽时,确定生成资源分配任务。

所述装置中,所述发送单元还用于:

在所述终端的性能指标还包括所述终端的IP地址,第一类资源节点中各资源节点的性能指标还包括位置区域信息、所属运营商信息时,根据所述终端的IP地址确定所述终端所属的位置区域以及所述终端注册的运营商;

根据所述第一类资源节点中各资源节点的位置区域信息、所属运营商信息,选取所述第一类资源节点中与所述终端所属的位置区域以及所述终端注册的运营商都相同的第二类资源节点;

根据所述终端的性能指标以及所述第二类资源节点中各资源节点的性能指标,生成资源分配任务。

所述装置中,所述发送单元还用于:

在第一类资源节点中各资源节点的性能指标还包括:并发限制、当前用户数、出口带宽、当前CPU使用率、当前内存使用率以及当前磁盘I/O速率时,针对第一类资源节点中每个资源节点的每个性能指标设置一个设定阈值,确定所述第一类资源节点中各性能指标均小于该性能指标对应的设定阈值的第三类资源节点;

根据所述终端的性能指标以及所述第三类资源节点中各资源节点的性能指标,生成资源分配任务。

所述装置,还包括:

指示单元,用于生成资源分配任务并发送给终端后,周期性获取所述终端在下载所述文件的过程中所使用的带宽以及所述终端的磁盘I/O;

根据所述终端的当前可用带宽以及所述所使用的带宽,计算所述终端在下载所述文件的过程中的带宽利用率;

确定所述带宽利用率小于设定带宽利用率阈值,且所述终端的磁盘I/O速率小于设定磁盘I/O速率阈值时,指示所述第一类资源节点中各资源节点新开启设定数目个下载线程,并确定各个所述新开启的下载线程对应的所述文件的切片。

所述装置中,所述发送单元采用如下方式确定所述第一类资源节点中各资 源节点可提供的下载线程数:

根据所述终端的当前可用带宽确定终端当前所需的下载线程总数;

确定所述第一类资源节点的总个数;

将所述下载线程总数除以所述第一类资源节点的总个数得到的结果作为所述第一类资源节点中各资源节点可提供的下载线程数。

利用本发明提供的基于分布式资源节点的资源下载方法及装置,具有以下有益效果:资源节点采用分布式部署方式,且资源都存储在资源节点中,这些资源节点不会由于用户的操作而减少,且由于资源节点有多个,能够在一定程度上增加网络带宽和负载能力,当一个资源节点达到并发限制时,可以从其他资源接节点继续下载资源,从而保证了用户获取资源的稳定性,并且本发明通过综合考虑终端和资源节点的性能情况,为终端生成资源分配任务,从而能够根据终端的性能和资源节点的性能,为终端分配性能较好的资源节点,进而在一定程度使终端能够快速稳定的下载资源。

附图说明

图1为本发明实施例提供的基于分布式资源节点的资源下载方法流程图;

图2为本发明实施例提供的确定第一类资源节点中各资源节点可提供的下载线程数的方法流程图;

图3为本发明实施例提供的一种生成资源分配任务优选实施方式流程图;

图4为本发明实施例提供的另一种生成资源分配任务优选实施方式流程图;

图5为本发明实施例提供的在终端下载文件的过程中服务器指示各资源节点开启新下载线程的方法流程图;

图6为本发明实施例提供的一种基于分布式资源节点的资源下载方法的具体实施过程;

图7为本发明实施例提供的终端根据资源分配任务下载文件的流程图;

图8为本发明实施例提供的另一基于分布式资源节点的资源下载方法的具体实施过程;

图9为本发明实施例提供的基于分布式资源节点的资源下载装置示意图。

具体实施方式

下面结合附图和实施例对本发明提供的基于分布式资源节点的资源下载方法及装置进行更详细地说明。

本发明实施例提供一种基于分布式资源节点的资源下载方法,如图1所示,包括:

步骤101,收到终端发送的下载请求时,根据所述下载请求确定终端请求下载的文件的标识,并获取所述终端的性能指标。

具体的,根据所述下载请求确定终端请求下载的文件的标识,具体包括:服务器解析终端发送的下载请求携带的内容,从该内容中确定终端请求下载的文件的标识,所述下载请求中携带了终端请求下载的文件的标识。优选地,文件的标识为文件的名称。

优选地,服务器获取终端的性能指标的方式为:解析终端发送的下载指令的内容,从解析出的内容中获取终端的性能指标,即终端发送的下载请求中携带终端的性能指标。具体的,终端在发送下载请求时,获取终端当前的性能指标添加到下载请求中并将该下载请求发送给服务器。其中,终端的性能指标可以但不限定于包括:终端的IP地址、终端的带宽大小、终端当前可用带宽、终端当前正在执行的连接数。或者,服务器获取终端的性能指标的方式为:服务器在接收到终端发送的下载请求后,向终端发送获取终端当前性能指标的指令,终端接收到该指令后获取自身的性能指标,并将性能指标响应给服务器。

步骤102,根据终端请求下载的文件的标识,确定保存有所述文件的第一类资源节点,并获取所述第一类资源节点的性能指标,所述第一类资源节点至少包括两个,用于为终端提供下载资源。

具体的,不同的资源节点可能保存了不同的可供终端下载的文件,也可能保存了相同的可供终端下载的文件,保存相同下载文件的资源节点可能保存了整个文件,也可能保存了文件的切片。在确定终端请求下载的文件的标识后,首先确定保存有该文件的所有资源节点(第一类资源节点),从而保证为终端提供能够下载到请求的文件的资源节点。本发明实施例中将保存有终端请求下载的文件的资源节点称为第一类资源节点,确定第一类资源节点后,进一步获取第一类资源节点的性能指标。获取第一类资源节点性能指标的方式为现有技术,这里不再赘述。

步骤103,根据所述终端的性能指标以及所述第一类资源节点中各资源节点的性能指标,生成资源分配任务并发送给所述终端,以使所述终端根据所述资源分配任务下载所述文件,所述资源分配任务包括:第一类资源节点中各资源节点标识、第一类资源节点中各资源节点提供给所述终端的下载线程数、各下载线程对应的所述文件的切片。

具体的,根据终端当前的性能指标以及第一类资源节点中各资源节点的性能指标生成资源分配任务并发送给终端,以使终端根据该资源分配任务从第一类资源节点中下载文件(资源)。所生成的下在任务中包括:分配给终端的第一类资源节点、第一类资源节点中各资源节点提供给所述终端的下载线程数、各下载线程对应的所述文件的切片。资源分配任务还可以包括其他信息比如第一类资源节点中各资源节点所处的位置信息等,这不不做限定。具体的,每个资源节点为终端提供不同的终端请求下载的文件的切片,终端在下载成功文件后,将从各个资源节点下载到的文件的切片组合成完整的文件。

具体实施时,在生成资源分配任务之前,先根据终端请求的下载资源确定下载的协议类型,该协议类型可以为FTP(文件传输协议)或HTTP(超文本传输协议)等。

本发明实施例中各资源节点分布式部署,且不会由于终端是否在线或终端是否正在下载资源而较少,并且,本发明实施例通过综合考虑终端和资源节点 的性能情况,为终端生成资源分配任务,从而能够根据终端的性能和资源节点的性能,为终端分配性能较好的资源节点,进而在一定程度使终端能够快速稳定的下载资源。

优选地,确定终端发送的下载请求的历史数据中存在与终端本次发送的下载请求相同的历史下载请求时,根据历史下载请求中携带的资源分配任务生成资源分配任务,并发送给终端。

具体的,检测该终端发送的下载请求中是否有与该终端本次发送的下载请求相同或类似的下载请求,如果有,则利用与历史数据中的下载请求相同的资源分配任务生成新的资源分配任务并发送给该终端。其中两个相同或相似的下载请求为:下载的文件相同,终端带宽利用率都在一定阈值范围内,终端当前在执行的下载线程数都在一定的阈值范围内。

本优选实施方式,通过利用历史数据为生成资源分配任务并发送给终端,在一定程度上提高了下载速率。

基于图1所示的实施例,优选地,终端的性能指标包括当前可用带宽,第一类资源节点中各资源节点的性能指标包括当前可用带宽,根据所述终端的性能指标以及所述第一类资源节点中各资源节点的性能指标,生成资源分配任务,具体包括:

确定所述第一类资源节点中所有资源节点的当前可用带宽之和不小于所述终端的当前可用带宽时,确定生成资源分配任务。

确定所述第一类资源节点中所有资源节点的当前可用带宽之和小于所述终端的当前可用带宽时,向所述终端发送等待下载指令。

具体的,每个资源节点的性能指标包括资源节点当前可用带宽,当第一类资源节点中所有资源节点的当前可用带宽之和大于或等于终端的当前可用带宽时,才具备生成资源分配任务的条件,即才具备为终端分配资源节点的条件,如果第一类资源节点中所有资源节点的当前可用带宽之和小于终端的当前可用带宽,说明资源节点不具备为终端提供下载服务的条件,则终端需等待,直 到第一类资源节点中所有资源节点的当前可用带宽之和大于或等于终端的当前可用带宽时,才生成资源分配任务。

本发明实施例在充分考虑终端可用带宽以及资源节点可用带宽,在资源节点可用带宽足够的情况下,为终端生成资源分配任务,从而保证终端下载资源的速率和稳定性,使终端能够顺畅的下载文件。

具体的,采用如下方式确定所述第一类资源节点中各资源节点可提供的下载线程数,如图2所示,包括:

步骤201,根据所述终端的当前可用带宽确定终端所需的下载线程总数M;

步骤202,确定所述第一类资源节点的总个数N;

步骤203,将所述下载线程总数M除以所述第一类资源节点的总个数N得到的结果P作为所述第一类资源节点中各资源节点可提供的下载线程数。

具体的,P=M/N,即每个第一类资源节点为终端提供P个下载线程。

可根据终端的当前可用带宽计算出终端所需的下载线程总数,即在充分利用终端可用带宽的情况下,终端所需要的下载线程总数。在各资源节点保存了完整的终端所请求下载的文件时,将终端所请求下载的文件进行切片,具体可分为N个切片文件,从而使每个线程都对应一个切片文件。具体的,切片文件的大小以及具体的切片文件的个数都不是固定的,都会随着第一类资源节点的个数而改变,或者根据实际情况具体设定。将文件进行切片的方法为现有方法,这里不再赘述。本发明实施例提供了优选地为终端提供下载服务的各资源节点应开启的线程数的计算方式,也可采用其它计算方式。其中,根据终端的可用带宽计算终端所需的下载线程总数可采用现有方法进行计算,这里不再赘述。

优选地,所述终端的性能指标还包括所述终端的IP地址,第一类资源节点中各资源节点的性能指标还包括位置区域信息、所属运营商信息,则在确定第一类资源节点中所有资源节点的当前可用带宽之和不小于终端的当前可用带宽时,则根据所述终端的性能指标以及所述第一类资源节点中各资源节点的性能指标,生成资源分配任务,如图3所示,具体包括:

步骤301,根据所述终端的IP地址确定所述终端所属的位置区域以及所述终端注册的运营商。

具体的,终端的性能指标中包括该终端的IP地址,则可根据终端的IP地址确定终端所在的位置区域以及终端注册的运营商,比如,根据终端的IP地址确定终端所在的省份、城市,以及终端注册的运营商(包括移动、联通、电信等)。

步骤302,根据第一类资源节点中各资源节点的位置区域信息、所属运营商信息,选取所述第一类资源节点中与所述终端所属的位置区域以及所述终端注册的运营商都相同的第二类资源节点。

步骤303,根据所述终端的性能指标以及所述第二类资源节点中各资源节点的性能指标,生成资源分配任务。

具体的,每个资源节点都有其所属的位置区域信息以及所属的运营商信息,根据终端所属的位置信息以及运营商信息,将与终端所属的位置信息以及运营商信息相同的资源节点归结为第二类资源节点,并根据第二类资源节点生成资源分配任务。比如,终端在北京、运营商为移动,则将在北京的资源节点并且属于移动的资源节点作为第二类资源节点,并根据这些资源节点生成资源分配任务。其中,第二类资源节点是从第一类资源节点中筛选出来的,即,第二类资源节点属于第一类资源节点。

根据所述终端的性能指标以及所述第二类资源节点中各资源节点的性能指标,生成的资源分配任务包括:第二类资源节点中各资源节点标识、第二类资源节点中各资源节点提供给所述终端的下载线程数、各下载线程对应的所述文件的切片。具体的,每个第二类资源节点中各资源节点提供给所述终端的下载线程数的计算方式与图2所示的实施例类似,各下载线程对应的所述文件的切片的确定方式也与图2所示的实施例类似,这里不再赘述。

本优选实施方式,可为终端分配较优的资源节点,以供终端更加快速的下载文件。

优选地,第一类资源节点中各资源节点的性能指标还包括:并发限制、当前用户数、出口带宽、当前CPU使用率、当前内存使用率以及当前磁盘I/O速率,则在确定第一类资源节点中所有资源节点的当前可用带宽之和不小于终端的当前可用带宽时,根据所述终端的性能指标以及所述第一类资源节点中各资源节点的性能指标,生成资源分配任务,如图4所示,具体包括:

步骤401,针对第一类资源节点中每个资源节点的每个性能指标设置一个设定阈值,确定所述第一类资源节点中各性能指标均小于该性能指标对应的设定阈值的第三类资源节点。

其中,设定阈值的大小可根据实际情况而定,这里不做限定。

步骤402,根据所述终端的性能指标以及所述第三类资源节点中各资源节点的性能指标,生成资源分配任务。

其中,资源节点的出口带宽与并发限制结合使用,可以更好的实现资源节点的负载均衡。对于终端而言,其下载的速率是通过提高线程数来提高的,终端的每个线程均会指向为其分配的资源节点中保存的终端所要下载的文件,而常用的HTTP与FTP下载协议都存在着最大并发线程数的限制,每个资源节点允许接入的线程是有最大值的,本发明实施例在考虑资源节点的出口带宽和并发限制的情况下,可以在负载均衡的基础上为终端生成资源分配任务,从而保证生成的资源分配任务不会超过资源节点的并发限制。

具体的,针对第一类资源节点中的不同的性能指标分别设置一个设定阈值,比如,针对并发限制设置一个并发限制阈值、针对当前用户数设置一个当前用户数阈值、针对当前CPU使用率设置一个当前CPU使用率阈值等,确定每个性能指标的均小于该性能指标对应的设定阈值的第三类资源节点,并根据第三类资源节点生成资源分配任务,其中,第三类资源节点是从第一类资源节点中筛选出来的,即,第三类资源节点属于第一类资源节点。

根据所述终端的性能指标以及所述第三类资源节点中各资源节点的性能指标,生成资源分配任务包括:第三类资源节点中各资源节点标识、第三类资 源节点中各资源节点提供给所述终端的下载线程数、各下载线程对应的所述文件的切片。具体的,每个第三类资源节点中各资源节点提供给所述终端的下载线程数的计算方式与图2所示的实施例类似,各下载线程对应的所述文件的切片的确定方式也与图2所示的实施例类似,这里不再赘述。

利用本优选实施方式,在考虑负载均衡(资源节点性能指标)的基础上,根据性能相对较优的资源节点为终端生成资源分配任务,即将性能相对较优的资源节点分配给终端,从而在一定程度上提高终端的下载速度。本优选实施方式也可与图3所示的优选实施方式结合实施。

其中,资源节点的性能指标还可以包括:网络带宽使用率,网络连接数等。

基于上述实施例,生成资源分配任务并发送给终端后,如图5所示,还包括:

步骤501,周期性获取所述终端在下载所述文件的过程中所使用的带宽以及所述终端的磁盘I/O。

步骤502,根据所述终端的当前可用带宽以及所述所使用的带宽,计算所述终端在下载所述文件的过程中的带宽利用率。

具体的,终端在下载文件过程中的带宽利用率为终端在下载文件过程中所使用的带宽除以终端当前可用带宽得到的结果。

步骤503,确定所述带宽利用率小于设定带宽利用率阈值,且所述终端的磁盘I/O速率小于设定磁盘I/O速率阈值时,指示所述第一类资源节点中各资源节点新开启设定数目个下载线程,并确定各个所述新开启的下载线程对应的所述文件的切片。

其中,设定带宽利用率阈值优选为80%,也可以为其它数值,这里不做限定。

步骤501中,除了可获取终端在下载过程中所使用的带宽和磁盘I/O外,还可周期性获取终端在下载文件的过程中终端的内存使用情况、CPU使用情况、下载线程数等。服务器可根据获取的终端的这些信息进一步确定是否有必 要指示第一类资源节点中各资源节点新开启下载线程。

进一步优选地,步骤503中,确定所述带宽利用率小于设定带宽利用率阈值,且所述终端的磁盘I/O速率小于设定磁盘I/O速率阈值,且确定第一类资源节点中各资源节点的性能指标小于该性能指标对应的设定阈值时,指示所述第一类资源节点中各资源节点新开启设定数目个下载线程,并确定各个所述新开启的下载线程对应的所述文件的切片。

本优选实施方式中的第一类资源节点还可替换为图3所示优选实施方式中的第二类资源节点或图4所示优选实施方式中的第三类资源节点,这样,如果终端在下载文件的过程中是从第二类或第三类资源节点中下载文件,那么在满足步骤503的条件时,服务器将指示第二类或第三类资源接新开启设定数目个下载线程。

具体的,指示各资源节点开启设定数目个线程的方式与图2所示的实施例类似,这不再赘述。其中,设定数目可根据实际的终端剩余的可用带宽以及资源节点性能情况而定,优选地,设定数目为初始分配的线程数的25%再除以资源节点的个数所得的结果。

本发明实施例中,在终端下载文件的过程中,实时监控终端侧可用带宽的利用情况,如果可用带宽利用率过低,则根据图1以及其优选实施方式进一步为增加下载线程,从而达到充分利用终端可用带宽的目的。在此为终端分配资源节点时,还会优先分配性能较好的资源节点,如果被分配的资源节点的性能指标都小于设定阈值,则为终端分配正在执行的下载线程较少的资源节点,确定终端的带宽利用率达到设定带宽利用率阈值或磁盘I/O达到设定阈值时,停止指示资源节点开启新的线程。

在终端下载文件的过程中,会实时监控各下载线程的完成情况,当某个下载线程的任务完成后,分析正在运行的下载线程,获取其中任务最重的或用时最长的一个线程,并自动将该线程的任务的一部分调整给已完成任务的下载线程,循环执行这个过程,直到所有线程的任务都执行完毕。

上述各实施例中,终端与资源节点的对应方式包括:多个资源节点同一时刻为同一终端提供下载线程,同一终端同一时刻与每个资源节点之间可以建立至少一个线程。

实施例一

本发明实施例提供的基于分布式资源节点的资源下载方法在服务器侧实现,服务器、终端之间交互的过程如图6所示,包括:

步骤601,终端向服务器发送下载请求。

步骤602,服务器接收终端发送的下载请求,确定终端请求下载的文件的标识,并获取该终端的性能指标。

步骤603,服务器根据终端请求下载的文件的标识,遍历所有的资源节点,确定保存有所述文件的第一类资源节点,并获取所述第一类资源节点的性能指标。

步骤604,根据终端的性能指标以及第一类资源节点中各资源节点的性能指标为终端生成资源分配任务并发送给终端。

步骤605,终端接收服务器发送的资源分配任务,根据该资源分配任务进行文件下载。

具体的,终端接收到资源分配任务后,终端根据该资源分配任务在本地生成内容文件和配置文件,配置文件的内容包括:文件在本地保存的绝对路径、文件的大小、资源节点提供的线程的总个数、已经下载的文件大小、各线程对应的文件的切片。内容文件的初始大小为0,该文件的大小将在资源分配任务的执行过程中随着文件的下载而增大。

终端根据生成的配置文件进行文件下载,终端在下载之前,根据资源分配任务将下载任务分为若干子任务进行下载,每个子任务根据终端的缓存设定分为若干块,单个线程将按子任务划分的块进行下载,每个线程根据块的起始位置开始下载一直到该块的结束位置处结束该块的下载。每个线程每次完成一块下载后就要调整任务,下载下一个块,知道完成子任务中所有块的下载,才表 示当前线程的下载任务完成了。

步骤606,服务器接收终端发送的下载完成消息时,释放已分配的资源。

资源管理服务器收到下载完成消息后,将自动释放相关资源,并将下载任务移至历史数据库中,释放资源监控任务。

具体的终端根据资源分配任务下载文件的过程如图7所示,包括:

步骤701,终端根据收到的资源分配任务生成配置文件。

步骤702,根据配置文件生成多个线程,并从对应的资源节点读取文件的切片。

具体的,文件数据读取时,需要根据配置文件中记录的起始位置和结束位置进行读取。由于这里读取文件是从位于网络中的资源节点中读取的,因此所采用的下载协议不同,读取文件的方法也不相同,目前采用的端到端下载协议为FTP和HTTP,对应的读取文件的方法分别为:

针对FTP协议,可以使用REST(表述性状态转移),RETR(下载命令)进行多线程和断点续传文件下载,例如:向服务器发送”RETR+文件名”,通知服务器要下载的文件名,这是服务器开始定位文件指针读取文件并发送文件数据给终端。

针对HTTP协议,HTTP协议的Range头可以从文件的指定位置开始下载,下载到指定位置结束,其单位为byte。例如:Range:bytes=2097152-4194304,标识从文件的2M的位置开始下载,下载到4M位置结束。

步骤703,终端将从资源节点上读取的文件数据写入本地的内容文件。

具体的,终端需要定时将从资源节点上读取的文件数据写入本地的内容文件,同时需要更新配置文件中的任务信息。本发明采用的是多线程的下载技术,所以进行本地内容文件写入时,需要考虑并发问题以及写入顺序问题:

并发处理:多个线程下载文件时,各线程均需要对内容文件和配置文件进行读写。为了避免由于并发冲突而造成访问文件失败的情况,需要定义一个全局变量来标记文件正在被某个线程访问,其它线程需要等待,当此线程写入完 成后在更改此标记,以供其他线程访问内容文件和配置文件。

写入顺序处理:为了保证写入后的内容文件正常可用,需要根据原始资源文件按顺序将文件数据写入本地内容文件。但是多线程下载过程中,各线程是同步执行的,会同时往本地内容文件写入文件数据,而线程与线程之间写入的数据并没有按照所下载的数据文件的顺序写入,若按照普通的OutputStream的写入方式,最后下载的文件将会失真。因此需要擦用支持从文件的任意一个位置读写的处理方法,例如,Java语言中的java.io.RandomAccessFile类,以确保数据写入顺序与原始文件数据顺序一致。

步骤704,终端确定文件下载完成后,对所下载的文件的可用性进行校验,并将下载完成的消息发送个服务器。

具体的,当下载完成后,终端会对所下载的文件的可用性进行校验,校验时使用MD5算法,比对终端生成的内容文件与服务器中记录的基准数据,若校验通过则标志着下载成功。

实施例二

本发明实施例可以包括资源管理服务器、资源聚集服务器、终端、多个分布式资源节点,其中,资源管理服务器用于管理资源聚集服务器和终端,资源聚集服务器用于管理多个分布式资源节点并与资源管理服务器通信,多个分布式资源节点用于为终端提供下载资源。则本发明实施例提供的基于分布式资源节点的资源下载方法的具体实施过程如图8所示,包括:

步骤801,终端向资源管理服务器才发送下载请求。

步骤802,资管管理服务器接收终端发送的下载请求,确定终端请求下载的文件的标识,获取终端的性能指标,并向资源聚集服务器发送文件查询请求。

步骤803,资源聚集服务器向资源管理服务器发送成功接收文件查询请求的响应。

步骤804,资源聚集服务器获取保存有终端请求下载的文件的第一类资源节点的性能指标并向资源管理服务器反馈第一类资源节点的性能指标。

步骤805,资源管理服务器向资源聚集服务器发送成功接收第一类资源节点的性能指标的响应。

步骤806,资源管理服务器根据根据终端的性能指标以及第一类资源节点中各资源节点的性能指标为终端生成资源分配任务并发送给终端。

终端接收到资源分配任务后的流程与实施例一中终端接收到资源分配任务的流程类似,这里不再赘述。

本发明提供一种基于分布式资源节点的资源下载装置,如图9所示,包括:

第一获取单元901,用于收到终端发送的下载请求时,根据所述下载请求确定所述终端请求下载的文件的标识,并获取所述终端的性能指标;

第二获取单元902,用于根据终端请求下载的文件的标识,确定保存有所述文件的第一类资源节点,并获取所述第一类资源节点的性能指标,所述第一类资源节点至少包括两个,用于为终端提供下载资源;

发送单元903,用于根据所述终端的性能指标以及所述第一类资源节点中各资源节点的性能指标,生成资源分配任务并发送给所述终端,以使所述终端根据所述资源分配任务下载所述文件,所述资源分配任务包括:第一类资源节点中各资源节点标识、第一类资源节点中各资源节点提供给所述终端的下载线程数、各下载线程对应的所述文件的切片。

优选地,所述装置中,所述发送单元具体用于:

在所述终端的性能指标包括当前可用带宽,第一类资源节点中各资源节点的性能指标包括当前可用带宽时,确定所述第一类资源节点中所有资源节点的当前可用带宽之和不小于所述终端的当前可用带宽时,确定生成资源分配任务。

优选地,所述装置中,所述发送单元还用于:

在所述终端的性能指标还包括所述终端的IP地址,第一类资源节点中各资源节点的性能指标还包括位置区域信息、所属运营商信息时,根据所述终端的IP地址确定所述终端所属的位置区域以及所述终端注册的运营商;

根据所述第一类资源节点中各资源节点的位置区域信息、所属运营商信息,选取所述第一类资源节点中与所述终端所属的位置区域以及所述终端注册的运营商都相同的第二类资源节点;

根据所述终端的性能指标以及所述第二类资源节点中各资源节点的性能指标,生成资源分配任务。

优选地,所述装置中,所述发送单元还用于:

在第一类资源节点中各资源节点的性能指标还包括:并发限制、当前用户数、出口带宽、当前CPU使用率、当前内存使用率以及当前磁盘I/O速率时,针对第一类资源节点中每个资源节点的每个性能指标设置一个设定阈值,确定所述第一类资源节点中各性能指标均小于该性能指标对应的设定阈值的第三类资源节点;

根据所述终端的性能指标以及所述第三类资源节点中各资源节点的性能指标,生成资源分配任务。

优选地,所述装置,还包括:

指示单元904,用于生成资源分配任务并发送给终端后,周期性获取所述终端在下载所述文件的过程中所使用的带宽以及所述终端的磁盘I/O;

根据所述终端的当前可用带宽以及所述所使用的带宽,计算所述终端在下载所述文件的过程中的带宽利用率;

确定所述带宽利用率小于设定带宽利用率阈值,且所述终端的磁盘I/O速率小于设定磁盘I/O速率阈值时,指示所述第一类资源节点中各资源节点新开启设定数目个下载线程,并确定各个所述新开启的下载线程对应的所述文件的切片。

优选地,所述装置中,所述发送单元采用如下方式确定所述第一类资源节点中各资源节点可提供的下载线程数:

根据所述终端的当前可用带宽确定终端当前所需的下载线程总数;

确定所述第一类资源节点的总个数;

将所述下载线程总数除以所述第一类资源节点的总个数得到的结果作为所述第一类资源节点中各资源节点可提供的下载线程数。

利用本发明实施例提供的基于分布式资源节点的资源下载方法及装置,具有以下有益效果:资源节点采用分布式部署方式,且资源都存储在资源节点中,这些资源节点不会由于用户的操作而减少,且由于资源节点有多个,能够在一定程度上增加网络带宽和负载能力,当一个资源节点达到并发限制时,可以从其他资源接节点继续下载资源,从而保证了用户获取资源的稳定性,并且本发明通过综合考虑终端和资源节点的性能情况,为终端生成资源分配任务,从而能够根据终端的性能和资源节点的性能,为终端分配性能较好的资源节点,进而在一定程度使终端能够快速稳定的下载资源。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基 本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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