CN113918288A - 任务处理方法、装置、服务器及存储介质 - Google Patents

任务处理方法、装置、服务器及存储介质 Download PDF

Info

Publication number
CN113918288A
CN113918288A CN202010644862.3A CN202010644862A CN113918288A CN 113918288 A CN113918288 A CN 113918288A CN 202010644862 A CN202010644862 A CN 202010644862A CN 113918288 A CN113918288 A CN 113918288A
Authority
CN
China
Prior art keywords
task
dependency
increment
target
dependency relationship
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
Application number
CN202010644862.3A
Other languages
English (en)
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.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information Technology Co 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 Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202010644862.3A priority Critical patent/CN113918288A/zh
Publication of CN113918288A publication Critical patent/CN113918288A/zh
Pending legal-status Critical Current

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开关于一种任务处理方法、装置、服务器及存储介质,所述方法包括:获取输入的初始任务标识和目标时间区间;从任务依赖关系结构中,获取与初始任务标识相同的任务标识所对应的任务,作为当前任务;从任务依赖关系结构中获取当前任务对应的下游任务,将当前任务和当前任务对应的下游任务作为目标任务;根据目标任务的调度周期和目标时间区间,确定目标任务的任务执行数据;根据目标任务的任务依赖关系,确定任务执行数据之间的数据依赖关系;根据数据依赖关系,生成包括任务执行数据的任务执行数据结构,并按照任务执行数据结构执行任务执行数据。本实施例的任务执行数据结构占用内存资源较少,从而提高了内存资源的利用率。

Description

任务处理方法、装置、服务器及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及一种任务处理方法、装置、服务器及存储介质。
背景技术
大数据的计算、分析和处理通常由很多独立的进程完成,每个进程完成特定的数据处理逻辑,这些进程称之为任务。在实际某个大数据工作流处理过程中,任务和任务之间存在着先后的顺序依赖关系,也可以称为血缘关系。
举例来说,要处理任务A,首先要完成任务B的处理,因为任务A的处理依赖任务于B的处理结果,那么任务A和任务B的依赖关系为:任务A依赖于任务B。由于任务之间存在依赖关系,为保证工作流中整体任务正常运行处理,任务需要按照依赖关系有序、高效的执行,故而每次执行任务之前需要根据其任务元数据构建任务实例血缘图,在任务实例血缘图梳理了每个任务的任务实例之间的依赖关系,按照任务实例血缘图按序执行任务实例完成任务的执行。
然而,由于全量的任务实例血缘图构建后会存储到数据库,以便于任务实例血缘图恢复以快速执行任务,每次写入的任务规模在百万级别左右,需要消耗大量的内存资源,导致内存资源的利用率较低。
发明内容
本公开提供一种任务处理方法、装置、服务器及存储介质,以至少解决相关技术中维护全量的任务实例血缘图占用大量内存资源,导致内存资源的利用率较低的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种任务处理方法,包括:
获取输入的初始任务标识和目标时间区间;
从任务依赖关系结构中,获取与所述初始任务标识相同的任务标识所对应的任务,作为当前任务;所述任务依赖关系结构中包括多个任务对应的任务标识、调度周期和任务依赖关系;
从所述任务依赖关系结构中获取所述当前任务对应的下游任务,将所述当前任务和所述当前任务对应的下游任务作为目标任务;
根据所述目标任务的所述调度周期和所述目标时间区间,确定所述目标任务的任务执行数据;
根据所述目标任务的所述任务依赖关系,确定所述任务执行数据之间的数据依赖关系;
根据所述数据依赖关系,生成包括所述任务执行数据的任务执行数据结构,并按照所述任务执行数据结构执行所述任务执行数据。
在其中一个实施例中,所述根据所述目标任务的所述调度周期和所述目标时间区间,确定所述目标任务的任务执行数据,包括:
根据所述目标任务的调度周期和所述目标时间区间,确定至少一个任务执行时间;
将所述任务执行时间作为所述目标任务的执行时间,得到所述目标任务的至少一个任务执行数据。
在其中一个实施例中,在从任务依赖关系结构中,获取与所述初始任务标识相同的任务标识所对应的任务,作为当前任务之前,所述方法还包括:
获取任务元数据;所述任务元数据包括任务对应的任务标识、调度周期和上游依赖数据;所述上游依赖数据包括所述任务对应的上游任务的上游任务标识和上游依赖描述符;
根据所述上游依赖描述符和所述上游任务的调度周期,生成所述任务的依赖关系式;
根据所述任务对应的任务标识和所述依赖关系式,生成所述任务依赖关系结构。
在其中一个实施例中,所述上游依赖描述符包括操作符和依赖时间,所述根据所述上游依赖描述符和所述上游任务的调度周期,生成所述任务的依赖关系式,包括:
获取位图;所述位图中包括所述调度周期、所述操作符和所述依赖时间的赋值位置;
按照针对所述调度周期的转换关系,将所述上游任务的调度周期转换为第一结果数值;按照针对所述操作符的转换关系将所述操作符转换为第二结果数值;按照针对所述依赖时间的转换关系将所述依赖时间转换为第三结果数值;
按照所述调度周期、所述操作符和所述依赖时间的赋值位置,分别将所述第一结果数值、第二结果数值和第三结果数值,导入所述位图中的对应位置,得到所述任务的任务依赖关系。
在其中一个实施例中,在根据所述任务对应的任务标识和所述依赖关系式,生成所述任务依赖关系结构之后,所述方法还包括:
获取增量任务元数据和对应的操作行为;
根据所述操作行为和所述增量任务元数据,对所述任务依赖关系结构进行更新,得到更新后的任务依赖关系结构。
在其中一个实施例中,所述增量任务元数据包括增量任务对应的增量任务标识、增量调度周期和增量上游依赖数据;所述增量上游依赖数据包括所述增量任务对应的增量上游任务的增量上游任务标识和增量上游依赖描述符。
在其中一个实施例中,所述根据所述操作行为和所述增量任务元数据,对所述任务依赖关系结构进行更新,得到更新后的任务依赖关系结构,包括:
当所述操作行为为新增操作行为时,根据所述增量上游依赖描述符和所述增量上游任务的增量调度周期,确定所述增量任务的依赖关系式;
将所述增量任务对应的增量任务标识和所述依赖关系式,添加到所述任务依赖关系结构中,得到更新后的任务依赖关系结构。
在其中一个实施例中,所述根据所述操作行为和所述增量任务元数据,对所述任务依赖关系结构进行更新,得到更新后的任务依赖关系结构,包括:
当所述操作行为为更新操作行为时,获取所述增量任务元数据中的增量任务标识;
确定所述任务依赖关系结构中,与所述增量任务标识相同的任务标识,作为更新任务标识;
根据所述增量上游依赖描述符和所述增量上游任务的增量调度周期,确定所述增量任务的增量依赖关系式;
采用所述增量依赖关系式替换所述更新任务标识对应的任务的依赖关系式,得到更新后的任务依赖关系结构。
在其中一个实施例中,所述根据所述操作行为和所述增量任务元数据,对所述任务依赖关系结构进行更新,得到更新后的任务依赖关系结构,包括:
当所述操作行为为删除操作行为时,获取所述增量任务元数据中的增量任务标识;
确定所述任务依赖关系结构中,与所述增量任务标识相同的任务标识,作为删除任务标识;
将所述任务依赖关系结构中与所述删除任务标识对应的任务的依赖关系式进行删除,得到更新后的任务依赖关系结构。
根据本公开实施例的第二方面,提供一种任务处理装置,包括:
输入数据获取单元,被配置为执行获取输入的初始任务标识和目标时间区间;
当前任务获取单元,被配置为执行从任务依赖关系结构中,获取与所述初始任务标识相同的任务标识所对应的任务,作为当前任务;所述任务依赖关系结构中包括多个任务对应的任务标识、调度周期和任务依赖关系;
目标任务获取单元,被配置为执行从所述任务依赖关系结构中获取所述当前任务对应的下游任务,将所述当前任务和所述当前任务对应的下游任务作为目标任务;
任务执行数据确定单元,被配置为执行根据所述目标任务的所述调度周期和所述目标时间区间,确定所述目标任务的任务执行数据;
数据依赖关系确定单元,被配置为执行根据所述目标任务的所述任务依赖关系,确定所述任务执行数据之间的数据依赖关系;
数据执行单元,被配置为执行根据所述数据依赖关系,生成包括所述任务执行数据的任务执行数据结构,并按照所述任务执行数据结构执行所述任务执行数据。
在其中一个实施例中,所述任务执行数据确定单元,还被配置为执行根据所述目标任务的调度周期和所述目标时间区间,确定至少一个任务执行时间;将所述任务执行时间作为所述目标任务的执行时间,得到所述目标任务的至少一个任务执行数据。
在其中一个实施例中,所述装置还包括任务依赖关系结构生成单元,被配置为执行获取任务元数据;所述任务元数据包括任务对应的任务标识、调度周期和上游依赖数据;所述上游依赖数据包括所述任务对应的上游任务的上游任务标识和上游依赖描述符;根据所述上游依赖描述符和所述上游任务的调度周期,生成所述任务的依赖关系式;根据所述任务对应的任务标识和所述依赖关系式,生成所述任务依赖关系结构。
在其中一个实施例中,所述上游依赖描述符包括操作符和依赖时间,所述任务依赖关系结构生成单元,还被配置为执行获取位图;所述位图中包括所述调度周期、所述操作符和所述依赖时间的赋值位置;按照针对所述调度周期的转换关系,将所述上游任务的调度周期转换为第一结果数值;按照针对所述操作符的转换关系将所述操作符转换为第二结果数值;按照针对所述依赖时间的转换关系将所述依赖时间转换为第三结果数值;按照所述调度周期、所述操作符和所述依赖时间的赋值位置,分别将所述第一结果数值、第二结果数值和第三结果数值,导入所述位图中的对应位置,得到所述任务的任务依赖关系。
在其中一个实施例中,所述装置还包括增量处理单元,被配置为执行获取增量任务元数据和对应的操作行为;根据所述操作行为和所述增量任务元数据,对所述任务依赖关系结构进行更新,得到更新后的任务依赖关系结构。
在其中一个实施例中,所述增量任务元数据包括增量任务对应的增量任务标识、增量调度周期和增量上游依赖数据;所述增量上游依赖数据包括所述增量任务对应的增量上游任务的增量上游任务标识和增量上游依赖描述符。
在其中一个实施例中,所述增量处理单元,还被配置为执行当所述操作行为为新增操作行为时,根据所述增量上游依赖描述符和所述增量上游任务的增量调度周期,确定所述增量任务的依赖关系式;将所述增量任务对应的增量任务标识和所述依赖关系式,添加到所述任务依赖关系结构中,得到更新后的任务依赖关系结构。
在其中一个实施例中,所述增量处理单元,还被配置为执行当所述操作行为为更新操作行为时,获取所述增量任务元数据中的增量任务标识;确定所述任务依赖关系结构中,与所述增量任务标识相同的任务标识,作为更新任务标识;根据所述增量上游依赖描述符和所述增量上游任务的增量调度周期,确定所述增量任务的增量依赖关系式;采用所述增量依赖关系式替换所述更新任务标识对应的任务的依赖关系式,得到更新后的任务依赖关系结构。
在其中一个实施例中,所述增量处理单元,还被配置为执行当所述操作行为为删除操作行为时,获取所述增量任务元数据中的增量任务标识;确定所述任务依赖关系结构中,与所述增量任务标识相同的任务标识,作为删除任务标识;将所述任务依赖关系结构中与所述删除任务标识对应的任务的依赖关系式进行删除,得到更新后的任务依赖关系结构。
根据本公开实施例的第三方面,提供一种服务器,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如第一方面的实施方式中的任务处理方法。
根据本公开实施例的第四方面,提供一种存储介质,包括:当所述存储介质中的指令由服务器的处理器执行时,使得所述服务器能够执行如第一方面的实施方式中的任务处理方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,设备的至少一个处理器从所述可读存储介质读取并执行所述计算机程序,使得设备执行第一方面的任一项实施例中所述的任务处理方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
获取输入的初始任务标识和目标时间区间,并从任务依赖关系结构中,获取与初始任务标识相同的任务标识所对应的任务,作为当前任务;任务依赖关系结构中包括多个任务对应的任务标识、调度周期和任务依赖关系;然后从任务依赖关系结构中获取当前任务对应的下游任务,将当前任务和当前任务对应的下游任务作为目标任务;根据目标任务的调度周期和目标时间区间,确定目标任务的任务执行数据;接着根据目标任务的任务依赖关系,确定任务执行数据之间的数据依赖关系;最后根据数据依赖关系,生成包括任务执行数据的任务执行数据结构,并按照任务执行数据结构执行任务执行数据。本实施例中维护有全量的任务依赖关系结构,通过任务依赖关系结构可以得到任意的目标时间区间的任务执行数据结构,由于任务依赖关系结构中抽象描述了任务之间的依赖关系,相对比于描述任务执行数据之间依赖关系的任务执行数据结构而言,占用内存资源较少,提高了内存资源的利用率;并且每次需要执行任务时,按照基于任务依赖关系结构抽象得到的任务执行数据结构,执行相应的任务执行数据,使得任务依赖关系结构可以重复利用,数据利用率高。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种任务处理方法的应用环境图。
图2是根据一示例性实施例示出的一种任务处理方法的流程图。
图3是根据一示例性实施例示出的一种任务依赖关系结构的示意图。
图4是根据一示例性实施例示出的一种任务执行数据结构的示意图。
图5是根据一示例性实施例示出的一种构建任务依赖关系结构的流程图。
图6是根据一示例性实施例示出的一种task元数据的示意图。
图7是根据一示例性实施例示出的一种依赖关系式的示意图。
图8是根据一示例性实施例示出的一种实现实时构建任务执行数据结构的整体框图。
图9是根据一示例性实施例示出的一种任务依赖关系结构的增量示意图。
图10是根据一示例性实施例示出的一种任务执行数据结构的生成流程图。
图11是根据一示例性实施例示出的一种任务处理装置的框图。
图12是根据一示例性实施例示出的一种服务器的内部结构图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开所提供的任务处理方法,可以应用于如图1所示的应用环境中。其中,终端110通过网络与服务器120进行交互,服务器120获取终端110上传的初始任务标识和目标时间区间;从任务依赖关系结构中,获取与初始任务标识相同的任务标识所对应的任务,作为当前任务;任务依赖关系结构中包括多个任务对应的任务标识、调度周期和任务依赖关系;从任务依赖关系结构中获取当前任务对应的下游任务,将当前任务和当前任务对应的下游任务作为目标任务;根据目标任务的调度周期和目标时间区间,确定目标任务的任务执行数据;根据目标任务的任务依赖关系,确定任务执行数据之间的数据依赖关系;根据数据依赖关系,生成包括任务执行数据的任务执行数据结构,并按照任务执行数据结构执行任务执行数据。其中,终端110可以是但不限于各种智能手机、平板电脑或笔记本电脑等,服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
图2是根据一示例性实施例示出的一种任务处理方法的流程图,如图2所示,任务处理方法用于服务器中,包括以下步骤。
在步骤S210中,获取输入的初始任务标识和目标时间区间。
其中,初始任务标识是指所需要执行的最开始任务的标识信息,比如起始任务名称、起始任务序号等,在实际场景中,初始任务标识可以是指根节点任务名称。
其中,目标时间区间是指任务所需要执行的时间区间;具体地,目标时间区间包括开始时间(startDate)和结束时间(endDate)。需要说明的是,初始任务标识和目标时间区间均可以由用户通过终端上传到服务器中。
具体地,服务器获取终端上传的初始任务标识和目标时间区间,或者从本地数据库中获取初始任务标识和目标时间区间;这样,通过获取初始任务标识和目标时间区间,有利于后续从任务依赖关系结构中,获取与初始任务标识相同的任务标识所对应的任务,作为当前任务。
举例说明,终端响应用户在任务处理界面上的输入操作,获取用户输入的初始任务标识和目标时间区间;根据用户输入的初始任务标识和目标时间区间,生成任务处理请求,并将任务处理请求发送至对应的服务器;服务器对接收到的任务处理请求进行解析,得到初始任务标识和目标时间区间。
示例性地,用户可以指定从任务依赖关系结构中第三个节点对应的任务开始执行,执行任务的时间区间为前三天内。在本实施例中,用户可以根据实际需求通过终端输入参数,即输入根节点任务名称和目标时间区间,服务器将根据根节点任务名称和目标时间区间以及任务依赖关系结构,得到相应的任务执行数据结构。
在步骤S212中,从任务依赖关系结构中,获取与初始任务标识相同的任务标识所对应的任务,作为当前任务;任务依赖关系结构中包括多个任务对应的任务标识、调度周期和任务依赖关系。
其中,任务依赖关系结构包括任务以及任务之间的任务依赖关系,任务依赖关系用于表征任务之间是上游任务和下游任务之间的关系。任务标识是指任务的标识信息,比如任务名称、任务序号等;调度周期是指任务的执行周期,比如每周的周几执行等。
在实际场景中,任务依赖关系结构是指任务实例血缘模型,任务实例血缘模型是对任务实例血缘图进行上层抽象,提炼出任务实例依赖关系的模型,这一模型称为“任务实例血缘模型”;任务实例血缘模型可以根据任意指定的例行时间(ExecutionDate)或时间段,生成任务实例血缘图;任务实例血缘图是指由多个任务实例血缘(有依赖关系)组成的图;任务实例血缘是指在任务血缘的基础上,增加任务实例之间的依赖,使得依赖关系更加详细、具体的图;任务血缘是指任务和任务之间的依赖关系,这个依赖关系比较简单,能体现一对一的关系,但是不能很好的表达的一对多或者多对一的关系;例如下游是天任务实例,依赖上游是24个小时级别的任务实例,任务血缘就不能很好的表达,因此需要使用任务实例血缘来表达这种关系。其中,任务(Task)是在工作流的任务调度系统中调度执行的最小单位实体,任务支持Hive、MapReduce、Spark等类型的作业。
在实际场景中,任务实例血缘模型描述了任务之间的任务依赖关系,任务依赖关系反映了任务与任务之间的依赖关系。在任务实例血缘模型中包括了多个任务分别对应的任务名称、调度周期和依赖关系式。其中,任务名称(taskid)是用于识别出该任务的唯一标识,调度周期是指该任务按照一定规则进行例行调度,例如每天的几点几分执行、每周的周几执行等。依赖关系式是用于描述任务与任务之间的任务依赖关系,任务依赖关系能体现出任务之间一对一的关系。比如任务A依赖任务B,那么任务B是任务A的上游任务,任务A需要依赖于任务B的执行结果。
示例性地,参照图3所示的任务实例血缘模型,其中,节点node1,node2,node3,node4,node5表示对应任务task1,task2,task3,task4,task5的任务实体,节点与节点之间任务依赖关系通过depExp(依赖表达式)来体现,也即是图3中depExp1,depExp2,depExp3,depExp4,depExp5,例如,depExp1可以体现task1和task2之间的任务依赖关系,depExp2可以体现task1和task4之间的任务依赖关系,depExp3可以体现task1和task3之间的任务依赖关系,depExp4可以体现task2和task5之间的任务依赖关系,depExp5可以体现task3和task5之间的任务依赖关系。
具体地,服务器根据初始任务标识遍历任务依赖关系结构,从任务依赖关系结构中筛选出初始任务标识对应的任务,作为当前任务。这样,先从任务依赖关系结构中获取初始任务标识对应的当前任务,便于后续从任务依赖关系结构中获取当前任务对应的下游任务,将当前任务和当前任务对应的下游任务作为目标任务。
举例说明,初始任务标识是所需要执行的最开始任务对应的任务标识,可以由用户通过终端上传到服务器中,服务器获取后可以根据初始任务标识从任务依赖关系结构中获取对应的任务,作为当前任务。
在步骤S214中,从任务依赖关系结构中获取当前任务对应的下游任务,将当前任务和当前任务对应的下游任务作为目标任务。
具体地,服务器获取预设的下游任务查询指令,根据预设的下游任务查询指令,从任务依赖关系结构中,查询出当前任务对应的所有下游任务;将当前任务以及当前任务对应的所有下游任务作为目标任务。这样,通过确定目标任务,有利于后续根据目标任务的调度周期和目标时间区间,确定目标任务的任务执行数据。
举例说明,首先从任务实例血缘模型中查找到与输入的根节点任务名称一致的任务名称,然后将该任务名称对应的任务作为当前任务,根据前述可知,任务与任务之间存在任务依赖关系,当确定最开始的任务即当前任务后,将获取当前任务对应的下游任务,一起作为本实施例的目标任务。
在步骤S216中,根据目标任务的调度周期和目标时间区间,确定目标任务的任务执行数据。
其中,任务执行数据是指任务实例,任务实例是指任务在指定例行时间执行的调度实体,例行时间(ExecutionDate)是指对应调度周期中的一个具体时刻。在实际场景中,根据调度周期和目标时间区间,可以得到目标任务对应的一个或多个任务实例。
在步骤S218中,根据目标任务的任务依赖关系,确定任务执行数据之间的数据依赖关系。
其中,任务依赖关系用于表征任务之间是上游任务和下游任务之间的关系,可以通过依赖关系式来表示;数据依赖关系用于表征任务执行数据之间是上游任务执行数据和下游任务执行数据之间的关系,在实际场景中,数据依赖关系是指实例依赖关系,实例依赖关系用于表征任务实例之间是上游任务实例和下游任务实例的关系,在得到目标任务对应的任务实例后,可以根据依赖表达式推导出任务实例之间的实例依赖关系。
具体地,服务器获取预设的数据依赖关系构建指令,根据预设的数据依赖关系构建指令,基于各个目标任务之间的任务依赖关系、各个目标任务对应的任务执行数据,生成任务执行数据之间的数据依赖关系;这样,通过确定任务执行数据之间的数据依赖关系,有利于后续根据数据依赖关系,生成包括任务执行数据的任务执行数据结构,并按照任务执行数据结构执行任务执行数据。
举例说明,假设根据目标任务1得到任务实例1,根据目标任务2得到任务实例2和任务实例3,其中,存在目标任务1依赖于目标任务2的任务依赖关系,那么可以得到任务实例1依赖于任务实例2和任务实例3的实例依赖关系。可见,任务实例之间的实例依赖关系是在任务之间的任务依赖关系的基础上生成的,实例依赖关系更加详细、具体,可以体现出现一对多或者多对一的任务实例之间的依赖关系。
在步骤S220中,根据数据依赖关系,生成包括任务执行数据的任务执行数据结构,并按照任务执行数据结构执行任务执行数据。
其中,任务执行数据结构是指任务执行数据以及任务执行数据的数据依赖关系的数据结构,具体可以是指任务实例血缘图,任务实例血缘图为DAG(Directed acyclicgraph,有向无环图),是一个无环路的有向图。由于数据依赖关系表征了任务执行数据之间的依赖关系,因此可以根据数据依赖关系对于任务执行数据进行组合,即可得到描述了全部的任务执行数据之间的数据依赖关系的任务执行数据结构,在执行任务时,将根据任务执行数据结构执行任务执行数据,以完成相应任务的执行。
具体地,服务器获取预设的任务执行数据结构构建指令,根据预设的任务执行数据结构构建指令,基于任务执行数据以及任务执行数据之间的数据依赖关系,构建对应的任务执行数据结构。在执行任务时,将调用生成的任务执行数据结构,执行对应的任务执行数据,以完成任务。这样,每次需要执行任务时,按照基于任务依赖关系结构抽象得到的任务执行数据结构,执行相应的任务执行数据,使得任务依赖关系结构可以重复利用,数据利用率高。
举例说明,参照图4,任务实例血缘图中每个节点表示task(任务)的任务实例和executionDate(例行时间)组合。例如图中node1_1、node1_2和node1_3是task1对应不同例行时间的任务实例,node2是task1对应一个例行时间的任务实例,node2依赖node1,因此在真正执行调度过程中,需要等待node1_1、node1_2和node1_3对应的任务实例调度成功后才会调度node2。
上述任务处理方法中,获取输入的初始任务标识和目标时间区间,并从任务依赖关系结构中,获取与初始任务标识相同的任务标识所对应的任务,作为当前任务;任务依赖关系结构中包括多个任务对应的任务标识、调度周期和任务依赖关系;然后从任务依赖关系结构中获取当前任务对应的下游任务,将当前任务和当前任务对应的下游任务作为目标任务;根据目标任务的调度周期和目标时间区间,确定目标任务的任务执行数据;接着根据目标任务的任务依赖关系,确定任务执行数据之间的数据依赖关系;最后根据数据依赖关系,生成包括任务执行数据的任务执行数据结构,并按照任务执行数据结构执行任务执行数据。本实施例中维护有全量的任务依赖关系结构,通过任务依赖关系结构可以得到任意的目标时间区间的任务执行数据结构,由于任务依赖关系结构中抽象描述了任务之间的依赖关系,相对比于描述任务执行数据之间依赖关系的任务执行数据结构而言,占用内存资源较少,从而节省了服务器资源,进一步提高了服务器的资源利用率;并且每次需要执行任务时,按照基于任务依赖关系结构抽象得到的任务执行数据结构,执行相应的任务执行数据,使得任务依赖关系结构可以重复利用,数据利用率高。
作为本公开一个可选实施方式,在步骤S216中,根据目标任务的调度周期和目标时间区间,确定目标任务的任务执行数据,具体包括如下内容:根据目标任务的调度周期和目标时间区间,确定至少一个任务执行时间;将任务执行时间作为目标任务的执行时间,得到目标任务的至少一个任务执行数据。
其中,任务执行时间是指任务执行的具体时间,具体是指例行时间。
具体地,服务器根据目标任务的调度周期,以及输入的目标时间区间,可以确定出一个或多个任务执行时间,在得到任务执行时间之后,可以将任务执行时间作为目标任务的执行时间,从而得到目标任务的至少一个任务执行数据。
示例性地,假设输入的目标时间区间为前三天,如果目标任务的调度周期为每天4点,则可以得到三个例行时间,将三个例行时间与目标任务进行组合,可以得到三个任务实例。
本公开实施例提供的技术方案,根据目标任务的调度周期和目标时间区间,生成目标时间区间内目标任务的任务执行数据,有利于提高确定出的目标任务的任务执行数据的准确率,从而保证了后续的任务执行成功率,同时避免了遗漏目标任务的任务执行数据,导致任务执行失败而需要重新执行任务,导致任务处理时间延长的缺陷。
作为本公开一个可选实施方式,参照图5,上述步骤S212,在从任务依赖关系结构中,获取与初始任务标识相同的任务标识所对应的任务,作为当前任务之前,还具体包括如下步骤:
在步骤S510中,获取任务元数据;任务元数据包括任务对应的任务标识、调度周期和上游依赖数据;上游依赖数据包括任务对应的上游任务的上游任务标识和上游依赖描述符。
在步骤S512中,根据上游依赖描述符和上游任务的调度周期生成任务的依赖关系式。
在步骤S514中,根据任务对应的任务标识和依赖关系式,生成任务依赖关系结构。
其中,任务元数据是任务的基础内容,是本实施例整个任务依赖关系结构(比如任务实例血缘模型)的数据来源。参照图6,任务元数据可以包括任务的任务名称(taskId),任务的类型(taskType,例如hive任务或者spark任务等)、任务的调度周期(cronExp,是一个cron规则表达式,例如规定每天/每周什么时间运行),任务的创建时间(createTime)以及任务的上游依赖数据(upstreams),上游依赖数据包括上游任务的上任务名称以及依赖描述符,依赖描述符可以为空,为空则表示上下游的任务在同一周期内。
其中,任务的依赖描述符格式为:
{“op”:“[or|空|and|max|min]”,“value”:“[p_date-m|p_date|p_date-m,p_date-n]”}。
具体地,依赖描述符分成两部分:
(1)op(操作符):默认值为“空”和“and”一样,必须全部满足,“or”至少一个满足,“max”获取区间内最大值,“min”获取区间内最小值。
(2)value(依赖时间):对应时间或者时间区间。
假设上下游都是天级别的任务,下游任务依赖上游任务的依赖描述符可以为:
{“op”:“and”,“value”:“p_date-n”}和{“op”:“”,“value”:“p_date-n”}等同:依赖指定的依赖时间。
{“op”:“and”,“value”:“p_date-m,p_date-n”}(m>n):依赖指定区间内的所有依赖时间。
{“op”:“or”,“value”:“p_date-m,p_date-n”}(m>n):依赖指定区间内任意的依赖时间;
{“op”:“max”,“value”:“p_date-m,p_date-n”}(m>n):依赖指定区间的符合条件的(就绪)最大的依赖时间。
{“op”:“max”,“value”:“p_date-n”}(<=p_date-n):依赖符合条件的最大的依赖时间。
具体地,根据任务对应的依赖描述符和调度周期可以推导出任务之间的依赖关系式,并且在得到任务的依赖关系式之后,可以将任务的依赖关系式和任务标识,按照任务依赖关系一起保存到任务依赖关系结构模板中,从而得到任务依赖关系结构。
本公开实施例提供的技术方案,通过获取任务依赖关系结构,有利于后续通过任务依赖关系结构,得到与初始任务标识相同的任务标识所对应的任务(即当前任务)以及该任务对应的下游任务;只获取关心的任务以及下游任务,有利于提高任务处理的灵活性,同时使得服务器资源得到有效利用。
作为本公开一个可选实施方式,上游依赖描述符包括操作符和依赖时间,在步骤S512中,根据上游依赖描述符和上游任务的调度周期,生成任务的依赖关系式,具体可以包括如下内容:获取位图;位图中包括调度周期、操作符和依赖时间的赋值位置;按照针对调度周期的转换关系,将上游任务的调度周期转换为第一结果数值;按照针对操作符的转换关系将操作符转换为第二结果数值;按照针对依赖时间的转换关系将依赖时间转换为第三结果数值;按照调度周期、操作符和依赖时间的赋值位置,分别将第一结果数值、第二结果数值和第三结果数值,导入位图中的对应位置,得到任务的任务依赖关系。
在本实施例中可以将依赖描述符转换为依赖关系式。其中,依赖关系式是依赖描述符的精简表达,可以使用一个bitmap(对应长整数long,占8字节)来表达复杂的任务依赖关系,使用bitmap极大节省了空间存储,减少内存占用,同时bitmap位处理计算高效,处理速度快。
bitmap中分别针对调度周期,操作符和依赖时间设置了对应的赋值位置,将调度周期、操作符和依赖时间按照分别对应的转换关系转换后,可以得到对应的第一结果数值、第二结果数值和第三结果数值;将第一结果数值、第二结果数值和第三结果数值依次导入对应的赋值位置中,可以得到本实施例的依赖关系式。
举例说明,参照图7,8字节(64位)的依赖关系式(即依赖表达式)中每一位对应的赋值意义为:
1.根据上游任务的调度周期,计算出来结果数值赋值给依赖表达式0-1位。
2.根据依赖描述符的第二部分(value,依赖时间),计算出来结果数值赋值给依赖表达式的2-60位以及63位。
3.根据依赖描述符的第一部分(op,操作符),计算出来结果数据赋值给依赖表达式的61-62位。
其中,依赖表达式的63位表示是依赖过去的任务还是依赖未来的任务,0表示依赖过去,1表示依赖未来。
具体来说,依赖描述符转换位依赖表达式可以为如下几个示例:
示例1:依赖描述符“{p_date-0}”,可以推导出来的依赖表达式:000...000(64个0),对应整数值为0,表示这两个任务在同一个周期内执行。
示例2:依赖描述符“{p_date-1}”,可以推导出来的依赖表达式:000...0100,对应整数值为4,表示下游任务依赖上游任务的前一个调度周期。
示例3:依赖描述符“{p_date-4,p_date-1}”,可以推导出来的依赖表达式:00...0111100,对应整数值为60,表示下游任务依赖上游任务的前四个连续调度周期。
本公开实施例提供的技术方案,通过简单的依赖关系式来表达复杂的任务依赖关系,有利于节省空间存储,从而减少了服务器内存占用,进而使得服务器处理计算更加高效,处理速度更快,进一步提高了后续任务的处理效率;同时,通过生成任务的依赖关系式,有利于后续结合任务对应的任务标识,生成任务依赖关系结构。
作为本公开一个可选实施方式,上述步骤S514,在根据任务对应的任务标识和依赖关系式,生成任务依赖关系结构之后,还包括以下内容:获取增量任务元数据和对应的操作行为;根据操作行为和增量任务元数据,对任务依赖关系结构进行更新,得到更新后的任务依赖关系结构。
其中,增量任务元数据是用户通过终端输入的,用于对任务依赖关系结构(比如任务实例血缘模型)进行更新的任务元数据,其对应的操作行为可以包括新增、删除、更新等操作类型,根据增量任务元数据对任务依赖关系结构进行实时更新,可以相应提高得到的任务依赖关系结构的实时性。
其中,增量任务元数据包括增量任务对应的增量任务标识(比如增量任务名称)、增量调度周期和增量上游依赖数据;增量上游依赖数据包括增量任务对应的增量上游任务的增量上游任务名称和增量上游依赖描述符。
具体地,服务器获取终端上传的增量任务元数据和对应的操作行为;根据操作行为,基于增量任务元数据,对历史的任务依赖关系结构进行相应的更新处理,得到更新后的任务依赖关系结构。
举例说明,终端响应用户在任务处理界面上的操作行为,获取用户输入的增量任务元数据;根据用户输入的增量任务元数据以及触发的操作行为,生成任务依赖关系结构更新请求,并将任务依赖关系结构更新请求发送至对应的服务器;服务器对接收到的任务依赖关系结构更新请求进行解析,得到增量任务元数据以及触发的操作行为,根据触发的操作行为,基于增量任务元数据,对历史的任务依赖关系结构进行相应的更新处理,得到更新后的任务依赖关系结构。
本公开实施例提供的技术方案,根据触发的操作行为,基于增量任务元数据,对历史的任务依赖关系结构进行相应的更新处理,保证了任务依赖关系结构的时效性,有利于提高后续基于任务依赖关系结构得到的任务执行数据结构的准确性,避免使用旧的任务依赖关系结构,导致任务处理失败的缺陷,进而提高了任务执行的成功率。
作为本公开一个可选实施方式,根据操作行为和增量任务元数据,对任务依赖关系结构进行更新,得到更新后的任务依赖关系结构,具体包括如下内容:当操作行为为新增操作行为时,根据增量上游依赖描述符和增量上游任务的增量调度周期,确定增量任务的依赖关系式;将增量任务对应的增量任务标识和依赖关系式,添加到任务依赖关系结构中,得到更新后的任务依赖关系结构。
具体地,当操作行为为新增操作行为时,根据增量上游依赖描述符和增量上游任务的增量调度周期,生成增量任务的依赖关系式,在任务依赖关系结构中的相应位置处,新增该增量任务标识和依赖关系式,得到更新后的任务依赖关系结构。
举例说明,终端响应用户在任务处理界面上的新增操作行为,获取用户输入的增量任务元数据;根据用户输入的增量任务元数据以及触发的新增操作行为,生成任务依赖关系结构更新请求,并将任务依赖关系结构更新请求发送至对应的服务器;服务器对接收到的任务依赖关系结构更新请求进行解析,得到增量任务元数据以及触发的新增操作行为,从增量任务元数据中提取出增量上游依赖描述符和增量上游任务的增量调度周期;调用依赖关系式生成指令,基于增量上游依赖描述符和增量上游任务的增量调度周期,生成增量任务的依赖关系式;获取增量任务的增量任务标识和依赖关系式在任务依赖关系结构中的位置标签,按照位置标签,将增量任务的增量任务标识和依赖关系式添加到任务依赖关系结构中的对应位置,得到更新后的任务依赖关系结构。
本公开实施例提供的技术方案,当操作行为为新增操作行为时,基于增量任务元数据,对历史的任务依赖关系结构进行相应的更新处理,保证了任务依赖关系结构的时效性;同时,通过对任务依赖关系结构进行实时更新,有利于提高后续基于任务依赖关系结构得到的任务执行数据结构的准确性。
作为本公开一个可选实施方式,根据操作行为和增量任务元数据,对任务依赖关系结构进行更新,得到更新后的任务依赖关系结构,具体包括如下内容:当操作行为为更新操作行为时,获取增量任务元数据中的增量任务标识;确定任务依赖关系结构中,与增量任务标识相同的任务标识,作为更新任务标识;根据增量上游依赖描述符和增量上游任务的增量调度周期,确定增量任务的增量依赖关系式;采用增量依赖关系式替换更新任务标识对应的任务的依赖关系式,得到更新后的任务依赖关系结构。
具体地,当操作行为为更新操作行为时,首先从增量任务元数据中获取到增量任务标识,然后确定在任务依赖关系结构中,与增量任务标识一致的任务标识作为更新任务标识,并在根据增量上游依赖描述符和增量上游任务的增量调度周期生成增量任务的增量依赖关系式,将任务依赖关系结构中原先更新任务标识对应的依赖关系式删除,并替换为增量依赖关系式,从而得到更新后的任务依赖关系结构。
举例说明,终端响应用户在任务处理界面上的更新操作行为,获取用户输入的增量任务元数据;根据用户输入的增量任务元数据以及触发的更新操作行为,生成任务依赖关系结构更新请求,并将任务依赖关系结构更新请求发送至对应的服务器;服务器对接收到的任务依赖关系结构更新请求进行解析,得到增量任务元数据以及触发的更新操作行为,从增量任务元数据中提取出增量任务标识、增量上游依赖描述符和增量上游任务的增量调度周期;确定任务依赖关系结构中与增量任务标识对应的任务标识,作为更新任务标识;调用依赖关系式生成指令,基于增量上游依赖描述符和增量上游任务的增量调度周期,生成增量任务的增量依赖关系式;构建增量依赖关系式与依赖关系式之间的替换关系,根据替换关系,将任务依赖关系结构中的更新任务标识的依赖关系式替换为增量依赖关系式,得到更新后的任务依赖关系结构。
本公开实施例提供的技术方案,当操作行为为更新操作行为时,基于增量任务元数据,对历史的任务依赖关系结构进行相应的更新处理,保证了任务依赖关系结构的时效性;同时,避免了使用旧的任务依赖关系结构,导致任务处理失败的缺陷,进而提高了任务执行的成功率。
作为本公开一个可选实施方式,根据操作行为和增量任务元数据,对任务依赖关系结构进行更新,得到更新后的任务依赖关系结构,具体包括如下内容:当操作行为为删除操作行为时,获取增量任务元数据中的增量任务标识;确定任务依赖关系结构中,与增量任务标识相同的任务标识,作为删除任务标识;将任务依赖关系结构中与删除任务标识对应的任务的依赖关系式进行删除,得到更新后的任务依赖关系结构。
具体地,当操作行为为删除操作行为时,首先从增量任务元数据中获取到增量任务标识,然后确定在任务依赖关系结构中,与增量任务标识一致的任务标识,作为删除任务标识,最后将任务依赖关系结构中与删除任务标识对应的依赖关系式进行删除,得到更新后的任务依赖关系结构。
举例说明,终端响应用户在任务处理界面上的删除操作行为,获取用户输入的增量任务元数据;根据用户输入的增量任务元数据以及触发的删除操作行为,生成任务依赖关系结构更新请求,并将任务依赖关系结构更新请求发送至对应的服务器;服务器对接收到的任务依赖关系结构更新请求进行解析,得到增量任务元数据以及触发的删除操作行为,根据删除操作行为从增量任务元数据中提取出增量任务标识;确定任务依赖关系结构中与增量任务标识对应的任务标识,作为删除任务标识;将任务依赖关系结构中与删除任务标识对应的任务的依赖关系式进行删除,得到更新后的任务依赖关系结构。
本公开实施例提供的技术方案,通过对任务依赖关系结构进行实时更新,使得后续构建的任务执行数据结构也是最新的,解决目前任务执行数据结构的更新缺乏实时性的问题;同时,通过更新后的任务依赖关系结构,可以抽象出任意时间内的任务执行数据结构来执行相应的任务执行数据,使得任务依赖关系结构可以重复利用,数据利用率高。
为了使本领域技术人员更好地理解本实施例实时构建任务实例血缘模型图的实现过程,下面采用具体实例进行说明,在下述的实例中,任务实例血缘模型图简称为血缘模型图,任务实例血缘图简称为血缘图。参照图8,为本实施例的一个血缘模型图的整体方案框图,其中,Workflow task表是工作流调度系统的基础表,主要包括任务的一些基础信息(task元数据),图8整体包括三个部分:
1.批量离线同步:对获取到Workflow task表进行统一元数据处理,分批次分区间段拉去task元数据,并统一存储到Task元数据表中。具体地,批量离线同步可以通过java代码实现,目的在于实现如下内容1)为了避免对数据库在短时间内进行大量读操作,将批量处理按照时间区间划分成几段,分批次处理;2)根据时间段,按照Workflow task表中的创建时间进行过滤,筛选出Task列表;3)对筛选出的task列表逐步进行task元数据处理(由于目前的workflow task表包括airflow(开源调度系统)和kwafilow(自研调度系统)两个调度系统,需要进行统一task元数据处理,对齐任务类型、对齐调度周期等,以便于后续统一处理。其中,批量离线同步只需要前期处理一次。
2.增量实时同步:对于调度系统中涉及到task的操作行为(操作类型包括新增、更新以及删除),会通过MYSQL binlog实时同步、解析、统一元数据处理,最终将增量结果(增量task元数据)同步到Kafka平台,供任务实例血缘模型系统实时消费。
3.任务实例血缘模型系统:任务实例血缘模型系统一开始从task元数据表中获取到task元数据进行初始化,进行模型生成处理,得到任务实例血缘模型图。随后,任务实例血缘模型系统可以实时消费Kafka平台的增量task元数据,并根据task的操作类型进行分发处理,以根据操作类型和对应的增量task元数据实时更新的任务实例血缘模型图。这样,本实施例的用户可以使用最新的任务实例血缘模型图,得到用户指定的task根结点(用户选择自己关心的任务)和目标时间区间的任务实例血缘图。
其中,参照图9,首先创建对象用于保存血缘模型图,对象类型是图结构graph<Task,Long>,任务实例血缘模型图的更新过程具体为:
1.尝试拉取task(增量任务元数据)和操作行为(默认新增行为);
2.判断是否拉取到task;若否,则返回步骤1,若是,则执行步骤3;
3.获取task和操作行为,并进行加锁处理;
4.根据操作行为进行转发,若为新增行为,则执行步骤5,若为新增行为,则执行步骤7,若为新增行为,则执行步骤5;
5.根据task的依赖描述符生成依赖表达式;
6.向血缘模型图中添加节点和节点之间(边)的依赖表达式,并释放锁执行步骤11;
7.根据task对应的taskId从血缘模型图中获取已有的依赖关系;
8.把已有的依赖关系从血缘模型图中删除,并执行步骤5;
9.根据taskId从血缘模型图中获取已有的依赖关系;
10.把旧的依赖关系从血缘模型图中删除,并释放锁执行步骤11;
11.得到血缘模型图。
其中,参照图10,根据血缘模型图生成血缘图的过程具体为:
1.在获取输入的根节点taskid,startDate(开始时间),endDate(结束时间)后,初始化current集合和next集合;
2.判断根节点taskid在血缘模型图中是否存在;若是,则执行步骤3,若否,则得到血缘图;
3.把根节点taskid存储到current集合中;
4.判断current集合是否为空;若是,则得到血缘图,若否,则执行步骤5;
5.判断i<current.size;其中,i表示current集合中每一个taskid对应的索引,初始赋值为i=0,每次索引递增,current.size表示current集合的最大索引;若i<current.size,表示尚未完成对current集合的遍历,则执行步骤6,若i≥current.size,表示完成对current集合的遍历,则在清空current集合(current.clear()),获取下一个根节点taskid存储到current集合中(current.addAll(next)),清空next集合(next.clear())后,返回步骤4;
6.e=current.get(i),即获取当前节点e直接下游节点downNodes,将downNodes存储到next集合中;
7.j<downNodes.size;其中,j表示next集合中每一个downNodes对应的taskid对应的索引,初始赋值为j=0,每次索引递增,downNodes.size表示next集合的最大索引;若j<downNodes.size,表示尚未完成对next集合的遍历,则执行步骤8;
8.d=downNodes.get(j),即获取next集合中下游节点d;
9.根据用户输入的开始时间和结束时间,结合下游节点d的调度周期生成下游节点d的任务实例列表;
10.根据用户输入的开始时间和结束时间,结合节点e的调度周期生成节点e的任务实例列表;
11.根据d->e的依赖表达式生成节点d和节点e的任务实例之间的实例依赖关系(d_i,e_i);
12.将任务实例之间的任务实例依赖关系保存到血缘图中。
应用本实施例可以具有至少如下的几个优点:实时性:任务实例血缘图更新延迟从原先的15分钟,降低到现在的1分钟;内存占用:通过使用bitmap存储依赖关系,血缘模型图占用的内存很小,整体内存使用从原先的16G降低到现在的4G(可以很好的满足任务实例血缘图的生成,内存太低不利于高并发)。数据库存储:存储规模从原先任务百万级别到现在十万级别,存储延迟从是5分钟到如今1分钟以内,支持任意例行时间任务实例血缘图的获取,因此更好的支持重跑系统对历史例行时间的重跑,支持任务实例级别的重跑,细化了重跑的粒度,提升重跑的效率。
应该理解的是,虽然图2和图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2和图5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
图11是根据一示例性实施例示出的一种任务处理装置的框图。参照图11,该装置包括输入数据获取单元1110,当前任务获取单元1112,目标任务获取单元1114,任务执行数据确定单元1116,数据依赖关系确定单元1118和数据执行单元1120。
输入数据获取单元1110,被配置为执行获取输入的初始任务标识和目标时间区间;
当前任务获取单元1112,被配置为执行从任务依赖关系结构中,获取与初始任务标识相同的任务标识所对应的任务,作为当前任务;任务依赖关系结构中包括多个任务对应的任务标识、调度周期和任务依赖关系;
目标任务获取单元1114,被配置为执行从任务依赖关系结构中获取当前任务对应的下游任务,将当前任务和当前任务对应的下游任务作为目标任务;
任务执行数据确定单元1116,被配置为执行根据目标任务的调度周期和目标时间区间,确定目标任务的任务执行数据;
数据依赖关系确定单元1118,被配置为执行根据目标任务的任务依赖关系,确定任务执行数据之间的数据依赖关系;
数据执行单元1120,被配置为执行根据所述数据依赖关系,生成包括所述任务执行数据的任务执行数据结构,并按照所述任务执行数据结构执行所述任务执行数据。
在其中一个实施例中,任务执行数据确定单元1116,还被配置为执行根据目标任务的调度周期和目标时间区间,确定至少一个任务执行时间;将任务执行时间作为目标任务的执行时间,得到目标任务的至少一个任务执行数据。
在其中一个实施例中,任务处理装置还包括任务依赖关系结构生成单元,被配置为执行获取任务元数据;任务元数据包括任务对应的任务标识、调度周期和上游依赖数据;上游依赖数据包括任务对应的上游任务的上游任务标识和上游依赖描述符;根据上游依赖描述符和上游任务的调度周期,生成任务的依赖关系式;根据任务对应的任务标识和依赖关系式,生成任务依赖关系结构。
在其中一个实施例中,上游依赖描述符包括操作符和依赖时间,任务依赖关系结构生成单元,还被配置为执行获取位图;位图中包括调度周期、操作符和依赖时间的赋值位置;按照针对调度周期的转换关系,将上游任务的调度周期转换为第一结果数值;按照针对操作符的转换关系将操作符转换为第二结果数值;按照针对依赖时间的转换关系将依赖时间转换为第三结果数值;按照调度周期、操作符和依赖时间的赋值位置,分别将第一结果数值、第二结果数值和第三结果数值,导入位图中的对应位置,得到任务的任务依赖关系。
在其中一个实施例中,任务处理装置还包括增量处理单元,被配置为执行获取增量任务元数据和对应的操作行为;根据操作行为和增量任务元数据,对任务依赖关系结构进行更新,得到更新后的任务依赖关系结构。
在其中一个实施例中,增量任务元数据包括增量任务对应的增量任务标识、增量调度周期和增量上游依赖数据;增量上游依赖数据包括增量任务对应的增量上游任务的增量上游任务标识和增量上游依赖描述符。
在其中一个实施例中,增量处理单元,还被配置为执行当操作行为为新增操作行为时,根据增量上游依赖描述符和增量上游任务的增量调度周期,确定增量任务的依赖关系式;将增量任务对应的增量任务标识和依赖关系式,添加到任务依赖关系结构中,得到更新后的任务依赖关系结构。
在其中一个实施例中,增量处理单元,还被配置为执行当操作行为为更新操作行为时,获取增量任务元数据中的增量任务标识;确定任务依赖关系结构中,与增量任务标识相同的任务标识,作为更新任务标识;根据增量上游依赖描述符和增量上游任务的增量调度周期,确定增量任务的增量依赖关系式;采用增量依赖关系式替换更新任务标识对应的任务的依赖关系式,得到更新后的任务依赖关系结构。
在其中一个实施例中,增量处理单元,还被配置为执行当操作行为为删除操作行为时,获取增量任务元数据中的增量任务标识;确定任务依赖关系结构中,与增量任务标识相同的任务标识,作为删除任务标识;将任务依赖关系结构中与删除任务标识对应的任务的依赖关系式进行删除,得到更新后的任务依赖关系结构。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图12是根据一示例性实施例示出的一种用于执行上述任务处理方法的设备1200的框图。例如,设备1200可以为一服务器。参照图12,设备1200包括处理组件1220,其进一步包括一个或多个处理器,以及由存储器1222所代表的存储器资源,用于存储可由处理组件1220的执行的指令,例如应用程序。存储器1222中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1220被配置为执行指令,以执行上述任务处理方法。
设备1200还可以包括一个电源组件1224被配置为执行设备1200的电源管理,一个有线或无线网络接口1226被配置为将设备1200连接到网络,和一个输入输出(I/O)接口1228。设备1200可以操作基于存储在存储器1222的操作系统,例如Windows Server,Mac OSX,Unix,Linux,FreeBSD或类似。
在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器1122,上述指令可由设备1100的处理器执行以完成上述方法。存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供一种计算机程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,设备的至少一个处理器从所述可读存储介质读取并执行所述计算机程序,使得设备执行本公开的任一项实施例中所述的任务处理方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (10)

1.一种任务处理方法,其特征在于,包括:
获取输入的初始任务标识和目标时间区间;
从任务依赖关系结构中,获取与所述初始任务标识相同的任务标识所对应的任务,作为当前任务;所述任务依赖关系结构中包括多个任务对应的任务标识、调度周期和任务依赖关系;
从所述任务依赖关系结构中获取所述当前任务对应的下游任务,将所述当前任务和所述当前任务对应的下游任务作为目标任务;
根据所述目标任务的所述调度周期和所述目标时间区间,确定所述目标任务的任务执行数据;
根据所述目标任务的所述任务依赖关系,确定所述任务执行数据之间的数据依赖关系;
根据所述数据依赖关系,生成包括所述任务执行数据的任务执行数据结构,并按照所述任务执行数据结构执行所述任务执行数据。
2.根据权利要求1所述的任务处理方法,其特征在于,所述根据所述目标任务的所述调度周期和所述目标时间区间,确定所述目标任务的任务执行数据,包括:
根据所述目标任务的调度周期和所述目标时间区间,确定至少一个任务执行时间;
将所述任务执行时间作为所述目标任务的执行时间,得到所述目标任务的至少一个任务执行数据。
3.根据权利要求1所述的任务处理方法,其特征在于,在从任务依赖关系结构中,获取与所述初始任务标识相同的任务标识所对应的任务,作为当前任务之前,所述方法还包括:
获取任务元数据;所述任务元数据包括任务对应的任务标识、调度周期和上游依赖数据;所述上游依赖数据包括所述任务对应的上游任务的上游任务标识和上游依赖描述符;
根据所述上游依赖描述符和所述上游任务的调度周期,生成所述任务的依赖关系式;
根据所述任务对应的任务标识和所述依赖关系式,生成所述任务依赖关系结构。
4.根据权利要求3所述的任务处理方法,其特征在于,所述上游依赖描述符包括操作符和依赖时间,所述根据所述上游依赖描述符和所述上游任务的调度周期,生成所述任务的依赖关系式,包括:
获取位图;所述位图中包括所述调度周期、所述操作符和所述依赖时间的赋值位置;
按照针对所述调度周期的转换关系,将所述上游任务的调度周期转换为第一结果数值;按照针对所述操作符的转换关系将所述操作符转换为第二结果数值;按照针对所述依赖时间的转换关系将所述依赖时间转换为第三结果数值;
按照所述调度周期、所述操作符和所述依赖时间的赋值位置,分别将所述第一结果数值、第二结果数值和第三结果数值,导入所述位图中的对应位置,得到所述任务的任务依赖关系。
5.根据权利要求3所述的任务处理方法,其特征在于,在根据所述任务对应的任务标识和所述依赖关系式,生成所述任务依赖关系结构之后,所述方法还包括:
获取增量任务元数据和对应的操作行为;
根据所述操作行为和所述增量任务元数据,对所述任务依赖关系结构进行更新,得到更新后的任务依赖关系结构。
6.根据权利要求5所述的任务处理方法,其特征在于,所述增量任务元数据包括增量任务对应的增量任务标识、增量调度周期和增量上游依赖数据;所述增量上游依赖数据包括所述增量任务对应的增量上游任务的增量上游任务标识和增量上游依赖描述符。
7.根据权利要求6所述的任务处理方法,其特征在于,所述根据所述操作行为和所述增量任务元数据,对所述任务依赖关系结构进行更新,得到更新后的任务依赖关系结构,包括:
当所述操作行为为新增操作行为时,根据所述增量上游依赖描述符和所述增量上游任务的增量调度周期,确定所述增量任务的依赖关系式;
将所述增量任务对应的增量任务标识和所述依赖关系式,添加到所述任务依赖关系结构中,得到更新后的任务依赖关系结构。
8.一种任务处理装置,其特征在于,包括:
输入数据获取单元,被配置为执行获取输入的初始任务标识和目标时间区间;
当前任务获取单元,被配置为执行从任务依赖关系结构中,获取与所述初始任务标识相同的任务标识所对应的任务,作为当前任务;所述任务依赖关系结构中包括多个任务对应的任务标识、调度周期和任务依赖关系;
目标任务获取单元,被配置为执行从所述任务依赖关系结构中获取所述当前任务对应的下游任务,将所述当前任务和所述当前任务对应的下游任务作为目标任务;
任务执行数据确定单元,被配置为执行根据所述目标任务的所述调度周期和所述目标时间区间,确定所述目标任务的任务执行数据;
数据依赖关系确定单元,被配置为执行根据所述目标任务的所述任务依赖关系,确定所述任务执行数据之间的数据依赖关系;
数据执行单元,被配置为执行根据所述数据依赖关系,生成包括所述任务执行数据的任务执行数据结构,并按照所述任务执行数据结构执行所述任务执行数据。
9.一种服务器,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的任务处理方法。
10.一种存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得所述服务器能够执行如权利要求1至7中任一项所述的任务处理方法。
CN202010644862.3A 2020-07-07 2020-07-07 任务处理方法、装置、服务器及存储介质 Pending CN113918288A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010644862.3A CN113918288A (zh) 2020-07-07 2020-07-07 任务处理方法、装置、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010644862.3A CN113918288A (zh) 2020-07-07 2020-07-07 任务处理方法、装置、服务器及存储介质

Publications (1)

Publication Number Publication Date
CN113918288A true CN113918288A (zh) 2022-01-11

Family

ID=79231494

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010644862.3A Pending CN113918288A (zh) 2020-07-07 2020-07-07 任务处理方法、装置、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN113918288A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023213118A1 (zh) * 2022-05-06 2023-11-09 北京快乐茄信息技术有限公司 任务调度的方法、装置和设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023213118A1 (zh) * 2022-05-06 2023-11-09 北京快乐茄信息技术有限公司 任务调度的方法、装置和设备

Similar Documents

Publication Publication Date Title
WO2021213293A1 (zh) 一种面向群智感知的泛在操作系统
CN112445598B (zh) 一种基于quartz的任务调度方法、装置、电子设备以及介质
CN114416855A (zh) 一种基于电力大数据的可视化平台及方法
CN109586970B (zh) 资源分配方法、装置及系统
CN114997414A (zh) 数据处理方法、装置、电子设备和存储介质
CN115185679A (zh) 人工智能算法的任务处理方法、装置、服务器及存储介质
CN113010296B (zh) 基于形式化模型的任务解析与资源分配方法及系统
US20220413906A1 (en) Method, device, and program product for managing multiple computing tasks based on batch
CN113886111A (zh) 一种基于工作流的数据分析模型计算引擎系统及运行方法
CN113918288A (zh) 任务处理方法、装置、服务器及存储介质
CN116661978B (zh) 一种分布式的流程处理方法、装置及分布式业务流程引擎
CN110515716B (zh) 一种支持优先级和反亲和的云优化调度方法及系统
CN113626163A (zh) 一种轻量级分布式增量自调度方法、系统、设备和介质
WO2020147601A1 (zh) 用于对图进行学习的系统
CN115145736B (zh) 基于Spark分布式计算的云平台配额智能分配系统
CN111435356A (zh) 数据特征提取方法、装置、计算机设备以及存储介质
CN113225269B (zh) 基于容器的工作流调度方法、装置、系统及存储介质
CN111309821B (zh) 基于图数据库的任务调度方法、装置及电子设备
CN114675954A (zh) 任务调度方法及装置
CN114564249A (zh) 推荐调度引擎、推荐调度方法及计算机可读存储介质
CN114090201A (zh) 资源调度方法、装置、设备及存储介质
CN114237858A (zh) 一种基于多集群网络的任务调度方法及系统
CN114595041A (zh) 资源调度系统以及方法
CN113821313A (zh) 一种任务调度方法、装置及电子设备
CN112181517A (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