CN116760821A - 一种分布式文件下载方法、系统、电子设备及存储介质 - Google Patents
一种分布式文件下载方法、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116760821A CN116760821A CN202310912395.1A CN202310912395A CN116760821A CN 116760821 A CN116760821 A CN 116760821A CN 202310912395 A CN202310912395 A CN 202310912395A CN 116760821 A CN116760821 A CN 116760821A
- Authority
- CN
- China
- Prior art keywords
- downloading
- file
- task
- download
- distributed
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000000903 blocking effect Effects 0.000 claims abstract description 25
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 21
- 230000005540 biological transmission Effects 0.000 claims description 24
- 238000012216 screening Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 7
- 238000012545 processing Methods 0.000 description 23
- 230000004044 response Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
- H04L67/108—Resource delivery mechanisms characterised by resources being split in blocks or fragments
Abstract
一种分布式文件下载方法、系统、电子设备及存储介质,涉及互联网技术领域。该方法包括:获取用户提交的若干个下载任务;根据所述各下载任务对应的下载优先级,确定目标任务对象;判断所述目标任务对象是否支持分块下载;若是,则根据预设分块算法对所述目标任务对象进行文件分块得到分块文件,所述分块文件类型不同对应有不同下载路径;选择对应所述分块文件的下载路径,并发下载所述分块文件。实施本申请提供的技术方案,在处理大文件时对文件进行分块下载,达到了提高处理大文件下载速度的效果。
Description
技术领域
本申请涉及互联网技术领域,具体涉及一种分布式文件下载方法、系统、电子设备及存储介质。
背景技术
随着互联网技术的不断发展,在当今信息爆炸的时代,大量的数据和文件需要高效地传输和处理。无论是企业内部的数据共享,还是互联网上的文件下载,都需要一个可靠且高性能的文件下载方法来满足需求,特别是对于那些需要频繁下载大文件、或者需要同时处理多个下载任务的场景中更是需要。
目前,传统的文件下载方法是根据爬虫下载文件的方式,通过程序化地模拟人类浏览网页的行为,查找文件链接并发送网络请求来获取文件的二进制数据,最终保存到本地计算机上。
但是在实际应用中,传统的爬虫下载文件方法在处理大文件载任务时往往下载速度较慢且无法根据用户需求优先选取下载任务,影响工作效率,导致等待时间过长,用户体验感低。
发明内容
本申请提供了一种分布式文件下载方法、系统、电子设备及存储介质,具有提高下载大文件速度的效果。
第一方面,本申请提供了一种分布式文件下载方法,包括:
获取用户提交的若干个下载任务;
根据所述各下载任务对应的下载优先级,确定目标任务对象;
判断所述目标任务对象是否支持分块下载;
若是,则根据预设分块算法对所述目标任务对象进行文件分块得到分块文件,所述分块文件类型不同对应有不同下载路径;
选择对应所述分块文件的下载路径,并发下载所述分块文件。
通过采用上述技术方案,将用户提交的下载任务存入任务队列进行管理、调度,然后根据预设文件并发数以及下载任务对应下载优先级匹配任务对象,并对任务对象对应文件进行分块下载,有效提高在处理大文件时的下载速度,从而增加用户体验感。
可选的,获取若干个用户提交的下载任务,将所述下载任务存入预设任务队列,所述任务队列用于存储和管理待执行任务。
通过采用上述技术方案,获取并将用户提交的若干个下载任务存入预设Redis队列中,便于在处理若干个下载任务时,对多个下载任务进行调度,提高下载任务处理的效率。
可选的,根据所述下载任务中的文件信息,查询下载优先级序列表确定任务队列中各下载任务的下载优先级,所述优先级序列表包括文件信息和文件信息对应的下载优先级;筛选出任务队列中下载优先级最大的下载任务作为目标任务对象。
通过采用上述技术方案,根据下载任务中的文件信息查询序列表,来获取下载任务对应的优先级,从而起到根据用户需求,自由分配下载任务的作用。
可选的,判断所述目标任务对象对应文件是否支持断点续传;若是,则选择分块下载文件作为下载方式;若否,则选择流式读取文件作为下载方式。
通过采用上述技术方案,在下载任务之前先判断该文件是否支持断点续传,从而选取不同的下载方式,当该文件支持断点续传则采用分块下载的方式,当该文件不支持断点续传则采用流式读取的方式,从而在面对不同文件采取不同下载方式,提高下载文件时的效率。
可选的,通过HTTP发送头部请求;接收所述头部请求返回所述下载文件对应的头部字段信息;根据所述头部字段信息以及断点续传标准,确定文件是否支持断点续传。
通过采用上述技术方案,根据HTTP协议向服务器发送头部请求,并接收返回的头部字段信息,进一步识别头部字段信息中的值从而判断文件是否支持断点续传,在下载文件之前,对文件是否支持断点续传进行识别,为后续选择文件下载方式提供基础,提高文件下载效率,
可选的,根据预设算法识别所述目标任务对象对应文件的文件后缀;查询映射表,得到所述文件后缀对应文件夹路径;将所述文件夹路径作为下载路径。
通过采用上述技术方案,通过预设算法识别目标任务对象对应文件的文件后缀,根据该文件后缀查询映射表得到对应该文件后缀的文件夹路径,并将该文件夹路径作为文件下载路径,便于查找文件下载路径,提高文件下载效率。
可选的,根据预设状态识别算法,获取所述任务队列中各下载任务的状态信息;根据所述状态信息,筛选状态为已完成的下载任务;生成对应提示信息并发送给用户,所述提示信息用于通知用户下载任务已完成。
通过采用上述技术方案,对任务队列进行检测,根据预设状态识别算法识别任务队列中各下载任务的状态信息,并筛选出状态信息显示为已完成的下载任务,对于已完成的下载任务生成提示信息发送给用户,本方案生成对应已完成下载任务的提示信息,可以提示用户下载任务已完成,提高用户体验感。
在本申请的第二方面提供了一种分布式文件下载方法的系统,包括:
任务获取模块,用于获取若干个下载任务;
任务匹配模块,用于根据预设文件并发数和所述各下载任务对应的下载优先级,匹配任务队列得到目标任务对象;
文件识别模块,用于判断所述目标任务对象的数据量是否大于预置文件数据量阈值;若是,则根据预设分块算法对所述目标任务对象进行文件分块得到分块文件;
文件下载模块,用于通过预设选取规则,选择对应所述目标任务对象的下载路径;根据所述下载路径,下载所述目标任务对象对应分块文件并存入数据库。
在本申请的第三方面提供了一种电子设备。
一种分布式文件下载方法的系统,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序,该程序能够被处理器加载执行时实现一种分布式文件下载方法。
在本申请的第四方面提供了一种计算机可读存储介质。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现一种分布式文件下载方法。
综上所述,本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
1、本申请通过将用户提交的下载任务存入任务队列进行管理、调度,然后根据预设文件并发数以及下载任务对应下载优先级匹配任务对象,并对任务对象对应文件进行分块下载,有效提高在处理大文件时的下载速度。
2、本申请通过采用流式读取的方式下载文件,在文件不支持断点续传的情况下,对文件分块,逐个数据块地从输入流中读取数据的方法,而不是将整个文件一次性加载到内存中,可有效提高文件下载效率,避免出现因文件过大导致系统出错的问题。
3、本申请通过识别文件后缀,来读取文件保存的文件夹路径,从而将该文件夹路径作为下载路径,能够提高获取下载路径的效率。
附图说明
图1是本申请实施例提供的一种分布式文件下载方法的流程示意图。
图2是本申请实施例公开的一种分布式文件下载方法的下载方式选取流程示意图。
图3是本申请实施例公开的一种分布式文件下载方法的系统结构示意图。
图4是本申请实施例的公开的一种电子设备的结构示意图。
附图标记说明:301、任务获取模块;302、任务匹配模块;303、文件识别模块;304、文件下载模块;400、电子设备;401、处理器;402、存储器;403、用户接口;404、网络接口;405、通信总线。
具体实施方式
为了使本领域的技术人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
在本申请实施例的描述中,“例如”或者“举例来说”等词用于表示作例子、例证或说明。本申请实施例中被描述为“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个屏幕终端是指两个或两个以上的屏幕终端。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
为了便于理解本申请实施例提供的方法及系统,在介绍本申请实施例之前,先对本申请实施例的背景进行介绍。
目前,传统的爬虫下载文件方法在处理大文件或高并发下载任务时往往下载速度较慢,影响工作效率,导致用户等待时间过长,用户体验感低。
本申请实施例公开了一种分布式文件下载方法,通过配置文件并发数及文件下载优先级匹配任务对象,选取文件下载方式对下载文件进行多线程分块下载,主要用于解决传统大文件下载慢,提高文件下载效率的问题。
经过上述背景内容相关介绍,本领域技术人员可以了解现有技术中存在的问题,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行详细的描述,描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
参照图1,一种分布式文件下载方法,该算法包括S10至S40,具体包括以下步骤:S10:获取用户提交的若干个下载任务。
具体的,系统获取多个用户提交的数据下载任务,并将这些下载任务存入任务队列,该任务队列是一种用于在多任务环境中管理和调度任务的机制或数据结构,例如:用户在浏览网站时,想要下载网站上的视频文件,则用户可根据该网站下载地址向服务器发出下载请求,服务器响应于该下载请求生成下载任务并存入任务队列中。
S20:根据各下载任务对应的下载优先级,确定目标任务对象。
具体的,文件并发数根据服务器性能以及实际情况由工作人员进行配置,在本实施例中任务队列采用Redis数据结构。
参照图2,具体步骤可以包括S21至S22:
S21:根据下载任务中的文件信息,查询下载优先级序列表确定任务队列中各下载任务的下载优先级,优先级序列表包括文件信息和文件信息对应的下载优先级。
示例性地,系统获取任务队列中各下载任务的文件信息,该文件信息包括下载任务的文件种类,然后查询下载优先级序列表,通过该下载优先级序列表得到对应文件种类的下载优先级,从而确定任务队列中各下载任务的下载优先级,该下载优先级序列表由用户进行配置。
S22:筛选出任务队列中下载优先级最大的下载任务作为目标任务对象。
示例性地,在确定任务队列中各下载任务优先级之后,系统每一次选取下载任务都会遍历任务队列,筛选任务队列中下载优先级最大的下载任务,然后选取该下载任务作为目标任务对象。
S30:判断目标任务对象是否支持分块下载;若是,则根据预设分块算法对目标任务对象进行文件分块得到分块文件。
具体的,为了防止在处理大文件时,文件下载速度较慢,系统在设定目标任务对象后,会获取目标任务对象对应数据量大小,并比较该目标任务对象对应文件数据量与预置文件数据量阈值,例如:在本实施例中,预置文件数据量阈值设为500M,系统通过HTTP发出查询目标任务对象文件数据量的请求,并识别返回响应的Content-Length信息,该Content-Length信息是一个响应标头用于指示响应文件正文的长度,以字节为单位。若是该文件大于500M,则系统将该文件分成每块为2M的分块文件,若是该文件小于500M,则系统将该文件分成每块1M的分块文件,每个分块文件附有唯一标识符,第一个分块文件标识符为0,第二个分块文件标识符为1,按照从小到大的顺序进行对分块文件附上标识符。该分块大小根据系统性能进行设置,不仅限于本实施例中设定的大小,文件分块涉及到的算法为现有FSP定长分块算法,该算法采用预先义好的块大小对文件进行切分,得到多个相同大小的分块文件。
并发下载分块文件之前,存在选取下载方式的操作,具体步骤包括S01至S02:
S01:判断目标任务对象对应文件是否支持断点续传。
示例性地,为了提高文件下载效率,系统会对不同的文件采取不同的下载方式,例如通过HTTP的HEAD方法判断目标任务对象中的文件是否支持断点续传,该方法具体包括:系统通过HTTP协议,向服务器发送一个HTTP请求,用于获取特定URL关联的响应标头并根据该响应标头中的信息以及断点续传标准进行确定,该URL是一种用于标识和定位互联网上资源的地址,通过特定的语法规则用一个字符串表示资源的位置,响应标头是在服务器返回HTTP响应时,包含在响应消息头部分的信息。断点续传标准具体包括:系统若是未接收到响应标头,则判定为该文件不支持断点续传,若是接收到响应标头则进一步检测响应标头的值,如果响应标头的值为bytes,表示服务器支持按字节范围请求,系统会判定该文件支持断点续传,如果响应标头的值为none,系统则会判定该文件不支持断点续传。
S02:若是,则选择分块下载文件作为下载方式;若否,则选择流式读取文件作为下载方式。
示例性地,经过HTTP的HEAD方法对该文件进行是否支持断点续传之后,如果判断结果显示该文件支持断点续传,则系统会选择分块下载的方式下载文件,用于将文件划分为多个块文件进行下载,从而下快文件传输速度。如果判断结果显示该文件不支持断点续传,则系统选择流式读取的方式下载文件,该流式读取方法是一种以流的形式逐步读取数据的方法,而不是一次性将整个数据加载到内存中,它适用于处理大型数据或持续产生数据的情况,可以减少内存使用并提高效率。
S40:选择对应分块文件的下载路径,并发下载所述分块文件。
具体的,工作人员可根据系统性能配置文件并发数用于并发下载大文件,为防止下载时出现下载空间不足的情况,在下载文件之前会检测剩余并发下载数,将剩余并发下载数与分块文件的数量比较,如果分块文件的数量小于剩余并发下载数,则会选择分块文件的下载路径,如果分块文件的数量大于剩余并发下载数,则系统会报错并将分块文件存入任务队列等待。
选择对应分块文件的下载路径,具体步骤包括:
具体的,在确定目标任务对象后,系统会根据预设选取规则选择下载路径,该预设选取规则为通过识别文件的后缀信息,从而锁定文件的存储文件夹地址作为下载路径,针对特殊文件也可设定特定文件夹存储,例如:用户要下载音频文件,系统获取该文件的文件名,根据预设字符串识别算法提取文件最后一个点之后的部分,从而得到该音频文件后缀为mp4,由于文件后缀可以被修改,单从文件后缀识别文件存储文件夹不够准确,还需要结合文件内容特征进行识别,在识别文件后缀信息后,系统会读取文件开头几个字节信息,检测文件的特征码,之后根据该特征码匹配数据库中文件类型,判断该文件类型是否与文件后缀一致,如果该文件类型与文件后缀一致,则将MP4文件保存的文件夹作为下载路径,如果该文件类型与文件后缀不一致,则将特征码匹配的文件类型对应文件保存的文件夹作为下载路径。
并发下载分块文件,具体步骤包括:
具体的,系统在获取文件下载路径后对文件进行下载,下载过程包括计算分块文件起始量,计算公式为:
start_offset=block_index*block_size
其中,start_offset为分块文件起始量,block_index为分块标识符,block_size为分块大小,分块文件起始量用于识别从某个字节处开始获取数据,直到该数据等于分块的大小。
系统获取分块文件偏移量,在本实施例中该偏移量即为获取数据结束的位置。在计算得到分块文件起始量、文件偏移量、文件数据量之后,将分块文件起始量、文件偏移量、文件数据量以列表的方式进行返回,并使用现有协程并发技术根据分块文件对应文件偏移量写入文件,当文件全部下载完后将文件存入数据库,通过该方法下载文件从而达到处理大文件时,高速下载的效果。需要说明的是,如果在下载过程中由于并发数的限制,当下载单元数量不满足该文件的下载时,则系统会进行报错并将该下载任务存入Redis任务队列等待,重试下载该文件。在下载任务对应文件下载完成之后,系统会将已完成的下载文件存入预设数据库,该数据库用于保存下载任务数据,便于后续对下载文件的后续的处理和监控,例如后续对下载文件进行修改或在数据遗失时可直接调用数据库中保存的下载任务数据发送给用户,达到长期数据存储和备份的效果。
需要说明的是在文件下载完成之后,检测下载状态的操作,具体步骤包括:
示例性地,为响应于后续用户的处理操作,根据预设编程算法系统定义有回调方法用于处理已完成的下载任务,例如:通过预设状态识别算法给各下载任务附上状态标签,该状态标签包括已完成标签、未完成标签和暂停下载标签等,筛选出任务队列中状态标签为已完成对应的下载任务,触发通知回调函数,向用户发出提示信息用于提示用户下载任务已完成,或是在下载数据出错时,触发报错回调函数,向用户发出下载错误提示信息用于提示用户重新提交下载任务,回调方法的定义包括但不仅限于本实施例中的场景。
在上述实施例的基础上,若是文件不支持断点续传,则通过流式读取的方式下载文件,具体包括:
示例性地,在文件不支持断点续传时,采用流式读取的方式下载文件,流式读取是一种逐个数据块地从输入流中读取数据的方法,而不是一次性将整个文件加载到内存中,这种方法特别适用于处理大型文件或网络数据流,以减少内存占用和提高处理效率。chunk是指将文件分割成较小的块或片段的操作,通过将文件分割成块,可以逐个处理每个块,而不需要加载整个文件到内存中。系统会通过配置文件的chunk大小读取相应的二进制、使用中间变量来记录已下载的文件数据量、并根据文件数据量来偏移写入chunk到文件,当下载失败时,系统会重新下载该文件、并获取文件的大小,如果是已经下载的chunk,则会跳过,当chunk为空时,说明已经下载完成,并返回该任务下载结束信息。
需要说明的是,本申请实施例中的系统为一种分布式下载系统,具体包括:
示例性地,该系统利用Python协程技术多线程并发下载用户提交的大文件,提高并发处理能力。通过管理任务队列和异步处理,能够同时处理多个下载任务,达到提升系统吞吐量和响应速度的效果,吞吐量是指在一定时间内系统处理的任务或请求的数量,该Python协程是一种轻量级的并发编程方式,用于在一个线程内实现并发执行的效果,该异步处理为一种并发编程模型,在执行IO密集型任务时不会阻塞其他操作,从而提高程序的并发性能,例如在传统的同步编程中,一个任务必须等待另一个任务完成后才能继续执行,而异步编程允许任务在等待IO操作完成期间继续执行其他任务。该系统采用弹性分布式架构,通过使用任务队列作为不同组件之间的通信媒介,用于提高分布式部署的灵活性,使得该系统能够扩展到多个服务器,根据需要进行水平扩展,从而提升系统的容错性和可伸缩性。该系统将下载的文件保存在系统预设数据库中,以确保数据的持久性和可靠性,这种架构可有效消除本地存储的单点故障,并降低了数据丢失的风险,从而保证用户下载的文件安全可靠。通过松耦合的模块化设计,系统使得每个模块具有清晰的职责和接口,例如并发下载、存储等功能化模块,根据该松耦合的模块化设计使得系统的维护和拓展更加灵活和可靠,可以对各个模块进行独立的开发、测试和升级,而不会对整个系统产生过多的影响。
在上述实施例的基础上,为实现下载、存储等模块化的功能,该系统采用了文件下载器、存储上传器、结果处理器,具体包括:
文件下载器:为了实现快速且可靠的文件下载,采用了文件下载器模块,该文件下载器能够检测目标文件是否支持断点续传,并根据情况选择最佳的下载方式。对于支持断点续传的文件,下载器会利用分块下载技术,根据文件大小和网络状况动态调整下载策略,从而实现高速下载和数据完整性保障。对于不支持断点续传的文件,下载器会通过流式读取的方式确保文件的完整性和可靠性。
存储上传器:为了实现数据的持久化存储和高效管理,采用存储上传器模块。该模块能够将已下载完成的文件存入到该系统预设数据库中,实现可靠的数据存储和管理,且能够实时更新任务对象的状态,并提供高效的队列管理功能,以便后续的处理和监控。
结果处理器:为了实现完整的工作流程闭环,设计了一个结果处理器模块,负责处理已完成的任务对象。该模块能够根据事先定义的回调方法,从队列中获取任务对象,并进行相应的后续处理。通过结果处理器的精确调度和优化算法,能够提高系统的响应速度和处理效率。
下述为本申请的系统实施例,可以用于执行本申请方法实施例。对于本申请平台实施例中未披露的细节,参照本申请方法实施例。
参照图3,为本申请实施例提供的一种分布式文件下载方法的系统,该系统包括:任务获取模块301、任务匹配模块302、文件识别模块303,文件下载模块304,其中:
任务获取模块301,用于获取用户提交的若干个下载任务;
任务匹配模块302,用于根据各下载任务对应的下载优先级,确定目标任务对象;
文件识别模块303,用于判断目标任务对象是否大于预置文件数据量阈值;若是,则根据预设分块算法对目标任务对象进行文件分块得到分块文件;
文件下载模块304,用于判断分块文件的数量是否小于剩余并发下载数;若是,则选择对应分块文件的下载路径,并发下载分块文件。
需要说明的是:上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置和方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请还公开一种电子设备。参照图4,图4是本申请实施例的公开的一种电子设备的结构示意图。该电子设备400可以包括:至少一个处理器401,至少一个网络接口404,用户接口403,存储器402,至少一个通信总线405。
其中,通信总线405用于实现这些组件之间的连接通信。
其中,用户接口403可以包括显示屏(Display)、摄像头(Camera),可选用户接口403还可以包括标准的有线接口、无线接口。
其中,网络接口404可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器401可以包括一个或者多个处理核心。处理器401利用各种接口和线路连接整个服务器内的各个部分,通过运行或执行存储在存储器402内的指令、程序、代码集或指令集,以及调用存储在存储器402内的数据,执行服务器的各种功能和处理数据。可选的,处理器401可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器401可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面图和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器401中,单独通过一块芯片进行实现。
其中,存储器402可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器402包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器402可用于存储指令、程序、代码、代码集或指令集。存储器402可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及的数据等。存储器402可选的还可以是至少一个位于远离前述处理器401的存储装置。参照图4,作为一种计算机存储介质的存储器402中可以包括操作系统、网络通信模块、用户接口模块以及一种分布式文件下载方法的应用程序。
在图4所示的电子设备400中,用户接口403主要用于为用户提供输入的接口,获取用户输入的数据;而处理器401可以用于调用存储器402中存储一种分布式文件下载方法的应用程序,当由一个或多个处理器401执行时,使得电子设备400执行如上述实施例中一个或多个的方法。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必需的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几种实施方式中,应该理解到,所披露的装置,可通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其他的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储器包括:U盘、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践真理的公开后,将容易想到本公开的其他实施方案。
本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。
Claims (10)
1.一种分布式文件下载方法,其特征在于,包括:
获取用户提交的若干个下载任务;
根据所述各下载任务对应的下载优先级,确定目标任务对象;
判断所述目标任务对象是否支持分块下载;
若是,则根据预设分块算法对所述目标任务对象进行文件分块得到分块文件,所述分块文件类型不同对应有不同下载路径;
选择对应所述分块文件的下载路径,并发下载所述分块文件。
2.根据权利要求1所述的一种分布式文件下载方法,其特征在于,所述获取用户提交的若干个下载任务之后,还包括:
获取若干个用户提交的下载任务,将所述下载任务存入预设任务队列,所述任务队列用于存储和管理待执行任务。
3.根据权利要求2所述的一种分布式下载方法,其特征在于,所述根据各下载任务对应的下载优先级,确定目标任务对象中,包括:
根据所述下载任务中的文件信息,查询下载优先级序列表确定任务队列中各下载任务的下载优先级,所述优先级序列表包括文件信息和文件信息对应的下载优先级;
筛选出任务队列中下载优先级最大的下载任务作为目标任务对象。
4.根据权利要求1所述的一种分布式下载方法,其特征在于,所述判断所述目标任务对象是否支持分块下载中,包括:
判断所述目标任务对象对应文件是否支持断点续传;
若是,则选择分块下载文件作为下载方式;
若否,则选择流式读取文件作为下载方式。
5.根据权利要求4所述的一种分布式下载方法,其特征在于,所述判断所述下载文件是否支持断点续传中,包括:
通过HTTP发送头部请求;
接收所述头部请求返回所述下载文件对应的头部字段信息;
根据所述头部字段信息以及断点续传标准,确定文件是否支持断点续传。
6.根据权利要求1所述的一种分布式下载方法,其特征在于,所述选择对应所述分块文件的下载路径中,包括:
根据预设算法识别所述目标任务对象对应文件的文件后缀;
查询映射表,得到所述文件后缀对应文件夹路径;
将所述文件夹路径作为下载路径,并根据所述下载路径并发下载所述分块文件。
7.根据权利要求1所述的一种分布式下载方法,其特征在于,所述并发下载所述分块文件之后,还包括:
根据预设状态识别算法,获取所述任务队列中各下载任务的状态信息;
根据所述状态信息,筛选状态信息为已完成的下载任务;
生成对应提示信息并发送给用户,所述提示信息用于通知用户下载任务已完成。
8.一种基于权利要求1-7所述的分布式文件下载方法的系统,其特征在于,所述系统包括:
任务获取模块(301),用于获取若干个下载任务;
任务匹配模块(302),用于根据所述各下载任务对应的下载优先级,确定目标任务对象;
文件识别模块(303),用于判断所述目标任务对象的数据量是否大于预置文件数据量阈值;若是,则根据预设分块算法对所述目标任务对象进行文件分块得到分块文件;
文件下载模块(304),用于判断所述分块文件的数量是否小于剩余并发下载数;若是,则选择对应所述分块文件的下载路径,并发下载所述分块文件。
9.一种电子设备,其特征在于,包括处理器(401)、存储器(402)、用户接口(403)及网络接口(404),所述存储器(402)用于存储指令,所述用户接口(403)和网络接口(404)用于给其他设备通信,所述处理器(401)用于执行所述存储器(402)中存储的指令,以使所述电子设备(400)执行如权利要求1-7任意一项所述一种分布式文件下载方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,当所述指令被执行时,执行如权利要求1-7任意一项所述的一种分布式文件下载方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310912395.1A CN116760821A (zh) | 2023-07-22 | 2023-07-22 | 一种分布式文件下载方法、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310912395.1A CN116760821A (zh) | 2023-07-22 | 2023-07-22 | 一种分布式文件下载方法、系统、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116760821A true CN116760821A (zh) | 2023-09-15 |
Family
ID=87955283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310912395.1A Pending CN116760821A (zh) | 2023-07-22 | 2023-07-22 | 一种分布式文件下载方法、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116760821A (zh) |
-
2023
- 2023-07-22 CN CN202310912395.1A patent/CN116760821A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7230083B2 (ja) | 地図サービステスト用の方法及び装置 | |
JP7297769B2 (ja) | プリキャシュのためのクライアント・マシン間でのシェーダの配布 | |
KR20210019533A (ko) | 온-디맨드 네트워크 코드 실행 시스템에서의 운영 체제 커스터마이제이션 | |
US7529892B2 (en) | File readahead method with the use of access pattern information attached to metadata | |
US20140215025A1 (en) | Mobile device application streaming | |
US10601901B2 (en) | Methods, systems, and media for stored content distribution and access | |
CN111049870B (zh) | 应用下载和发送的方法、装置及系统 | |
CN102223416B (zh) | 一种媒体文件的传输方法及系统 | |
CN110297944B (zh) | 分布式xml数据处理方法及系统 | |
CN110716848A (zh) | 数据收集方法、装置、电子设备及存储介质 | |
CN102255866A (zh) | 一种数据下载方法及装置 | |
US11416176B2 (en) | Function processing using storage controllers for load sharing | |
CN108197160B (zh) | 一种图片加载方法及装置 | |
US7213245B2 (en) | Software on demand system | |
CN116760821A (zh) | 一种分布式文件下载方法、系统、电子设备及存储介质 | |
CN109995863A (zh) | 一种动态资源下载方法、装置、电子设备及存储介质 | |
CN110430279B (zh) | 文件下载控制方法及装置 | |
CN110955461B (zh) | 计算任务的处理方法、装置、系统、服务器和存储介质 | |
CN112688980B (zh) | 资源分发方法、装置、计算机设备 | |
CN112486513A (zh) | 一种基于容器的集群管理方法及系统 | |
CN113792074B (zh) | 一种数据处理方法及装置 | |
KR20160145250A (ko) | 가상 머지를 지원하는 셔플 내장형 분산 스토리지 시스템 및 그 방법 | |
CN117724852B (zh) | 一种云电脑计算资源分配方法及装置 | |
US11755534B2 (en) | Data caching method and node based on hyper-converged infrastructure | |
CN112671918B (zh) | 基于二进制的分布式数据下载方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |