CN112559156A - 一种多依赖任务分组管理方法、装置、设备及存储介质 - Google Patents

一种多依赖任务分组管理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112559156A
CN112559156A CN202011540071.2A CN202011540071A CN112559156A CN 112559156 A CN112559156 A CN 112559156A CN 202011540071 A CN202011540071 A CN 202011540071A CN 112559156 A CN112559156 A CN 112559156A
Authority
CN
China
Prior art keywords
task
grouping
tasks
unit
queue
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.)
Granted
Application number
CN202011540071.2A
Other languages
English (en)
Other versions
CN112559156B (zh
Inventor
邹泽龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bigo Technology Pte Ltd
Original Assignee
Bigo Technology Pte Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Bigo Technology Pte Ltd filed Critical Bigo Technology Pte Ltd
Priority to CN202011540071.2A priority Critical patent/CN112559156B/zh
Publication of CN112559156A publication Critical patent/CN112559156A/zh
Application granted granted Critical
Publication of CN112559156B publication Critical patent/CN112559156B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例公开了一种多依赖任务分组管理方法、装置、设备及存储介质。本申请实施例提供的技术方案通过根据业务配置信息分别构建单元任务和分组任务,将单元任务和分组任务加入到任务队列中,并构建单元任务和分组任务之间以及子任务之间的依赖关系,按照依赖关系依次从任务队列中调用并执行任务,直至完成各任务队列中的单元任务和分组任务,将分组任务抽象成独立的任务单元,不需要修改原任务链,单元任务和分组任务均作为任务队列中的可执行单元,实现任务解耦,可保持统一的上层调度,无需关注任务内部具体实现,有效简化了任务调度的复杂度,任务之间的依赖关系更加清晰,任务线程管理更简单,有效提高程序开发效率并节省程序维护成本。

Description

一种多依赖任务分组管理方法、装置、设备及存储介质
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种多依赖任务分组管理方法、装置、设备及存储介质。
背景技术
随着业务发展,APP的规模逐渐膨胀,代码维护与协作变得困难。App内各任务之间耦合严重,边界越来越模糊,经常发生任务相互关联的情况,这对代码质量、功能扩展以及开发效率都会造成很大的影响。
对于依赖关系较为复杂的业务任务,传统的任务处理通过层级嵌套功能函数来实现,这种任务处理方式层级嵌套较深,导致程序开发效率较低。
发明内容
本申请实施例提供一种多依赖任务分组管理方法、装置、设备及存储介质,有效实现任务解耦,提高程序开发效率。
在第一方面,本申请实施例提供了一种多依赖任务分组管理方法,包括:
依据业务配置信息构建单元任务以及分组任务,所述分组任务包括多个子任务;
构建任务队列,将所述单元任务以及所述分组任务加入所述任务队列;
依据业务配置信息配置所述单元任务和所述分组任务之间以及所述分组任务内所述子任务之间的依赖关系;
启动所述任务队列,以按照所述依赖关系执行所述任务队列内的任务,直至所述任务队列内的所述单元任务和所述分组任务均执行完毕。
在第二方面,本申请实施例提供了一种多依赖任务分组管理装置,包括任务构建模块、队列构建模块、关系确立模块和任务执行模块,其中:
任务构建模块,用于依据业务配置信息构建单元任务以及分组任务,所述分组任务包括多个子任务;
队列构建模块,用于构建任务队列,将所述单元任务以及所述分组任务加入所述任务队列;
关系确立模块,用于依据业务配置信息配置所述单元任务和所述分组任务之间以及所述分组任务内所述子任务之间的依赖关系;
任务执行模块,用于启动所述任务队列,以按照所述依赖关系执行所述任务队列内的任务,直至所述任务队列内的所述单元任务和所述分组任务均执行完毕。
在第三方面,本申请实施例提供了一种计算机设备,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的多依赖任务分组管理方法。
在第四方面,本申请实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的多依赖任务分组管理方法。
本申请实施例通过根据业务配置信息分别构建单元任务和分组任务,将单元任务和分组任务加入到任务队列中,并构建单元任务和分组任务之间以及子任务之间的依赖关系,启动任务队列后,按照依赖关系依次从任务队列中调用并执行任务,直至完成各任务队列中的单元任务和分组任务,将分组任务抽象成独立的任务单元,不需要修改原任务链,单元任务和分组任务均作为任务队列中的可执行单元,实现任务解耦,可保持统一的上层调度,无需关注任务内部具体实现,有效简化了任务调度的复杂度,任务之间的依赖关系更加清晰,任务线程管理更简单,有效提高程序开发效率并节省程序维护成本。
附图说明
图1是本申请实施例提供的一种多依赖任务分组管理方法的流程图;
图2是本申请实施例提供的一种任务队列的模型示意图;
图3是本申请实施例提供的另一种任务队列的模型示意图;
图4是本申请实施例提供的另一种多依赖任务分组管理方法的流程示意图;
图5是本申请实施例提供的一种素材下载业务场景的交互界面示意图;
图6是本申请实施例提供的一种下载程序的任务关系示意图;
图7是本申请实施例提供的一种单元任务和分组任务的单元模块示意图;
图8是本申请实施例提供的一种多依赖任务分组管理装置的结构示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
图1给出了本申请实施例提供的一种多依赖任务分组管理方法的流程图,本申请实施例提供的多依赖任务分组管理方法可以由多依赖任务分组管理装置来执行,该多依赖任务分组管理装置可以通过硬件和/或软件的方式实现,并集成在计算机设备中。
下述以多依赖任务分组管理装置执行多依赖任务分组管理方法为例进行描述。参考图1,该多依赖任务分组管理方法包括:
S101:依据业务配置信息构建单元任务以及分组任务,所述分组任务包括多个子任务。
其中,不同的业务场景对应不同业务配置信息,业务场景可以是多队列下载任务、程序启动任务、复杂业务任务、应用弹窗队列等。业务配置信息预先根据具体的业务场景进行制定并存储,并在需要启动相应业务场景对应的程序任务时,由多依赖任务分组管理装置获取对应业务配置信息。业务配置信息记录有对应一个或多个任务队列内的多个独立任务的任务配置信息以及同一任务队列中独立任务之间的依赖关系,不同的任务配置信息对应不同的任务队列。
同时,对于存在多个子任务的独立任务,对应任务配置信息记录有每个独立任务所包含的子任务对应的节点配置信息以及子任务之间的依赖关系。其中依赖关系可以是任务的完成依赖于其他任务的完成、启动或具体进程,任务之间的依赖关系还可以是并行执行、串行执行等(即任务之间不相互依赖)。可选的,若任务之间不存在依赖关系,可按顺序执行任务。在一个可能的实施例中,其中多个子任务还可以是存在并行关系的多个独立任务。
其中,分组任务是一个抽象的任务类,分组任务继承于独立的任务,分组任务内部设置并维护一个分组任务队列,使其管理分组任务内的多个子任务。
示例性的,在需要启动业务场景的程序任务时,获取对应业务场景的业务配置信息,确定业务配置信息包含的多个任务配置信息,确定每个任务配置信息对应的子任务的数量,并依据仅包含一个子任务的独立任务对应的任务配置信息构建单元任务,依据包含多个子任务的独立任务对应的任务配置信息构建分组任务,该分组任务中包含多个子任务,子任务根据对应节点配置信息进行创建。
以多下载任务场景为例,对应的独立任务为下载任务,业务配置信息包括对应不同下载任务的任务配置信息。若下载任务对应的数据直接经过文件下载任务即可用(即仅包含一个子任务),任务配置信息记录有对应待下载数据的下载地址(例如URL地址)。本实施例对应每个仅包含一个子任务的任务配置信息创建一个单元任务。若文件下载任务之间存在依赖关系,则任务配置信息还记录有文件下载任务之间的依赖关系。
若下载任务对应的数据需要经过多个下载任务和解压任务等多个子任务才可用,则任务配置信息包括记录有不同文件下载地址的多个节点配置信息。本实施例依据每个包含多个子任务的任务配置信息创建一个分组任务,该分组任务包含多个下载任务和解压任务在内的多个子任务,每个子任务对应一个节点配置信息。若多个子任务之间存在依赖关系,则任务配置信息还记录有子任务之间的依赖关系,例如下载任务包括文件1的下载任务、文件2的下载任务以及对文件1和2的解压任务,则任务配置信息记录的依赖关系为:对文件1和2解压的启动依赖于文件1下载和文件2下载的完成。
S102:构建任务队列,将所述单元任务以及所述分组任务加入所述任务队列。
示例性的,根据业务配置信息构建任务队列,并将单元任务和分组任务加入到对应的任务队列中。例如,业务配置信息记录有多个任务队列,不同的任务队列对应多个不同的独立任务,在根据业务配置信息构建每个独立任务对应的单元任务以及分组任务后,根据业务配置信息与任务队列的对应关系,将单元任务和分组任务加入对应的任务队列中。
S103:依据业务配置信息配置所述单元任务和所述分组任务之间以及所述分组任务内所述子任务之间的依赖关系。
示例性的,根据业务配置信息记录的独立任务之间的依赖关系,确定每一任务队列内对应的单元任务之间、分组任务之间以及单元任务和分组任务之间的依赖关系,并在每个任务队列中添加单元任务之间、分组任务之间以及单元任务和分组任务之间的依赖关系。
进一步的,确定每个分组任务内各子任务之间的依赖关系,并在任务队列的分组任务中添加对应子任务之间的依赖关系。
可以理解的是,对依赖关系的配置可以是在单元任务和分组任务加入任务队列之前或之后进行,本申请不对依赖关系的建立和将任务加入任务队列的操作顺序进行限定,只要任务队列还没有启动,在任务加入任务队列前后都可以配置依赖关系,即步骤S103可在步骤S102之前或之后进行。在一个可能的实施例中,任务队列的创建可在构建单元任务以及分组任务之前进行。
S104:启动所述任务队列,以按照所述依赖关系执行所述任务队列内的任务,直至所述任务队列内的所述单元任务和所述分组任务均执行完毕。
示例性的,启动任务队列,任务队列根据依赖关系依次从调用任务队列内的单元任务或分组任务,并执行单元任务或分组任务,在一个单元任务或分组任务执行完毕后,继续依据依赖关系调用下一个单元任务或分组任务并执行,直至当前程序任务下所有任务队列内的单元任务和分组任务均执行完毕。
需要进行解释的是,任务队列之间是存在互斥关系的,即同一时间只能执行一个任务队列,多个任务队列的执行可以是按照队列创建完成时间顺序或指定顺序执行,或者是优先响应并执行用户操作目标对应的任务队列。
图2给出了本申请实施例提供的一种任务队列的模型示意图,如图2所示,假设由任务A、B、C组成任务链,任务B依赖任务A的完成,任务C依赖任务B的完成,并且任务B可分裂出B1和B2两个并行的子任务,传统的多任务处理方式是无法控制B节点的子节点B1和B2的并发性的,本实施例构建单元任务A和C以及分组任务B,分组任务B包含有子任务B1和B2,并将单元任务A、C以及分组任务加入任务队列中,并添加依赖关系为分组任务B依赖于单元任务A、单元任务C依赖于分组任务B,其执行方式是execute(A)→execute(B)→execute(C),其中execute(B)分解为execute(B1)+execute(B2),子任务B1、B2都执行完毕,分组任务B才执行完毕,任务队列可以继续调度其它任务。可见分组任务是该任务队列中的可调度单元,分组任务内的节点是一个树状结构,所有子结点的子任务全部完成,根结点的分组任务才会标记为完成,其中子任务B1、B2可以串行执行,也可以并行执行,子任务B1、B2也可以支持依赖关系,比如子任务B1需要子任务B2完成才能开始执行。基于任务队列的分组功能,原任务链不需要修改,只需要将原来的B任务换成一个分组任务即可,其中分组任务与原任务都是队列中的执行单元,可以保持统一的上层调度,无需关注任务内部具体实现。
图3给出了本申请实施例提供的另一种任务队列的模型示意图,如图3所示,假设有A、B、C、D四个任务,根据业务配置信息可知任务C和D为并行任务,可组合成一个分组任务,同时该分组任务依赖于任务B的完成,任务A与上述任务体系并行,当四个任务都完成,整个程序流程才结束,这时整个程序流程为:(A||B<--{C||D})-->end。则在创建任务队列时,先构建单元任务A和单元任务B,然后构建并发的任务C和D为分组任务G,将单元任务A、B以及分组任务G加入任务队列中并添加任务间的依赖关系,并启动任务队列,由任务队列按照依赖关系调用任务并执行。示例性的,执行图3提供的任务队列后,单元任务A和单元任务B并发执行,在单元任务B完成后分组任务G开始执行,其中子任务C和D并发执行,在单元任务A、B和分组任务G均完成后,任务队列执行完毕,子任务C和D组成的分组任务G充当独立的任务执行单元,实现了整体业务流程的简化。
上述,通过根据业务配置信息分别构建单元任务和分组任务,将单元任务和分组任务加入到任务队列中,并构建单元任务和分组任务之间以及子任务之间的依赖关系,启动任务队列后,按照依赖关系依次从任务队列中调用并执行任务,直至完成各任务队列中的单元任务和分组任务,将分组任务抽象成独立的任务单元,不需要修改原任务链,单元任务和分组任务均作为任务队列中的可执行单元,实现任务解耦,可保持统一的上层调度,无需关注任务内部具体实现,有效简化了任务调度的复杂度,任务之间的依赖关系更加清晰,任务线程管理更简单,有效提高程序开发效率并节省程序维护成本。
在上述实施例的基础上,图4给出了本申请实施例提供的另一种多依赖任务分组管理方法的流程示意图,该多依赖任务分组管理方法是对上述多依赖任务分组管理方法的具体化。参考图4,该多依赖任务分组管理方法包括:
S201:获取业务配置信息,根据所述业务配置信息确定不同任务的任务量。
具体的,在需要执行程序任务时,获取当前业务场景对应的业务配置信息,确定业务配置信息所包含的多个任务配置信息,依据任务配置信息确定多个独立任务,并根据任务配置信息中包含的节点配置信息确定各独立任务包含的子任务,其中独立任务与任务配置信息一一对应,子任务与节点配置信息一一对应(对于只有一个子任务的独立任务,对应任务配置信息不包含节点配置信息),并将各独立任务的子任务的数量确定为对应独立任务的任务量。
S202:依据所述任务量构建单元任务以及分组任务,所述单元任务对应单个任务量,所述分组任务对应多个任务量。
具体的,对于任务量为1的独立任务,根据该独立任务对应的任务配置信息构建单元任务,对于任务量大于1的独立任务,确定该独立任务各个子任务的对应的节点配置信息构建分组任务。
S203:构建任务队列,将所述单元任务以及所述分组任务加入所述任务队列。
S204:依据业务配置信息配置所述单元任务和所述分组任务之间以及所述分组任务内所述子任务之间的依赖关系。
S205:在每个分组任务内部设置一个分组观察任务,所述分组观察任务响应于对应分组任务内所有子任务的任务完成而启动,以回调任务完成事件。
具体的,对于每一个分组任务,在分组任务内部设置分组任务队列(TaskQueue),然后在分组任务内部设置一个分组观察任务(finishTask)。该分组观察任务依赖于分组任务队列内每一个子任务的完成,在分组任务队列内每一个子任务都完成后分组观察任务将启动,并向任务队列回调任务完成事件,从而得知整个分组任务的完成情况,以通知任务队列对分组任务进行出队操作并调用下一个任务进行执行。因为分组观察任务需要组内所有子任务完成才能得到执行,分组观察任务会回调组内所有任务完的事件。
需要进行解释的是,由于任务之间可以建立依赖关系,为了监听分组任务的完成状态,需要一个分组观察任务追踪分组任务的所有子任务完成情况,所以只需要每次添加子任务到分组任务中,分组观察任务设置为依赖子任务的完成,这样只要依赖的子任务都完成后,分组观察任务就会得到执行并完成,实现任务完成事件的回调,这样就可以获得分组任务的任务状态了。
S206:启动所述任务队列,以按照所述依赖关系依次调用并执行所述任务队列内的单元任务或分组任务。
具体的,依据业务配置信息将单元任务以及分组任务加入对应任务队列并添加依赖关系后,启动这些任务队列,由任务队列按照单元任务、分组任务间的依赖关系依次调用并执行任务队列内的单元任务或分组任务。由于任务队列之间存在互斥关系,同一时间只执行一个任务队列,可按照任务队列的设定顺序或用户的选择操作确定优先执行的任务队列。
对于分组任务,分组任务队列根据组内各子任务之间的依赖关系调用并执行子任务,直至组内的子任务全部执行完毕。
S207:检测所述单元任务或所述分组任务是否执行完毕,并在执行完毕时,按照所述依赖关系调用并执行所述任务队列内的下一个单元任务或分组任务。
具体的,在任务队列执行过程中,实时检测所执行的单元任务或分组任务是否执行完毕,并在执行完毕时依赖关系调用并执行当前任务队列内的下一个单元任务或分组任务。
在一个可能的实施例中,对检测单元任务或所述分组任务是否执行完毕的判断具体包括步骤S2071-S2072:
S2071:响应于指示单元任务已完成的任务状态标记,确定对应单元任务执行完毕。
具体的,对于正在执行的单元任务,任务队列将对单元任务进行监听,在监听到单元任务的任务状态标记设置为已完成时,确定当前单元任务已执行完毕。
S2072:响应于所述分组观察任务回调的任务完成事件,确定对应分组任务执行完毕。
具体的,对于正在执行的分组任务,在分组任务内的全部子任务均执行完毕时,对应分组内的观察任务执行并回调任务完成事件,任务队列可根据该任务完成事件确定分组任务执行完毕。
S208:判断是否检测到队列切换操作。若是,跳转至步骤S209,否则,跳转至步骤S210。
具体的,在任务队列执行过程中,实时检测是否发生队列切换操作,其中队列切换操作所指向的切换对象为任务队列,并在检测到队列切换操作时,跳转至步骤S209,否则跳转至步骤S210进一步检查是否接收到任务切换操作。可以理解的是,本申请不对队列切换操作和任务切换操作的检查判断的先后顺序做限定,对队列切换操作和任务切换操作进行检查判断的先后顺序可根据实际情况进行设置。
S209:切换执行所述队列切换操作对应的任务队列,并在所述任务队列执行完毕后切换至原任务队列。
具体的,若检测到队列切换操作,则暂停当前任务队列的执行,并启动队列切换操作所指向的任务队列,由新启动的任务队列调用并执行其内的单元任务或分组任务,并在该任务队列执行完毕后切换至原任务队列,继续执行原任务队列。
S210:判断是否检测到任务切换操作。若是,跳转至步骤S211,否则,跳转至步骤S212。
具体的,在任务队列执行过程中,实时检测是否发生任务切换操作,其中任务切换操作所指向的切换对象为单元任务或分组任务,并在检测到任务切换操作时,跳转至步骤S211。
S211:切换执行任务切换操作所对应的单元任务或分组任务,并在所述单元任务或所述分组任务执行完毕后切换至原单元任务或原分组任务。
具体的,若检测到任务切换操作,则暂停任务队列当前执行的单元任务或分组任务,调用并执行任务切换操作所指向的单元任务或分组任务,并在任务切换操作所指向的单元任务或分组任务执行完毕后切换至原单元任务或原分组任务,继续执行原单元任务或原分组任务。
S212:判断是否所有任务队列内的所述单元任务和所述分组任务均执行完毕。若是,则结束程序任务,否则,返回至步骤S206,继续执行任务队列。
具体的,在单元任务或分组任务执行完毕后,判断任务队列内的所有单元任务和分组任务是否均已执行完毕,若仍存在未执行完毕的单元任务或分组任务,则调用并执行未执行完毕的单元任务或分组任务。
进一步的,在当前任务队列的所有单元任务和分组任务均执行完毕时,判断全部任务队列是否均已执行完毕,若仍存在未执行完毕的任务队列,返回至步骤S206,启动并执行未执行完毕的任务队列。若全部任务队列均已执行完毕,则结束当前程序任务。
图5给出了本申请实施例提供的一种素材下载业务场景的交互界面示意图,如图5所示,假设在短视频应用的美妆特效业务场景中,提供多种美妆特效,其中美妆特效的应用对象可以包括口红、腮红、修容、眉毛、眼影、睫毛、眼线等,对应每一个应用对象提供一个或多个特效单品(例如图5中睫毛对应的美妆特效下提供的LS12、LS13、LS11等特效单品),不同的特效单品的实现所依赖的特效素材存在区别,其中特效素材可包括美妆素材和模型素材,例如部分特效单品的实现仅需要美妆素材(例如简单的特效贴图),而部分特效单品的实现需要模型素材和美妆素材共同实现(例如需要利用模型素材识别人体脸部特征,在把美妆素材贴敷在对应位置)。
根据美妆特效制定该业务场景的业务配置信息,其中业务配置信息记录有当前服务器可提供的多个应用对象对应的任务队列(一个应用对象对应于一个任务队列)、每个任务队列中多个独立任务的任务配置信息(一个特效单品对应一个独立任务)以及独立任务之间的依赖关系(即不同特效单品之间的依赖关系),任务配置信息记录有对应独立任务所包含的子任务(子任务对应于特效素材的下载以及相关操作)对应的节点配置信息以及子任务之间的依赖关系(即特效素材的下载以及相关操作之间的依赖关系,其中相关操作可以是解压素材文件等)。
在需要应用美妆特效时(例如点击进入交互界面中的“美妆”界面),需要从服务器中获取对应的特效素材,具体的,向服务器获取美妆特效对应的业务配置信息,并根据业务配置信息创建美妆特效下载程序任务。图6给出了本申请实施例提供的一种下载程序的任务关系示意图,其为根据上述提供的业务配置信息创建的美妆特效下载程序的任务关系示意图。如图6所示,根据业务配置信息创建任务队列数组,该任务队列数组中包含多个任务队列,每一个任务队列对应每个特效单品分别设置有单元任务或分组任务,其中单元任务对应一个子任务(例如图6中的单元任务3,其仅包括一个子任务A3)以及对应美妆素材的URL地址,分组任务对应多个子任务(例如图6中的分组任务1,其包括子任务A1和模型下载任务)以及对应美妆素材的URL地址。本申请实施例提供的一种单元任务和分组任务的单元模块示意图如图7所示,图7中示出单元任务和分组任务,其中分组任务由依次存在依赖关系的单元任务1-3组成,单元任务3依赖于单元任务2的完成,单元任务2依赖于单元任务1的完成。其中任务间的依赖关系通过箭头进行表示,例如,单元任务3指向分组任务2,表示单元任务3依赖于分组任务2的完成,子任务A1指向模型下载任务,指示子任务A1依赖于模型下载任务的完成。
在完成美妆特效下载程序任务的穿点后,执行该美妆特效下载程序任务,依次或根据当前交互界面所对应应用对象启动对应的任务队列,并根据任务间的依赖关系调用并执行单元任务或分组任务,并在执行分组任务时根据子任务间的依赖关系执行子任务,分组任务的完成根据分组观察任务回调的任务完成事件进行确定。在执行美妆特效下载程序任务的过程中,实时检测对各应用对象以及特效单品的下载、暂停、恢复、取消等交互操作,并根据交互操作的指示进行任务队列、单元任务、分组任务的下载、暂停、恢复、取消等操作。例如,在从睫毛切换到眼影时,则暂停睫毛对应的任务队列,优先执行眼影对应的任务队列,在选择特效单品时,暂停当前特效单品对应彩妆素材的下载,优先下载被选中的特效单品对应的彩妆素材,在特效单品对应彩妆素材下载完成后恢复原先的下载任务。
可见,通过对多任务、多依赖任务的抽象任务树状管理,利用任务分组的特性,配合任务队列调度,可有效实现多个任务队列、任务之间有依赖关系、各个任务队列以及任务需要支持暂停、恢复、取消操作、任务队列互斥、单个任务队列中的任务支持串行下载以及单个任务支持独立下载的业务场景,任务有了分组功能,可以简化任务之间的关系链,程序结构更加清晰易懂,代码维护及扩展性较高,应用场景也非常丰富,比如多队列下载任务,程序启动任务管理,复杂业务任务管理,应用弹窗队列管理等等。
上述,通过根据业务配置信息分别构建单元任务和分组任务,将单元任务和分组任务加入到任务队列中,并构建单元任务和分组任务之间以及子任务之间的依赖关系,启动任务队列后,按照依赖关系依次从任务队列中调用并执行任务,直至完成各任务队列中的单元任务和分组任务,将分组任务抽象成独立的任务单元,不需要修改原任务链,单元任务和分组任务均作为任务队列中的可执行单元,实现任务解耦,可保持统一的上层调度,无需关注任务内部具体实现,有效简化了任务调度的复杂度,任务之间的依赖关系更加清晰,任务线程管理更简单,有效提高程序开发效率并节省程序维护成本。同时,通过分组观察任务实现对分组任务的完成状态的侦查,有效保证任务队列内各任务的正常调用,并可响应对任务队列以及单元任务和分组任务之间的切换操作,有效提高用户体验,可在复杂的业务场景中通过任务分组的方式建立任务关系模型,可以覆盖大部分iOS的业务场景,将分组任务抽象成独立任务单元,将每个任务独立成一个可执行单元,分组任务也是一个独立的可执行单元,交由任务管理器统一调度,简化了任务调度的复杂度,任务之间的依赖关系更加清晰,任务线程管理变得更加简单。
图8给出了本申请实施例提供的一种多依赖任务分组管理装置的结构示意图。参考图8,该多依赖任务分组管理装置包括任务构建模块31、队列构建模块32、关系确立模块33和任务执行模块34。
其中,任务构建模块31,用于依据业务配置信息构建单元任务以及分组任务,所述分组任务包括多个子任务;队列构建模块32,用于构建任务队列,将所述单元任务以及所述分组任务加入所述任务队列;关系确立模块33,用于依据业务配置信息配置所述单元任务和所述分组任务之间以及所述分组任务内所述子任务之间的依赖关系;任务执行模块34,用于启动所述任务队列,以按照所述依赖关系执行所述任务队列内的任务,直至所述任务队列内的所述单元任务和所述分组任务均执行完毕。
上述,通过根据业务配置信息分别构建单元任务和分组任务,将单元任务和分组任务加入到任务队列中,并构建单元任务和分组任务之间以及子任务之间的依赖关系,启动任务队列后,按照依赖关系依次从任务队列中调用并执行任务,直至完成各任务队列中的单元任务和分组任务,将分组任务抽象成独立的任务单元,不需要修改原任务链,单元任务和分组任务均作为任务队列中的可执行单元,实现任务解耦,可保持统一的上层调度,无需关注任务内部具体实现,有效简化了任务调度的复杂度,任务之间的依赖关系更加清晰,任务线程管理更简单,有效提高程序开发效率并节省程序维护成本。
本申请实施例还提供了一种计算机设备,该计算机设备可集成本申请实施例提供的多依赖任务分组管理装置。参考图9,该计算机设备包括:输入装置43、输出装置44、存储器42以及一个或多个处理器41;所述存储器42,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器41执行,使得所述一个或多个处理器41实现如上述实施例提供的多依赖任务分组管理方法。上述提供的多依赖任务分组管理装置、设备和计算机可用于执行上述任意实施例提供的多依赖任务分组管理方法,具备相应的功能和有益效果。
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如上述实施例提供的多依赖任务分组管理方法。当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的多依赖任务分组管理方法,还可以执行本申请任意实施例所提供的多依赖任务分组管理方法中的相关操作。
上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。

Claims (10)

1.一种多依赖任务分组管理方法,其特征在于,包括:
依据业务配置信息构建单元任务以及分组任务,所述分组任务包括多个子任务;
构建任务队列,将所述单元任务以及所述分组任务加入所述任务队列;
依据业务配置信息配置所述单元任务和所述分组任务之间以及所述分组任务内所述子任务之间的依赖关系;
启动所述任务队列,以按照所述依赖关系执行所述任务队列内的任务,直至所述任务队列内的所述单元任务和所述分组任务均执行完毕。
2.根据权利要求1所述的多依赖任务分组管理方法,其特征在于,所述依据业务配置信息构建单元任务以及分组任务,包括:
获取业务配置信息,根据所述业务配置信息确定不同任务的任务量;
依据所述任务量构建单元任务以及分组任务,所述单元任务对应单个任务量,所述分组任务对应多个任务量。
3.根据权利要求1所述的多依赖任务分组管理方法,其特征在于,所述按照所述依赖关系执行所述任务队列内的任务,包括:
按照所述依赖关系依次调用并执行所述任务队列内的单元任务或分组任务;
检测所述单元任务或所述分组任务是否执行完毕,并在执行完毕时,按照所述依赖关系调用并执行所述任务队列内的下一个单元任务或分组任务。
4.根据权利要求3所述的多依赖任务分组管理方法,其特征在于,所述启动所述任务队列之前,还包括:
在每个分组任务内部设置一个分组观察任务,所述分组观察任务响应于对应分组任务内所有子任务的任务完成而启动,以回调任务完成事件。
5.根据权利要求4所述的多依赖任务分组管理方法,其特征在于,所述检测所述单元任务或所述分组任务是否执行完毕,包括:
响应于指示单元任务已完成的任务状态标记,确定对应单元任务执行完毕;
响应于所述分组观察任务回调的任务完成事件,确定对应分组任务执行完毕。
6.根据权利要求3所述的多依赖任务分组管理方法,其特征在于,所述按照所述依赖关系依次调用并执行所述任务队列内的单元任务或分组任务之后,还包括:
判断是否检测到任务切换操作;
若检测到任务切换操作,则切换执行任务切换操作所对应的单元任务或分组任务,并在所述单元任务或所述分组任务执行完毕后切换至原单元任务或原分组任务。
7.根据权利要求3所述的多依赖任务分组管理方法,其特征在于,所述按照所述依赖关系依次调用并执行所述单元任务和所述分组任务之后,还包括:
判断是否检测到队列切换操作;
若检测到队列切换操作,则切换执行所述队列切换操作对应的任务队列,并在所述任务队列执行完毕后切换至原任务队列。
8.一种多依赖任务分组管理装置,其特征在于,包括任务构建模块、队列构建模块、关系确立模块和任务执行模块,其中:
任务构建模块,用于依据业务配置信息构建单元任务以及分组任务,所述分组任务包括多个子任务;
队列构建模块,用于构建任务队列,将所述单元任务以及所述分组任务加入所述任务队列;
关系确立模块,用于依据业务配置信息配置所述单元任务和所述分组任务之间以及所述分组任务内所述子任务之间的依赖关系;
任务执行模块,用于启动所述任务队列,以按照所述依赖关系执行所述任务队列内的任务,直至所述任务队列内的所述单元任务和所述分组任务均执行完毕。
9.一种计算机设备,其特征在于,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7任一所述的多依赖任务分组管理方法。
10.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-7任一所述的多依赖任务分组管理方法。
CN202011540071.2A 2020-12-23 2020-12-23 一种多依赖任务分组管理方法、装置、设备及存储介质 Active CN112559156B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011540071.2A CN112559156B (zh) 2020-12-23 2020-12-23 一种多依赖任务分组管理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011540071.2A CN112559156B (zh) 2020-12-23 2020-12-23 一种多依赖任务分组管理方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN112559156A true CN112559156A (zh) 2021-03-26
CN112559156B CN112559156B (zh) 2024-06-18

Family

ID=75031585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011540071.2A Active CN112559156B (zh) 2020-12-23 2020-12-23 一种多依赖任务分组管理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112559156B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113467908A (zh) * 2021-06-23 2021-10-01 深圳市蘑菇财富技术有限公司 任务执行方法、装置、计算机可读存储介质及终端设备
WO2022222567A1 (zh) * 2021-04-22 2022-10-27 中国银联股份有限公司 一种任务调度方法、装置及计算机可读存储介质
CN116841739A (zh) * 2023-06-30 2023-10-03 沐曦集成电路(杭州)有限公司 用于异构计算平台的数据包重用系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6757897B1 (en) * 2000-02-29 2004-06-29 Cisco Technology, Inc. Apparatus and methods for scheduling and performing tasks
JP2008003709A (ja) * 2006-06-20 2008-01-10 Mitsubishi Electric Corp 管理装置及びタスク管理方法及びプログラム
CN102508716A (zh) * 2011-09-29 2012-06-20 用友软件股份有限公司 任务控制装置和任务控制方法
CN106874031A (zh) * 2017-01-03 2017-06-20 青岛海信电器股份有限公司 一种终端设备系统程序的启动方法及装置
CN109725995A (zh) * 2018-06-15 2019-05-07 中国平安人寿保险股份有限公司 数据抽取任务执行方法、装置、设备及可读存储介质
CN110888721A (zh) * 2019-10-15 2020-03-17 平安科技(深圳)有限公司 一种任务调度的方法及相关装置
CN111858027A (zh) * 2020-06-12 2020-10-30 中国科学院信息工程研究所 一种软件机器人协同处理方法及系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6757897B1 (en) * 2000-02-29 2004-06-29 Cisco Technology, Inc. Apparatus and methods for scheduling and performing tasks
JP2008003709A (ja) * 2006-06-20 2008-01-10 Mitsubishi Electric Corp 管理装置及びタスク管理方法及びプログラム
CN102508716A (zh) * 2011-09-29 2012-06-20 用友软件股份有限公司 任务控制装置和任务控制方法
CN106874031A (zh) * 2017-01-03 2017-06-20 青岛海信电器股份有限公司 一种终端设备系统程序的启动方法及装置
CN109725995A (zh) * 2018-06-15 2019-05-07 中国平安人寿保险股份有限公司 数据抽取任务执行方法、装置、设备及可读存储介质
CN110888721A (zh) * 2019-10-15 2020-03-17 平安科技(深圳)有限公司 一种任务调度的方法及相关装置
CN111858027A (zh) * 2020-06-12 2020-10-30 中国科学院信息工程研究所 一种软件机器人协同处理方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
WANGZE NI; PENG CHENG; LEI CHEN; XUEMIN LIN: "Task Allocation in Dependency-aware Spatial Crowdsourcing", 2020 IEEE 36TH INTERNATIONAL CONFERENCE ON DATA ENGINEERING (ICDE), 27 May 2020 (2020-05-27) *
季爱明;沈海斌;严晓浪;: "基于任务分组的动态可重构结构编译方法", 浙江大学学报(工学版), no. 08, 28 August 2006 (2006-08-28) *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022222567A1 (zh) * 2021-04-22 2022-10-27 中国银联股份有限公司 一种任务调度方法、装置及计算机可读存储介质
CN113467908A (zh) * 2021-06-23 2021-10-01 深圳市蘑菇财富技术有限公司 任务执行方法、装置、计算机可读存储介质及终端设备
CN113467908B (zh) * 2021-06-23 2024-02-20 深圳市蘑菇财富技术有限公司 任务执行方法、装置、计算机可读存储介质及终端设备
CN116841739A (zh) * 2023-06-30 2023-10-03 沐曦集成电路(杭州)有限公司 用于异构计算平台的数据包重用系统
CN116841739B (zh) * 2023-06-30 2024-04-19 沐曦集成电路(杭州)有限公司 用于异构计算平台的数据包重用系统

Also Published As

Publication number Publication date
CN112559156B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
CN112559156B (zh) 一种多依赖任务分组管理方法、装置、设备及存储介质
WO2019153829A1 (zh) 一种容器Dockerfile、容器镜像快速生成方法及系统
Cao et al. Gridflow: Workflow management for grid computing
CN107943577B (zh) 用于调度任务的方法和装置
US10223104B2 (en) Optimizing a build process by scaling build agents based on system need
Orsini et al. Context-aware computation offloading for mobile cloud computing: Requirements analysis, survey and design guideline
CN112162753A (zh) 软件部署方法、装置、计算机设备和存储介质
Cicirelli et al. Modelling and simulation of complex manufacturing systems using statechart-based actors
US8051427B2 (en) Method of establishing a logical state of an instance using non-deterministic operation results stored in a result log
Imai et al. Accurate resource prediction for hybrid IaaS clouds using workload-tailored elastic compute units
Zhu et al. If docker is the answer, what is the question?
US7885906B2 (en) Problem solving system and method
Qasha et al. Dynamic deployment of scientific workflows in the cloud using container virtualization
KR20220088333A (ko) 로봇 프로세스 자동화(rpa) 로봇들의 동적 클라우드 배치
CN114924858A (zh) 任务调度方法及装置、存储介质及电子设备
Genez et al. Time-discretization for speeding-up scheduling of deadline-constrained workflows in clouds
Klingler et al. Beyond@ cloudfunction: Powerful code annotations to capture serverless runtime patterns
Teixeira et al. Cloud simulation for continuous integration and deployment in robotics
Raj A framework for migration of microservices based applications to serverless platform with efficient cold start latency
Carnero et al. Running simulations in HPC and cloud resources by implementing enhanced TOSCA workflows
da Rosa Righi et al. Towards cloud-based asynchronous elasticity for iterative HPC applications
Benoit et al. Scheduling skeleton-based grid applications using PEPA and NWS
Leslie et al. DEWE: A framework for distributed elastic scientific workflow execution
CN111124386B (zh) 基于Unity的动画事件处理方法、装置、设备和存储介质
Antoniades et al. Enabling cloud application portability

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
GR01 Patent grant
GR01 Patent grant