首页> 中国专利> 一种海量大文件分布式网络下载方法及装置

一种海量大文件分布式网络下载方法及装置

摘要

本发明公开了一种海量大文件分布式网络下载方法及装置。其中,该方法包括:在控制节点提交下载地址;根据所述下载地址监控任务状态;根据所述任务状态,进行多线程下载,得到下载数据;判断所述下载数据是否需要重复下载。本发明解决了现有技术在服务器上虽然可以不间断的运行下载程序,但是受到单台服务器网络、存储等资源限制,在下载数据文件非常多时,下载周期较长。curl、wget等命令不支持多线程技术,下载单个大文件的时候,效率不高,下载速度较慢,同时,这些命令不支持远程rpc调用,不利于远程监控和调度下载任务的技术问题。

著录项

  • 公开/公告号CN113840000A

    专利类型发明专利

  • 公开/公告日2021-12-24

    原文格式PDF

  • 申请/专利权人 山东易华录信息技术有限公司;

    申请/专利号CN202111109211.5

  • 发明设计人 邱江飞;娄伟贞;朱梅;吴敬超;

    申请日2021-09-22

  • 分类号H04L29/08(20060101);G06F9/50(20060101);

  • 代理机构11701 北京众泽信达知识产权代理事务所(普通合伙);

  • 代理人张艳萍

  • 地址 266000 山东省青岛市即墨区鳌山卫街道办事处海科创业中心C楼5层

  • 入库时间 2023-06-19 13:48:08

说明书

技术领域

本发明涉及数据下载领域,具体而言,涉及一种海量大文件分布式网络下载方法及装置。

背景技术

随着智能化科技的不断发展,人们的生活、工作、学习之中越来越多地用到了智能化设备,使用智能化科技手段,提高了人们生活的质量,增加了人们学习和工作的效率。

在大气科学、水文、海洋学、环境模拟、地球物理等诸多科研领域,数据集通常是以特定格式的文件发布在互联网上进行共享访问,常见的数据格式包括netCDF、HDF、GRIB等。这些科研领域的数据通常按照数据类型和时间的组织形式发布,有的将每天的数据形成一个文件,有的是按月或者按年,这些文件包含了几年、几十年、甚至近百年的数据,且包含了不同的观测指标,因此数据文件数量非常多,单个文件最大可达到几十G,总量非常巨大。

为了获取这些文件,通常是采用在服务器端运行自动化的脚本,通过curl、wget等网络命令对所需要的文件不间断的爬取,直到全部下载完成为止。在服务器上虽然可以不间断的运行下载程序,但是受到单台服务器网络、存储等资源限制,在下载数据文件非常多时,下载周期较长。curl、wget等命令不支持多线程技术,下载单个大文件的时候,效率不高,下载速度较慢,同时,这些命令不支持远程rpc调用,不利于远程监控和调度下载任务。通常网站为了安全,会对频繁爬取网站或者下载流量超过阈值的IP进行限制或封锁。单点下载大量数据很容易导致IP被封,从而导致数据无法被下载。

本发明的目的是提供一种通过分布式网络和多线程下载技术来提高海量大文件下载效率的方法。通过将许多下载任务分配给多台服务器协同工作来缩短下载所需要的时间。通过多线程下载技术,提高单个文件的下载速度。通过分布式集群的方式,可以将受限IP的任务迁移到别的节点来避免单点IP被封锁导致的任务失败。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本发明实施例提供了一种海量大文件分布式网络下载方法及装置,以至少解决现有技术在服务器上虽然可以不间断的运行下载程序,但是受到单台服务器网络、存储等资源限制,在下载数据文件非常多时,下载周期较长。curl、wget等命令不支持多线程技术,下载单个大文件的时候,效率不高,下载速度较慢,同时,这些命令不支持远程rpc调用,不利于远程监控和调度下载任务的技术问题。

根据本发明实施例的一个方面,提供了一种海量大文件分布式网络下载方法,包括:在控制节点提交下载地址;根据所述下载地址监控任务状态;根据所述任务状态,进行多线程下载,得到下载数据;判断所述下载数据是否需要重复下载。

可选的,在所述根据所述下载地址监控任务状态之后,所述方法还包括:根据所述任务状态,获取繁忙情况。

可选的,所述任务状态包括:繁忙情况、闲置情况。

可选的,在所述判断所述下载数据是否需要重复下载之后,所述方法还包括:重复至所述根据所述下载地址监控任务状态。

根据本发明实施例的另一方面,还提供了一种海量大文件分布式网络下载装置,包括:下载模块,用于在控制节点提交下载地址;监控模块,用于根据所述下载地址监控任务状态;多线程模块,用于根据所述任务状态,进行多线程下载,得到下载数据;判断模块,用于判断所述下载数据是否需要重复下载。

根据本发明实施例的另一方面,还提供了一种非易失性存储介质,所述非易失性存储介质包括存储的程序,其中,所述程序运行时控制非易失性存储介质所在的设备执行一种海量大文件分布式网络下载方法。

根据本发明实施例的另一方面,还提供了一种电子装置,包含处理器和存储器;所述存储器中存储有计算机可读指令,所述处理器用于运行所述计算机可读指令,其中,所述计算机可读指令运行时执行一种海量大文件分布式网络下载方法。

在本发明实施例中,采用在控制节点提交下载地址;根据所述下载地址监控任务状态;根据所述任务状态,进行多线程下载,得到下载数据;判断所述下载数据是否需要重复下载的方式,解决了现有技术在服务器上虽然可以不间断的运行下载程序,但是受到单台服务器网络、存储等资源限制,在下载数据文件非常多时,下载周期较长。curl、wget等命令不支持多线程技术,下载单个大文件的时候,效率不高,下载速度较慢,同时,这些命令不支持远程rpc调用,不利于远程监控和调度下载任务的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种海量大文件分布式网络下载方法的流程图;

图2是根据本发明实施例的一种海量大文件分布式网络下载装置的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明实施例,提供了一种海量大文件分布式网络下载方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

实施例一

图1是根据本发明实施例的一种海量大文件分布式网络下载方法的流程图,如图1所示,该方法包括如下步骤:

步骤S102,在控制节点提交下载地址。

步骤S104,根据所述下载地址监控任务状态。

步骤S106,根据所述任务状态,进行多线程下载,得到下载数据。

步骤S108,判断所述下载数据是否需要重复下载。

可选的,在所述根据所述下载地址监控任务状态之后,所述方法还包括:根据所述任务状态,获取繁忙情况。

可选的,所述任务状态包括:繁忙情况、闲置情况。

可选的,在所述判断所述下载数据是否需要重复下载之后,所述方法还包括:重复至所述根据所述下载地址监控任务状态。

具体的,本发明实施例通过以下步骤进行实现。

本技术方案将服务器按执行的任务类型划分为控制节点、监控节点和下载节点3种类型。

控制节点负责解析原始链接中包含的所有下载链接,并将任务添加到任务队列中。

监控节点负责监控每个下载节点的繁忙状态、下载进度、任务状态等,并选择相对空闲的机器,分配任务队列中的任务。

下载节点负责执行具体的下载任务。每个下载节点需要运行aria2程序。aria2是一个支持多线程的下载程序,支持断点续传,支持使用多个源或协议下载文件,可以加速完成下载。aria2内置的RPC接口,可以方便的查看任务进度和状态。

步骤一:在控制节点提交一个下载地址,例如这个地址是个某个文件服务器的根目录。控制节点通过网页分析,递归调用,获取所有文件的下载地址,并将下载地址放入任务队列里。

步骤二:监控节点定时收集和监控任务队列里的任务执行状态、执行进度、以及下载节点的繁忙程度。

步骤三:当监控节点监测到队列里有新的任务加入时,监控节点会获取每个下载节点的繁忙状态,优先将新任务分配给空闲的节点。队列遵循先进先出的原则。当所有节点都繁忙时,新任务在队列里处于等待状态。

步骤四:下载节点接收到任务后,将任务交给aria2进行多线程下载。

步骤五:监控节点通过rpc远程调用的方式与下载节点通信,定时对数据的下载数据、下载状态进行更新,并将节点和任务状态信息存储到zookeeper当中。若数据下载完成,则将任务从队列里面移除。

步骤六:若数据下载失败,当前节点会进行重试。当超过重试次数限制之后,则监控节点会将任务状态标记为失败,并记录当前下载当回话状态和已下载当大小和位置,然后跳过执行下一个任务。

步骤七:若监控节点监测到是由于目标网站对当前节点的IP进行封禁导致的,则监控节点将失败的任务分配其他不同IP的主机节点,并从共享存储中读取已下载的内容,从上次下载的位置继续下载,从而避免重复下载带来的资源浪费。

步骤九:重复步骤二到八,直到所有的任务都执行完毕。

通过上述实施例,解决了现有技术在服务器上虽然可以不间断的运行下载程序,但是受到单台服务器网络、存储等资源限制,在下载数据文件非常多时,下载周期较长。curl、wget等命令不支持多线程技术,下载单个大文件的时候,效率不高,下载速度较慢,同时,这些命令不支持远程rpc调用,不利于远程监控和调度下载任务的技术问题。

实施例二

图2是根据本发明实施例的一种海量大文件分布式网络下载装置的流程图,如图2所示,该装置包括:

下载模块20,用于在控制节点提交下载地址。

监控模块22,用于根据所述下载地址监控任务状态。

多线程模块24,用于根据所述任务状态,进行多线程下载,得到下载数据。

判断模块26,用于判断所述下载数据是否需要重复下载。

可选的,在所述根据所述下载地址监控任务状态之后,所述方法还包括:根据所述任务状态,获取繁忙情况。

可选的,所述任务状态包括:繁忙情况、闲置情况。

可选的,在所述判断所述下载数据是否需要重复下载之后,所述方法还包括:重复至所述根据所述下载地址监控任务状态。

具体的,本发明实施例通过以下步骤进行实现。

本技术方案将服务器按执行的任务类型划分为控制节点、监控节点和下载节点3种类型。

控制节点负责解析原始链接中包含的所有下载链接,并将任务添加到任务队列中。

监控节点负责监控每个下载节点的繁忙状态、下载进度、任务状态等,并选择相对空闲的机器,分配任务队列中的任务。

下载节点负责执行具体的下载任务。每个下载节点需要运行aria2程序。aria2是一个支持多线程的下载程序,支持断点续传,支持使用多个源或协议下载文件,可以加速完成下载。aria2内置的RPC接口,可以方便的查看任务进度和状态。

步骤一:在控制节点提交一个下载地址,例如这个地址是个某个文件服务器的根目录。控制节点通过网页分析,递归调用,获取所有文件的下载地址,并将下载地址放入任务队列里。

步骤二:监控节点定时收集和监控任务队列里的任务执行状态、执行进度、以及下载节点的繁忙程度。

步骤三:当监控节点监测到队列里有新的任务加入时,监控节点会获取每个下载节点的繁忙状态,优先将新任务分配给空闲的节点。队列遵循先进先出的原则。当所有节点都繁忙时,新任务在队列里处于等待状态。

步骤四:下载节点接收到任务后,将任务交给aria2进行多线程下载。

步骤五:监控节点通过rpc远程调用的方式与下载节点通信,定时对数据的下载数据、下载状态进行更新,并将节点和任务状态信息存储到zookeeper当中。若数据下载完成,则将任务从队列里面移除。

步骤六:若数据下载失败,当前节点会进行重试。当超过重试次数限制之后,则监控节点会将任务状态标记为失败,并记录当前下载当回话状态和已下载当大小和位置,然后跳过执行下一个任务。

步骤七:若监控节点监测到是由于目标网站对当前节点的IP进行封禁导致的,则监控节点将失败的任务分配其他不同IP的主机节点,并从共享存储中读取已下载的内容,从上次下载的位置继续下载,从而避免重复下载带来的资源浪费。

步骤九:重复步骤二到八,直到所有的任务都执行完毕。

通过上述实施例,解决了现有技术在服务器上虽然可以不间断的运行下载程序,但是受到单台服务器网络、存储等资源限制,在下载数据文件非常多时,下载周期较长。curl、wget等命令不支持多线程技术,下载单个大文件的时候,效率不高,下载速度较慢,同时,这些命令不支持远程rpc调用,不利于远程监控和调度下载任务的技术问题。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号