一种多节点并行处理海量任意目录结构存档文件的方法

文档序号:1963594 发布日期:2021-12-14 浏览:18次 >En<

阅读说明:本技术 一种多节点并行处理海量任意目录结构存档文件的方法 (Method for multi-node parallel processing of massive archive files with any directory structure ) 是由 扈紫豪 黄祥志 王宝玉 臧文乾 王更科 余涛 赵亚萌 王栋 于 2021-09-03 设计创作,主要内容包括:本发明提供了一种多节点并行处理海量任意目录结构存档文件的方法,其特征在于,包括如下步骤:用户输入文件路径,并下发处理文件的任务至任务控制节点;任务控制节点派发任务至任务下发消息队列,同时指定工作节点执行工作任务;执行工作任务的工作节点成为执行节点,执行节点执行任务,完成任务后将完成信息反馈至任务反馈消息队列;任务控制节点从任务反馈队列拉取任务完成情况,判断符合停止情况后,停止工作线程。本申请在任务执行过程中,根据任务完成情况动态扩容缩容;将任务派发给任务下发消息队列,每个节点的任务负载更加均衡,处理效率更好。(The invention provides a method for multi-node parallel processing of a large number of archived files with any directory structure, which is characterized by comprising the following steps: a user inputs a file path and issues a task for processing a file to a task control node; the task control node sends the task to the task sending message queue and appoints the work node to execute the work task; the work nodes executing the work tasks become execution nodes, the execution nodes execute the tasks, and completion information is fed back to the task feedback message queue after the tasks are completed; and the task control node pulls the task completion condition from the task feedback queue, and stops the working thread after judging that the stopping condition is met. According to the method, during the task execution process, dynamic capacity expansion and capacity reduction are carried out according to the task completion condition; the tasks are distributed to the task issuing message queue, the task load of each node is more balanced, and the processing efficiency is better.)

一种多节点并行处理海量任意目录结构存档文件的方法

技术领域

本发明属于数据处理领域,具体涉及一种多节点并行处理海量任意目录结构存档文件的方法。

背景技术

当前信息行业的数据存储情况,多为面临海量小文件需要统一读取处理,入库拷贝等操作。这些文件的特点是:(1)单个文件数据比较小,整体文件数据量非常大;(2)文件数据存储不规范,且目录层级非常深。

现有技术通过单节点递归遍历目录的方式获取文件列表,这种方式在数据量特别大或者文件目录特别深的情况下,递归的效果会大大降低,因此无法处理目录过深或者数量太大的情况。现有技术还通过静态数据分派的方式,按照数据目录,静态拆分任务,将该批次数据按顶层父级目录,拆分成若干任务,交给相应的节点处理,但是这种方式存在局限性,只适合处理数据存储目录规范的数据,无法适应任意目录结构的文件目录,也无法动态增加、减少处理节点。

发明内容

鉴于现有技术中的上述缺陷或不足,本发明旨在提供一种多节点并行处理海量任意目录结构存档文件的方法。

为了实现上述目的,本发明实施例采用如下技术方案:

第一方面,提供一种多节点并行处理海量任意目录结构存档文件的方法,其特征在于,包括如下步骤:

输入任务的路径,并下发任务至任务控制节点;

任务控制节点派发任务至任务下发消息队列,同时指定工作节点执行工作任务;

执行工作任务的工作节点成为执行节点,执行节点执行任务,完成任务后将完成信息反馈至任务反馈消息队列;

任务控制节点从任务反馈队列拉取任务完成情况,判断符合停止条件后,停止工作线程。

根据本申请实施例提供的技术方案,所述任务控制节点从执行节点拉取任务记录,并将拉取到的任务记录和任务完成情况交换至数据库。

根据本申请实施例提供的技术方案,所述工作节点的数量为n个,任务控制节点指定1~n个工作节点启动,1~n个工作节点成为执行节点。

根据本申请实施例提供的技术方案,所述停止条件为任务控制节点判断超过规定时间无新任务且已派发任务全部完成;当任务控制节点认定符合停止条件,任务控制节点停止所有工作线程。

根据本申请实施例提供的技术方案,任一个执行节点执行任务包括如下步骤:

从任务下发消息队列拉取任务;

判断是否拉取到任务;

若执行节点没有拉取到任务,则重新拉取获取任务;

若执行节点拉取到任务,则判断任务路径是否存在子任务;

若任务路径存在子任务,则每个子任务作为新的任务会发给任务下发消息队列;

若任务路径不存在子任务,则直接处理该任务;

处理任务完成,将任务完成信息反馈给任务反馈消息队列。

第二方面,提供一种计算机设备,所述设备包括:存储器,用于存储可执行程序代码;一个或多个处理器,用于读取所述存储器中存储的可执行程序代码以执行第一方面所述的多节点并行处理海量任意目录结构存档文件的方法。

第三方面,提供一种计算机可读存储介质,所述计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得计算机执行第一方面所述的多节点并行处理海量任意目录结构存档文件的方法。

本发明具有如下有益效果:

本申请是通过设置任务控制节点,任务控制节点指定某些工作节点执行工作任务,这样在任务执行过程中可以随时启动或者关闭工作节点,在任务执行过程中,根据任务完成情况动态扩容缩容,提高处理任务的效率;将任务派发给任务下发消息队列,执行节点从任务下发消息队列中拉取任务,很好的解决了静态任务分派带来的任务负载不均衡的问题,每个节点的任务负载更加均衡,处理效率更好;传统的任务调度系统采用任务控制节点和任务执行节点之间的网络通信,实现任务派发和任务结果反馈,本申请通过设置任务下发消息队列和任务反馈消息队列,执行节点和任务控制节点直接从相应队列拉取任务和任务完成情况,通过消息队列的异步,进一步提高任务处理性能。

此外,本申请每个执行节点工作流程先判断是否存在子任务,若存在将子任务作为新的任务回发给任务下发消息队列,使得任务可以动态分发,处理性能比现有递归遍历任务目录更好。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本申请所述的多节点架构示意图;

图2为本申请所述的执行节点工作流程示意图;

图3为本申请所述的控制节点工作流程示意图;

图4为本申请所述的控制节点停止工作流程示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。

实施例1:

一种多节点并行处理海量任意目录结构存档文件的方法,包括如下步骤:输入任务的路径,并下发任务至任务控制节点;任务控制节点派发任务至任务下发消息队列,同时指定工作节点执行工作任务;执行工作任务的工作节点成为执行节点,执行节点执行任务,完成任务后将完成信息反馈至任务反馈消息队列;任务控制节点从任务反馈队列拉取任务完成情况,判断符合停止条件后,停止工作线程。

具体地,现有的分配任务的方式是任务节点收到任务路径后静态平均分配,即将10个任务平均分配给5个节点,每个节点有2个任务。这样在每个任务的数据量相当时,这种分配方式较为平衡;但是当每个任务的数据量不相当或者不均衡时,有的任务数据量极大,有的极小,这会导致每个节点的负载不均衡。同时,其中一个节点机器处理完本节点机器的生产任务,从其他节点调取生产任务的过程也非常麻烦。而本申请的所述的方法并没有将任务分发给某个具体节点,请参考图1,而是通过任务控制节点并设置任务下发消息队列,将任务派发至任务下发消息队列,执行节点从队列中拉取任务,很好的解决了静态任务分派带来的任务负载不均衡的问题,使得每个执行节点的负载相对均衡,提高任务处理效率。传统的任务调度系统采用任务控制节点和任务执行节点之间的网络通信,实现任务派发和任务结果反馈,当产生的子任务数量过多时,频繁的节点通信会影响数据的处理性能,本申请通过设置任务下发消息队列和任务反馈消息队列,执行节点和任务控制节点直接从相应队列拉取任务和任务完成情况,通过消息队列的异步,解决控制节点和执行节点子任务过多,节点件通信造成处理性能下降的问题。同时,本申请的任务控制节点指定若干工作节点启动成为执行节点,这样可以在执行任务过程中根据任务完成情况增加或者关闭若干工作节点,动态扩容增容,进一步提高任务处理效率。

实施例2:

本实施例在实施例1的基础上,所述任务控制节点从执行节点拉取任务记录,并将拉取到的任务记录和任务完成情况交换至数据库。

具体的,如图3所示,方便用户通过任务控制节点从数据库调取数据库的数据记录,查看任务情况和任务完成情况,任务控制节点也可以从数据库记录查询并做进一步的安排处理。

实施例3:

本实施例在实施例1的基础上,所述工作节点的数量为n个,任务控制节点指定1~n个工作节点启动,1~n个工作节点成为执行节点。

具体地,因为任务控制节点并没有将任务固定分配给某个固定节点,而是分发至任务下发消息队列中,每个启动且具有处理能力的执行节点都可以从队列中拉取任务,提升了工作效率。同时设置的多个工作节点,任务控制节点指定工作节点启动,启动的工作节点才能执行任务成为执行节点。任务控制节点通过和数据库的数据交换获知任务情况和任务完成情况,可以根据需要启动全部工作节点、也可以指定若干工作节点启动、还可以根据需要关闭若干工作节点,做到了动态增删节点,可以在任务执行过程中,动态扩容缩容,进一步提高任务处理效率

实施例4:

本实施例在实施例1的基础上,所述停止条件为任务控制节点判断超过规定时间无新任务且已派发任务全部完成;当任务控制节点认定符合停止条件,任务控制节点停止所有工作线程。

具体地,如图4所示,任务控制节点判断超过规定时间无新任务且已派发任务全部完成,即认定符合停止情况,任务控制节点停止所有工作线程。任务控制节点设定判断停止的流程,防止节点空转的情况,提高任务控制节点的工作效率。

实施例5:

本实施例在实施例1的基础上,任一个执行节点执行任务包括如下步骤:从任务下发消息队列拉取任务;判断是否拉取到任务;若执行节点没有拉取到任务,则重新拉取获取任务;若执行节点拉取到任务,则判断任务路径是否存在子任务;若任务路径存在子任务,则每个子任务作为新的任务会发给任务下发消息队列;若任务路径不存在子任务,则直接处理该任务;处理任务完成,将任务完成信息反馈给任务反馈消息队列。

具体地,请参考图2所示,现有的多为单个执行节点执行任务时,采用方式是遍历任务后直接执行,在任务层级很多的情况下,效率非常低。本申请的执行节点多了判断是否存在子任务的判断步骤,基于前文所述的任务下发消息队列,将子任务作为新的任务排列在任务下发消息队列队尾,在其他执行节点或者当前执行节点拉取任务时获取后再继续进行处理,并不断重复这个过程,将任务分发的静态过程改为动态过程,提高了处理任务的效率。

在本申请一优选的实施例中,一种计算机设备,所述设备包括:存储器,用于存储可执行程序代码;一个或多个处理器,用于读取所述存储器中存储的可执行程序代码以执行上述任一实施例所述的多节点并行处理海量任意目录结构存档文件的方法。

计算机系统包括中央处理单元(CPU),其可以根据存储在只读存储器(ROM)中的程序或者从存储部分加载到随机访问存储器(RAM)中的程序而执行各种适当的动作和处理。在RAM中,还存储有系统操作所需的各种程序和数据。CPU、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也连接至总线。

以下部件连接至I/O接口:包括键盘、鼠标等的输入部分;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分。通信部分经由诸如因特网的网络执行通信处理。驱动器也根据需要连接至I/O接口。可拆卸介质,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储部分。

特别地,根据本发明的实施例,上文中多节点并行处理海量任意目录结构存档文件的方法所描述的过程可以被实现为计算机软件程序。例如,本发明关于多节点并行处理海量任意目录结构存档文件的方法的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明多节点并行处理海量任意目录结构存档文件的方法、装置和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括第一生成模块、获取模块、查找模块、第二生成模块及合并模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中所述的多节点并行处理海量任意目录结构存档文件的方法。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

应用场景:

本申请所述的多节点并行处理海量任意目录结构存档文件的方法主要应用在处理文件任务的场景下,此处处理文件任务具体指的是读取、入库或者拷贝文件数据,节点可以是计算器、处理器或者服务器。当开源组件面临几百万条瓦片记录形式存在的文件,想要进一步处理这些文件数据,在获取数据时非常不方便,效率低。采用本申请所述的方法时,用户输入路径,任务控制节点获取了处理文件的任务,并将处理文件的任务派发到任务下发消息队列。执行节点从任务下发消息队列获取处理文件的任务,获取到后扫描当前层级文件夹下所有的文件,当文件有数据时继续处理数据并在处理完成后返给完成的信息给任务反馈队列;当发现文件中有目录存在时,将此文件作为新的子任务回发给任务下发消息队列,并不断重复这个过程。这样,执行节点从任务下发消息队列拉取任务时,或者拉取到任务控制节点派发的任务或者拉取到其他执行节点或者当前执行节点回发的任务,任务分发的过程是一个动态过程,解决了传统递归目录造成的性能问题,获取数据效率提升,同时也不需要对文件层级目录有规范的要求。

与此同时,本场景中任务控制节点也从任务下发队列拉取任务记录,结合从任务反馈消息队列的任务完成情况,增加启动或者关闭启动工作节点,工作节点可以动态的增加或者减少,进一步提高处理文件及获取文件数据的效率。

任务控制节点将获取的文件数据、任务记录数据、任务完成情况数据交换至数据库保存,一方面方便任务控制节点获取这些数据并据此控制工作节点增减,另一方面方便用户通过任务控制节点获取这些数据。

本场景的任务控制节点判断超过规定时间用户没有输入文件路径即没有派发新的任务,并且已经派发任务全部完成,停止所有工作线程工作,进一步提高读取、入库或者拷贝文件数据的效率。

以上描述仅为本发明的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本发明中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种业务延迟方法、装置、计算机设备和存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!