CN115098232A - 任务调度的方法、装置和设备 - Google Patents
任务调度的方法、装置和设备 Download PDFInfo
- Publication number
- CN115098232A CN115098232A CN202210488671.1A CN202210488671A CN115098232A CN 115098232 A CN115098232 A CN 115098232A CN 202210488671 A CN202210488671 A CN 202210488671A CN 115098232 A CN115098232 A CN 115098232A
- Authority
- CN
- China
- Prior art keywords
- task
- execution
- data table
- tasks
- upstream
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
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
本申请公开了一种任务调度的方法、装置和设备,可以应用于大数据分析技术领域。该任务调度的方法包括:获取第一任务,在第一任务执行完成时,确定N个第二任务。其中,第二任务为第一任务的下游任务。当N个第二任务中的第i个第二任务的上游任务执行完成时,执行第i个第二任务。在本申请中,下游任务在确定上游任务执行完成时就能够触发执行,无须等到固定执行时间,有效降低了上下游任务间的延迟。
Description
技术领域
本申请涉及大数据分析技术领域,尤其涉及一种任务调度的方法、装置和设备。
背景技术
目前,随着互联网的高速发展,需要借助网络运行的任务种类日益繁多。在大数据分析技术领域,多个任务之间存在复杂的依赖关系,就要求必须使用任务调度对任务进行管理。
传统的任务调度主要采用周期定时执行、以任务作为上游依赖的调度方式。由于用户在配置任务时,几乎不能给出一个最合适的定时执行时间。这就导致了传统的任务调度方法存在高延迟的问题。
发明内容
本申请提供了一种任务调度的方法、装置和设备,以实现降低上下游任务之间的延迟。
第一方面,本申请提供一种任务调度的方法,包括:获取第一任务;当第一任务执行完成时,确定N个第二任务,第二任务为第一任务的下游任务,N为正整数;当N个第二任务中的第i个第二任务的上游任务执行完成时,执行第i个第二任务。
在一些可能的实施方式中,在获取第一任务之后,方法还包括:根据第一任务的第一依赖数据表和第一执行参数,执行第一任务;第一依赖数据表指示第一任务在执行时所依赖的上游任务产出的数据表。
在一些可能的实施方式中,当第一任务执行完成时,确定N个第二任务,包括:当第一任务执行完成时,获得第一产出数据表,第一产出数据表为第一任务在执行完成时产出的数据表;将第一任务的下游任务中,依赖于第一产出数据表的N个下游任务确定为N个第二任务。
在一些可能的实施方式中,第一执行参数至少包括以下之一:执行粒度、依赖粒度、依赖时间偏移量和产出时间偏移量;其中,执行粒度用于表示执行第一任务的执行周期;依赖粒度用于表示第一任务在执行时所依赖第一依赖数据表的周期;依赖时间偏移量用于表示执行第一任务的执行时刻与第一依赖数据表的产出时刻之间的偏移值;产出时间偏移量用于表示执行第一任务的执行时刻与第一任务产出数据表的产出时刻之间的偏移值。
在一些可能的实施方式中,
执行周期至少包括以下之一:一个月、一周、一天以及一小时。
在一些可能的实施方式中,在当N个第二任务中的第i个第二任务的上游任务执行完成时,执行第i个第二任务之前,方法还包括:轮询N个第二任务;根据每一个第二任务的第二依赖数据表,确定每一个第二任务的上游任务,其中,第二依赖数据表用于指示每一个第二任务在执行时所依赖的上游任务产出的数据表。
在一些可能的实施方式中,在根据每一个第二任务的第二依赖数据表,确定每一个第二任务的上游任务之后,方法还包括:检测每一个第二任务的上游任务是否产出数据表;当检测到第i个第二任务的上游任务已产出数据表时,确定第i个第二任务的上游任务执行完成。
在一些可能的实施方式中,在当第一任务执行完成时,确定N个第二任务之后,方法还包括:根据N个第二任务中的每一个第二任务的第二执行参数,为每一个第二任务注册执行触发器,执行触发器用于在对应的第二任务的执行时刻到达时触发第二任务执行;当N个第二任务中的第i个第二任务的上游任务执行完成时,执行第i个第二任务,包括:当第i个第二任务的上游任务执行完成时,触发第i个第二任务对应的执行触发器。
第二方面,本申请提供一种任务调度的装置,该装置可以为电子设备中的芯片或者片上系统,还可以为电子设备中用于实现第一方面及其任一种可能的实施方式方法的功能模块。该任务调度的装置可以实现第一方面及其任一种可能的实施方式电子设备所执行的功能,功能可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个上述功能相应的模块。该任务调度的装置包括:获取模块,用于获取第一任务;确定模块,用于当第一任务执行完成时,确定N个第二任务,第二任务为第一任务的下游任务,N为正整数;执行模块,用于当N个第二任务中的第i个第二任务的上游任务执行完成时,执行第i个第二任务。
在一些可能的实施方式中,获取模块,还用于在获取第一任务之后,根据第一任务的第一依赖数据表和第一执行参数,执行第一任务;第一依赖数据表指示第一任务在执行时所依赖的上游任务产出的数据表。
在一些可能的实施方式中,确定模块,还用于当第一任务执行完成时,获得第一产出数据表,第一产出数据表为第一任务在执行完成时产出的数据表;将第一任务的下游任务中,依赖于第一产出数据表的N个下游任务确定为N个第二任务。
在一些可能的实施方式中,第一执行参数至少包括以下之一:执行粒度、依赖粒度、依赖时间偏移量和产出时间偏移量;其中,执行粒度用于表示执行第一任务的执行周期;依赖粒度用于表示第一任务在执行时所依赖第一依赖数据表的周期;依赖时间偏移量用于表示执行第一任务的执行时刻与第一依赖数据表的产出时刻之间的偏移值;产出时间偏移量用于表示执行第一任务的执行时刻与第一任务产出数据表的产出时刻之间的偏移值。
在一些可能的实施方式中,执行周期至少包括以下之一:一个月、一周、一天以及一小时。
在一些可能的实施方式中,执行模块,还用于在当N个第二任务中的第i个第二任务的上游任务执行完成时,执行第i个第二任务之前,轮询N个第二任务;根据每一个第二任务的第二依赖数据表,确定每一个第二任务的上游任务,其中,第二依赖数据表用于指示每一个第二任务在执行时所依赖的上游任务产出的数据表。
在一些可能的实施方式中,执行模块,还用于在根据每一个第二任务的第二依赖数据表,确定每一个第二任务的上游任务之后,检测每一个第二任务的上游任务是否产出数据表;当检测到第i个第二任务的上游任务已产出数据表时,确定第i个第二任务的上游任务执行完成。
在一些可能的实施方式中,执行模块,还用于在当第一任务执行完成时,确定N个第二任务之后,根据N个第二任务中的每一个第二任务的第二执行参数,为每一个第二任务注册执行触发器,执行触发器用于在对应的第二任务的执行时刻到达时触发第二任务执行;当N个第二任务中的第i个第二任务的上游任务执行完成时,执行第i个第二任务,包括:当第i个第二任务的上游任务执行完成时,触发第i个第二任务对应的执行触发器。
第三方面,本申请提供一种电子设备,包括:用于存储处理器可执行指令的存储器;处理器;其中,处理器被配置为:用于执行可执行指令时,以实现如第一方面及其任一可能的实施方式所述的方法。
第四方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,计算机可执行指令被处理器执行后能够实现如第一方面及其任一种可能的实施方式所述的方法。
本申请提供的技术方案与现有技术相比存在的有益效果是:
在本申请中,通过获取第一任务,在第一任务执行完成时,确定N个第二任务,其中,第二任务为第一任务的下游任务。当N个第二任务中的第i个第二任务的上游任务执行完成时,执行第i个第二任务。可见,本申请中的下游任务在确定上游任务执行完成时就能够触发执行,无须等到固定执行时间,有效降低了上下游任务间的延迟。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请的保护范围。
附图说明
图1为本申请实施例中的任务调度的方法的一种实施流程示意图;
图2为本申请实施例中的任务调度的方法的另一种实施流程示意图;
图3为本申请实施例中的任务配置的结构的一种示意图;
图4为本申请实施例中的系统用表的结构的一种示意图;
图5为本申请实施例中的系统用表的结构的另一种示意图;
图6为本申请实施例中的任务调度的方法的又一种实施流程示意图;
图7为本申请实施例中的一种任务调度的装置的结构示意图;
图8为本申请实施例中的一种电子设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
目前,随着互联网的高速发展,需要借助网络运行的任务种类日益繁多。尤其是在大数据领域,越来越多的企业开始将数据作为关注的重点。企业通常会利用服务器集群的强大算力来得到各种各样的数据报表,从而通过这些报表,直观地对相关业务进行认识和理解。
随着网络数据量的增加,数据分析需求也在增加。例如,当某个业务要求每天都要进行各个维度的大数据分析时,就会产生大量的数据分析任务。因为每个数据处理任务执行时间的长短受限于变化的计算集群资源、处理数据量等因素,所以无法预估出一个任务实际需要多少时间。当用户在配置任务时,就不能给出一个最合适的定时执行时间。进而导致存在上游任务执行完毕时,下游任务却因没到达定时执行时间而不得不等待,致使上下游任务之间存在很高的延迟。
示例性的,假设任务A,每天定时执行一次,产出数据a。但是由于任务A实际执行的数据结构化查询语言(structured query language,SQL)产生的是T-2的数据(T-2代表当前周期计算的是前2个周期的数据),即任务A执行1月3号的任务时,其实计算产出的是1月1号的数据。当用户不了解任务A的具体执行内容时,会认为任务A每日执行就应该产出的是当日(T-0)数据。因此,在配置下游任务B时,会配置以任务A执行时间关联的依赖时间范围,导致任务B每天都在空跑数据,因为T-0的数据a总是要晚2天之后才会产出。
所以,现有的任务调动方法存在因用户配置而导致的任务高延迟的问题。
为了解决上述问题,本申请实施例提供一种任务调度的方法,应用于大数据分析技术领域。该方法各步骤的执行主体可以是具备计算和处理能力的电子设备。在一个实施例中,电子设备可以是终端,例如,手机、平板电脑、智能可穿戴设备等;在另一个实施例中,电子设备可以是服务器,服务器可以是一台服务器,也可以是由多台服务器组成的服务器集群,还可以是云服务器,本申请实施例对此不作限定。
图1为本申请实施例中的任务调度的方法的一种实施流程示意图,参见图1所示,该任务调度的方法可以包括S101至S103。
S101,电子设备获取第一任务。
应理解的,第一任务可以为任意一个完成配置的任务;或者,第一任务可以为多个完成配置的任务。其中,配置任务的过程可以由用户在专门信息配置页面输入而完成;或者,配置任务的过程可以由电子设备自行设置而完成。配置任务的过程还可以由其它方式而完成,本申请对此不作具体限定。
需要说明的是,配置任务的过程可以包括:配置任务的依赖关系和配置任务的执行参数。其中,依赖关系用于表示任务之间的执行依赖,例如,若任务A的执行需要使用任务B的执行结果,那么,任务A和任务B的依赖关系为任务A的上游任务为任务B。执行参数用于表示当前任务在执行时所遵循的规则,例如,任务A执行时遵循每周执行一次的规则,使每周执行一次为任务A的执行参数。
应理解的,任务配置完成后,电子设备会将任务与任务的配置信息(依赖关系和执行参数)进行存储,以便后续的调取。
在一些可能的实施方式中,S101之后还可以包括S201,S201可以在S101执行之后,且在S102执行之前执行。图2为本申请实施例中的任务调度的方法的一种实施流程示意图。
S201,电子设备根据第一任务的第一依赖数据表和第一执行参数,执行第一任务。
其中,第一依赖数据表指示第一任务在执行时所依赖的上游任务产出的数据表。
应理解的,大数据场景下,根据任务配置信息,可以获取任务执行时所需的上游数据和执行任务的产出数据。其中,上游数据是指执行当前任务所需查询的数据表,产出数据是指当前任务执行完成后,将数据最终写入的数据表。上游数据允许是多个,产出数据只允许一个。每一个任务都能够产出数据,得到产出的数据表(可以理解为产出数据表)。该产出的数据表可以作为下游任务的上游数据(可以理解为依赖数据表)。
由上述可知,电子设备通过S101获取第一任务,进而获得第一任务的配置信息。执行S201,通过第一任务的配置信息,获得第一任务的第一依赖数据表和第一执行参数。根据第一依赖数据表和第一执行参数,执行第一任务。
在一些可能的实施方式中,第一执行参数可以至少包括以下之一:执行粒度、依赖粒度、依赖时间偏移量和产出时间偏移量。其中,执行粒度用于表示执行第一任务的执行周期;依赖粒度用于表示第一任务在执行时所依赖第一依赖数据表的周期;依赖时间偏移量用于表示执行第一任务的执行时刻与第一依赖数据表的产出时刻之间的偏移值;产出时间偏移量用于表示执行第一任务的执行时刻与第一产出数据表的产出时刻之间的偏移值。
应理解的,在大数据场景下,数据表总是需要以分区去存储数据。例如,分区可以包含月分区、周分区等。在月分区,数据会每月产出一次计算结果存入到属于当月的分区中。因此,在本申请实施例中,可以设置任务的执行周期和任务的依赖周期,并使用执行粒度和依赖粒度对周期进行统一管理。优选的,执行周期可以包括一个月、一周、一天以及一小时。
进一步地,任务的执行时刻表示任务的周期运行时间。例如,任务以小时周期运行,连续两个周期运行的任务的执行时刻可以为:第一次为2022/03/0100:00:00,第二次为2022/03/01 01:00:00。任务的产出时刻表示任务每次执行产出数据的具体时间。例如,任务以天周期运行,连续两个周期运行的任务的产出时刻可以为:第一次为2022/03/01 00:00:00,第二次为2022/03/02 00:00:00。
进一步地,根据执行时刻和产出时刻引入时间偏移量。时间偏移量表示执行时刻和产出时刻之间相差的偏移值。即执行时刻+偏移量=产出时刻。在本申请实施例中,由于任务被设置为不同的粒度,采用单一偏移量不容易表征不同粒度任务的特性。因此,将偏移量分割为粒度和偏移量两个指标表征,以适配不同力度的任务。示例性的,依赖时间偏移量表示任务的执行时刻与上游任务产出时刻的偏移值,表达为上游任务产出时刻-依赖时间偏移量*依赖粒度=下游任务的执行时刻。产出时间偏移量表示任务的执行时刻与任务产出时刻的偏移值,表达为任务执行时刻+产出时间偏移量*执行粒度=数据产出时刻。
在一实施例中,图3为本申请实施例中的任务配置的结构的一种示意图,参见图3所示,展示有六个任务。其中,三个任务(任务A、任务B、任务C)没有配置依赖数据表,所以为上游任务;三个任务(任务D、任务E、任务F)配置有依赖数据表,所以为下游任务。
其中,上游任务A,产出数据表a,表a的粒度为小时级,产出T-1的数据;其中,T-1表示任务A的产出时刻比执行时刻早一小时。上游任务B,产出数据表b,表b的粒度为天级,产出T-1的数据;其中,T-1表示任务B的产出时刻比执行时刻早一天。上游任务C,产出数据表c,表c的粒度为天级,产出T-3的数据;其中,T-3表示任务C的产出时刻比执行时刻早三天。下游任务D,产出数据表d,表d的粒度为天级。依赖数据表a,以天粒度使用表a的T-1的数据;其中,T-1表示上游任务A的产出时刻比下游任务D的执行时刻早一天。下游任务E,产出数据表e,表e的粒度为天级。依赖数据表a、依赖数据表b,以小时粒度使用表a的T-2的数据,以天粒度使用表b的T-1的数据;其中,T-2表示上游任务A产出时刻比下游任务E的执行时刻早两小时;T-1表示上游任务B的产出时刻比下游任务E的执行时刻早一天。下游任务F,产出数据表f,表f的粒度为月级。依赖数据表c,以月粒度使用表c的T-1的数据。其中,T-1表示上游任务C的产出时刻比下游任务F的执行时刻早两个月。
示例性的,以图3的任务配置为例,对S201中的根据第一依赖数据表和第一执行参数执行第一任务进行说明。电子设备判断任务A的产出数据表a(简写为表a)在当前系统时间(2022/03/01 00:05:36)对应的数据产出时刻(2022/02/28 23:00:00)下是否有成功信息,如没有成功,将任务A筛选出来,触发执行当前系统时间对应的时刻(2022/03/01 00:00:00)的任务执行。
具体来说,上述例子中系统时间与数据产出时刻的转换逻辑为:将系统时间中,比当前任务产出数据粒度更低的单位数值抹去,置为0,得到的就是任务执行日期,再通过任务执行日期与产出数据的时间周期偏移量得到数据产出日期。
S102,当第一任务执行完成时,电子设备确定N个第二任务,第二任务为第一任务的下游任务。
应理解的,当第一任务执行完成时,电子设备能够根据任务的配置信息确定出第一任务的下游任务。由于任务之间的依赖关系复杂,所以,第一任务可以有一个下游任务或是多个下游任务。
在一些可能的实施方式中,在需要确定出第一任务的下游任务时,电子设备可以调取数据库存储的配置信息,并基于配置信息中的依赖信息去确定第一任务的下游任务。应理解的,配置信息可以以数据表的形式进行存储。
在一实施例中,图4为本申请实施例中的系统用表的结构的一种示意图,参见图4所示,任务的配置信息被写入如图4所示的关系表(RELATION)进行存储。表RELATION记录的信息包括,任务名、产出数据表、依赖数据表、产出粒度、时间偏移量。电子设备通过查询表RELATION能够获取任务的配置信息。当第一任务执行完成后,电子设备也可以将任务执行成功的信息进行存储。参见图4所示,任务执行成功的信息被写入如图4所示的任务状态表(DATASET_STATUE)进行存储。表DATASET_STATUE记录的信息包括,任务名、数据产出日期、状态(判断是否成功)。电子设备通过查询表DATASET_STATUE能够获取任务是否执行成功的信息。
示例性的,以图3的任务配置为例,任务A的产出数据粒度是小时级别,所以,电子设备会在每小时触发任务A执行一次。假设执行时刻2022/03/01 00:00:00的任务A执行成功后,由于任务A的执行参数配置为产出T-1数据,那么,最终会在表DATASET_STATUE中录入产出数据表a的时刻(2022/02/28 23:00:00)的状态是已成功。
在一些可能的实施方式中,S102还包括当第一任务执行完成时,获得第一产出数据表,第一产出数据表为第一任务在执行完成时产出的数据表。将第一任务的下游任务中,依赖于第一产出数据表的N个下游任务确定为N个第二任务。
应理解的,第一任务执行完成后,电子设备将第一任务的产出数据写入一张表中(可以理解为产出数据表),获得第一任务的第一产出数据表。电子设备通过查询任务配置完成后存储的任务配置信息,可以获得N个依赖于第一产出数据表的任务(即N个任务的依赖数据表为第一产出数据表),并将N个任务确定为第二任务。
以图3所示的任务配置为例,任务A的产出数据表为a,任务D和任务E都配置有依赖数据表a。所以,确定任务D和任务E为任务A的下游数据。
S103,当N个第二任务中的第i个第二任务的上游任务执行完成时,电子设备执行第i个第二任务。
应理解的,任务执行完成后,电子设备会将任务执行完成的信息进行存储。电子设备根据存储信息,查询第i个第二任务的所有上游任务是否都执行完成,当执行完成时,触发执行第i个第二任务。由于任务之间的依赖关系复杂,所以,第i个第二任务可以有多个上游任务。
其中,第i个第二任务的所有上游任务是否都执行完成是根据上游任务是否产出第二任务所需依赖数据表决定的,因此,第二任务与上游任务之间是以数据表生成依赖血缘关系,与任务本身无关。
示例性的,以图3的任务配置为例,任务E依赖任务A,假设任务A产出了日期为2022/02/28 23:00:00的数据,并写入数据产出表a。由于任务E以小时粒度使用表a的T-2的数据。根据上游任务产出时刻-依赖时间偏移量*依赖粒度=下游任务的执行时刻(即2022/02/28 23:00:00-(-2)*天=2022/03/02 00:00:00),可以确定任务E的执行时刻为2022/03/02 00:00:00。
当电子设备获取任务E需要在2022/03/02 00:00:00执行后,会去检查表a是否在2022/02/28 00:00:00-2022/02/28 23:00:00之间每个小时都存在成功状态,检查数据表b是否在日期2022/03/01 00:00:00存在成功状态,如果满足条件,任务E则立即被执行。
在一些可能的实施方式中,如图2所示,S103之前可以包括S202,S202可以在S102执行之后,且在S103执行之前执行。
S202,电子设备轮询N个第二任务;根据每一个第二任务的第二依赖数据表,确定每一个第二任务的上游任务。其中,第二依赖数据表用于指示每一个第二任务在执行时所依赖的上游任务产出的数据表。
应理解的,当第二任务有多个时,需要轮询每一个第二任务。根据任务配置后存储的配置信息,确定当前第二任务的第二依赖数据表,并确定产出第二任务的第二依赖数据表的任务为当前第二任务的上游任务。具体如何根据任务配置信息确定上游任务可参考S102。
在一些可能的实施方式中,电子设备检测每一个第二任务的上游任务是否产出数据表;当检测到第i个第二任务的上游任务已产出数据表时,确定第i个第二任务的上游任务执行完成。
应理解的,任务执行完成后,电子设备会将完成的信息进行存储。当电子设备需要查询第i个第二任务所需上游任务的信息时,可以调取存储的信息,在确定当前系统时刻所述依赖数据表已被上游任务产出时,确定上游任务执行完成。
示例性的,图4中的表DATASET_STATUE用来储存执行成功的信息,电子设备通过查询表DATASET_STATUE,可以查询到任务是否执行成功的信息。
在一些可能的实施方式中,如图2中虚线框以及虚线箭头所示。在S102之后还可以包括S203,S203可以在S102执行之后,且在S103执行之前执行。或者,在S102之后还可以包括S203,S203之后还可以执行S202。
S203,根据N个第二任务中的每一个第二任务的第二执行参数,电子设备为每一个第二任务注册执行触发器,执行触发器用于在对应的第二任务的执行时刻到达时触发第二任务执行。
应理解的,第二执行参数能够用于确定第二任务的执行时间。确定执行时间后,电子设备为每一个第二任务注册具有执行时间的执行触发器。当执行时间达到时,电子触发第二任务执行。
在一些可能的实施方式中,第二任务的执行时间是由上游任务产出第二任务所需依赖数据表的时间决定的。所以,第二执行参数可以包括依赖粒度和依赖时间偏移量。
示例性的,以图3的任务配置为例,参考S103的计算过程。假设任务A执行日期为2022/03/01 00:00:00。当任务A执行成功后,由于下游任务E是以天粒度依赖T-2的数据a,那么会注册一个执行日期为2022/03/02 00:00:00的任务E的触发器。
在一实施例中,图5为本申请实施例中的系统用表的结构的另一种示意图,参见图5所示,每一个第二任务执行触发器的信息被记录在触发器表(TRIGGER)中。表TRIGGER记录的信息包括,任务名、任务执行日期和状态(判断是否成功)。电子设备通过查询表TRIGGER,可以获得当前触发器对应的第二任务的信息。
在一些可能的实施例中,如图2中虚线框以及虚线箭头所示,在S203之后还包括S204,S204可以在S203执行之后,且在S103执行之前执行。或者,在S204之前还可以包括S202,S203之后还可以执行S202,S202之后执行S204。
S204,当第i个第二任务的上游任务执行完成时,电子设备触发第i个第二任务对应的执行触发器。
应理解的,电子设备通过调取存储数据,获得触发器中第二任务的上游任务是否都已经有成功状态。若第二任务的上游任务都已经执行成功,立即触发执行当前任务。
其中,第二任务的上游任务都已经执行成功是指第二任务的依赖数据表在当前时刻都已被产出。
示例性的,电子设备以5s的间隔获取所有待触发状态的触发器,进而检查触发器中所需执行的对应任务。触发器获取对应任务的上游任务,查询对应任务的上游任务的状态,若上游任务都已产出依赖数据表,则立即触发执行触发器中对应任务。
在本实施例中,通过S101至S103,获取第一任务,在第一任务执行完成时,确定N个第二任务,其中,第二任务为第一任务的下游任务。当N个第二任务中的第i个第二任务的上游任务执行完成时,执行第i个第二任务。可见,本申请中的下游任务在确定上游任务执行完成时就能够执行,无须等到固定执行时间,有效降低了上下游任务间的延迟。
在本实施例中,通过S101至S103和S201至204可知,获取第一任务,在第一任务执行完成时,确定N个第二任务(下游任务)。并为N个第二任务注册执行触发器,当检查到第i个第二任务的上游任务执行完成时,触发执行触发器执行第i个第二任务。电子设备以极低时间间隔获取触发器中的任务并执行。整个过程,调度上下游任务的延迟维持在秒级,能够有效降低了上下游任务间的延迟。同时,直接使用产出数据表作为上游,根据当前任务的情况配置以来力度、依赖时间偏移量。避免了以任务作为上游时,执行时刻与产出时刻不一致而导致的配置难、配置错误的问题。
下面以实例对本申请实施例中任务调度的过程进行说明。
图6为本申请实施例中的任务调度的方法的又一种实施流程示意图。如图6所示,包括:
S601,电子设备解析任务,配置任务的依赖信息和执行参数,进入S602;
首先,电子设备通过语法解析工具对用户的SQL任务进行语法解析,从解析结果中获取任务需要依赖数据表和产出数据表并补充至任务的配置信息;其次,电子设备根据用户SQL的使用情况,配置任务的执行参数。
S602,电子设备将任务的依赖信息和执行参数进行存储,进入S603;
其中,电子设备可以将任务的依赖信息和执行参数录入到表RELATION中。
S603,电子设备获取所有上游任务并判断任务执行情况,进入S604;
其中,电子设备可以以5s的间隔,获取所有没有上游数据的任务,并判断任务的产出数据表在当前系统时间对应的数据产出日期下是否有成功信息。
S604,电子设备获取所有未执行的上游任务,并触发该任务执行,进入S605;
其中,电子设备将没有查到成功信息的数据表筛选出来,通过表RELATION,获取到对应任务,触发执行当前系统时间对应的任务执行。
S605,电子设备在上游任务执行完成后,为下游任务注册执行触发器,进入S606;
其中,任务执行完成后,电子设备将对应的产出数据成功的信息录入表DATASET_STATUE中。电子设备会通过表RELATION找到任务的下游任务,为下游任务注册执行触发器,执行触发器的信息存储在表TRIGGER中。
S606,电子设备查询执行触发器,确定对应的上游任务全部成功,进入S607;
其中,电子设备以5s的间隔获取表TRIGGER所有待触发状态的执行触发器,检查执行触发器中对应任务的上游任务在表DATASET_STATUE中都已有成功状态。
S607,执行下游任务。
其中,电子设备查询到表DATASET_STATUE显示上游依赖表已成功,立即执行当前任务,并且将表TRIGGER修改为已成功。电子设备通过重复S604至S607,执行所有任务,实现任务调度。
在本申请实施例中,由S601至S607可知,电子设备通过上游任务获得下游任务,为每个下游任务注册执行触发器。不断轮询执行触发器,查询执行触发器对应任务的上游任务是否执行完成。若所有上游任务执行完成,则执行下游任务。可见,本申请中的每个任务在执行完后,能够通过在数据库中维护的数据血缘,快速找到下游任务并为其注册执行触发器。电子设备以极低时间间隔获取执行触发器中的任务并执行。整个过程,调度上下游任务的延迟维持在秒级,实现任务调度的低延迟。进一步地,直接使用产出数据表作为上游,根据当前任务的情况配置以来力度、依赖时间偏移量。避免了以任务作为上游时,执行时刻与产出时刻不一致而导致的配置难、配置错误的问题。
基于相同的发明构思,本申请实施例还提供一种任务调度的装置,该任务调度的装置可以为电子设备中的芯片或者片上系统,还可以为电子设备中用于实现上述各个实施例所述的方法的功能模块。该任务调度的装置可以实现上述各实施例中电子设备所执行的功能,这些功能可以通过硬件执行相应的软件实现。这些硬件或软件包括一个或多个上述功能相应的模块。
图7为本申请实施例中的一种任务调度的装置的结构示意图,参见图7所示,该任务调度的装置700可以包括:获取模块701,用于获取第一任务;确定模块702,用于当第一任务执行完成时,确定N个第二任务,第二任务为所述第一任务的下游任务,N为正整数;执行模块703,用于当N个第二任务中的第i个第二任务的上游任务执行完成时,执行第i个第二任务。
在一些可能的实施方式中,获取模块701,还用于在获取第一任务之后,根据第一任务的第一依赖数据表和第一执行参数,执行第一任务;第一依赖数据表指示第一任务在执行时所依赖的上游任务产出的数据表。
在一些可能的实施方式中,确定模块702,还用于当第一任务执行完成时,获得第一产出数据表,第一产出数据表为第一任务在执行完成时产出的数据表;将第一任务的下游任务中,依赖于第一产出数据表的N个下游任务确定为N个第二任务。
在一些可能的实施方式中,第一执行参数至少包括以下之一:执行粒度、依赖粒度、依赖时间偏移量和产出时间偏移量;其中,执行粒度用于表示执行第一任务的执行周期;依赖粒度用于表示第一任务在执行时所依赖第一依赖数据表的周期;依赖时间偏移量用于表示执行第一任务的执行时刻与第一依赖数据表的产出时刻之间的偏移值;产出时间偏移量用于表示执行第一任务的执行时刻与第一产出数据表的产出时刻之间的偏移值。
在一些可能的实施方式中,执行周期至少包括以下之一:一个月、一周、一天以及一小时。
在一些可能的实施方式中,执行模块703,还用于在当N个第二任务中的第i个第二任务的上游任务执行完成时,执行第i个第二任务之前,轮询N个第二任务;根据每一个第二任务的第二依赖数据表,确定每一个第二任务的上游任务,其中,第二依赖数据表用于指示每一个第二任务在执行时所依赖的上游任务产出的数据表。
在一些可能的实施方式中,执行模块703,还用于在根据每一个第二任务的第二依赖数据表,确定每一个第二任务的上游任务之后,检测每一个第二任务的上游任务是否产出数据表;当检测到第i个第二任务的上游任务已产出数据表时,确定第i个第二任务的上游任务执行完成。
在一些可能的实施方式中,执行模块703,还用于在当第一任务执行完成时,确定N个第二任务之后,根据N个第二任务中的每一个第二任务的第二执行参数,为每一个第二任务注册执行触发器,执行触发器用于在对应的第二任务的执行时刻到达时触发第二任务执行;当N个第二任务中的第i个第二任务的上游任务执行完成时,执行第i个第二任务,包括:当第i个第二任务的上游任务执行完成时,触发第i个第二任务对应的执行触发器。
需要说明的是,获取模块701、确定模块702和执行模块703的具体实现过程可参考图1至图6实施例的详细描述,为了说明书的简洁,这里不再赘述。
基于相同的发明构思,本申请实施例提供一种电子设备,该电子设备可以为上述一个或者多个实施例中所述的电子设备。图8为本申请实施例中的一种电子设备的结构示意图,参见图8所示,电子设备800,可以采用通用的计算机硬件,包括处理器801、存储器802。
在一些可能的实施方式中,至少一个处理器可以构成具有对一个或多个输入执行逻辑运算的电路的任何物理设备。例如,至少一个处理器可以包括一个或多个集成电路(IC),包括专用集成电路(ASIC)、微芯片、微控制器、微处理器、中央处理单元(CPU)的全部或部分、图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)或者适于执行指令或执行逻辑运算的其它电路。由至少一个处理器执行的指令可以例如被预加载到与控制器集成的或嵌入在控制器中的存储器中,或者可以存储在分离的存储器中。存储器可以包括随机存取存储器(RAM)、只读存储器(ROM)、硬盘、光盘、磁介质、闪存,其它永久、固定或易失性存储器,或者能够存储指令的任何其它机制。在一些实施例中,至少一个处理器可以包括多于一个处理器。每个处理器可以具有相似的结构,或者处理器可以具有彼此电连接或断开的不同构造。例如,处理器可以是分离的电路或集成在单个电路中。当使用多于一个处理器时,处理器可以被配置为独立地或协作地操作。处理器可以以电、磁、光学、声学、机械或通过允许它们交互的其它手段来耦合。
根据本发明的一个实施例,本发明还提供了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行上述调度任务的方法的步骤。存储器802可以包括以易失性和/或非易失性存储器形式的计算机存储媒体,如只读存储器和/或随机存取存储器。存储器802可以存储操作系统、应用程序、其他程序模块、可执行代码、程序数据、用户数据等。
此外,上述存储器802中存储有用于实现图7中的获取模块701、确定模块702和执行模块703的功能的计算机执行指令。图7中获取模块701、确定模块702和执行模块703的功能/实现过程均可以通过图8中的处理器801调用存储器802中存储的计算机执行指令来实现,具体实现过程和功能参考上述相关实施例。
本领域技术人员可以理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (18)
1.一种任务调度的方法,其特征在于,所述方法包括:
获取第一任务;
当所述第一任务执行完成时,确定N个第二任务,所述第二任务为所述第一任务的下游任务,N为正整数;
当所述N个第二任务中的第i个第二任务的上游任务执行完成时,执行所述第i个第二任务。
2.根据权利要求1所述的方法,其特征在于,在所述获取第一任务之后,所述方法还包括:
根据所述第一任务的第一依赖数据表和第一执行参数,执行所述第一任务;所述第一依赖数据表指示所述第一任务在执行时所依赖的上游任务产出的数据表。
3.根据权利要求2所述的方法,其特征在于,所述当所述第一任务执行完成时,确定N个第二任务,包括:
当所述第一任务执行完成时,获得第一产出数据表,所述第一产出数据表为所述第一任务在执行完成时产出的数据表;
将所述第一任务的下游任务中,依赖于所述第一产出数据表的N个下游任务确定为所述N个第二任务。
4.根据权利要求2所述的方法,其特征在于,所述第一执行参数至少包括以下之一:执行粒度、依赖粒度、依赖时间偏移量和产出时间偏移量;
其中,所述执行粒度用于表示执行所述第一任务的执行周期;
所述依赖粒度用于表示所述第一任务在执行时所依赖所述第一依赖数据表的周期;
所述依赖时间偏移量用于表示执行所述第一任务的执行时刻与所述第一依赖数据表的产出时刻之间的偏移值;
所述产出时间偏移量用于表示执行所述第一任务的执行时刻与所述第一任务产出数据表的产出时刻之间的偏移值。
5.根据权利要求4所述的方法,其特征在于,所述执行周期至少包括以下之一:一个月、一周、一天以及一小时。
6.根据权利要求2所述的方法,其特征在于,在所述当所述N个第二任务中的第i个第二任务的上游任务执行完成时,执行所述第i个第二任务之前,所述方法还包括:
轮询所述N个第二任务;
根据每一个第二任务的第二依赖数据表,确定每一个第二任务的上游任务,其中,所述第二依赖数据表用于指示所述每一个第二任务在执行时所依赖的上游任务产出的数据表。
7.根据权利要求6所述的方法,其特征在于,在所述根据每一个第二任务的第二依赖数据表,确定每一个第二任务的上游任务之后,所述方法还包括:
检测所述每一个第二任务的上游任务是否产出数据表;
当检测到所述第i个第二任务的上游任务已产出数据表时,确定所述第i个第二任务的上游任务执行完成。
8.根据权利要求1所述的方法,其特征在于,在所述当所述第一任务执行完成时,确定N个第二任务之后,所述方法还包括:
根据所述N个第二任务中的每一个第二任务的第二执行参数,为所述每一个第二任务注册执行触发器,所述执行触发器用于在对应的所述第二任务的执行时刻到达时触发所述第二任务执行;
所述当所述N个第二任务中的第i个第二任务的上游任务执行完成时,执行所述第i个第二任务,包括:
当所述第i个第二任务的上游任务执行完成时,触发所述第i个第二任务对应的执行触发器。
9.一种任务调度的装置,其特征在于,包括:
获取模块,用于获取第一任务;
确定模块,用于当所述第一任务执行完成时,确定N个第二任务,所述第二任务为所述第一任务的下游任务,N为正整数;
执行模块,用于当所述N个第二任务中的第i个第二任务的上游任务执行完成时,执行所述第i个第二任务。
10.根据权利要求9所述的装置,其特征在于,所述获取模块,还用于在所述获取第一任务之后,根据所述第一任务的第一依赖数据表和第一执行参数,执行所述第一任务;所述第一依赖数据表指示所述第一任务在执行时所依赖的上游任务产出的数据表。
11.根据权利要求10所述的装置,其特征在于,所述确定模块,还用于当所述第一任务执行完成时,获得第一产出数据表,所述第一产出数据表为所述第一任务在执行完成时产出的数据表;将所述第一任务的下游任务中,依赖于所述第一产出数据表的N个下游任务确定为所述N个第二任务。
12.根据权利要求10所述的装置,其特征在于,所述第一执行参数至少包括以下之一:执行粒度、依赖粒度、依赖时间偏移量和产出时间偏移量;
其中,所述执行粒度用于表示执行所述第一任务的执行周期;所述依赖粒度用于表示所述第一任务在执行时所依赖所述第一依赖数据表的周期;所述依赖时间偏移量用于表示执行所述第一任务的执行时刻与所述第一依赖数据表的产出时刻之间的偏移值;所述产出时间偏移量用于表示执行所述第一任务的执行时刻与所述第一任务产出数据表的产出时刻之间的偏移值。
13.根据权利要求12所述的装置,其特征在于,所述执行周期至少包括以下之一:一个月、一周、一天以及一小时。
14.根据权利要求10所述的装置,其特征在于,所述执行模块,还用于在所述当所述N个第二任务中的第i个第二任务的上游任务执行完成时,执行所述第i个第二任务之前,轮询所述N个第二任务;根据每一个第二任务的第二依赖数据表,确定每一个第二任务的上游任务,其中,所述第二依赖数据表用于指示所述每一个第二任务在执行时所依赖的上游任务产出的数据表。
15.根据权利要求14所述的装置,其特征在于,所述执行模块,还用于在所述根据每一个第二任务的第二依赖数据表,确定每一个第二任务的上游任务之后,检测所述每一个第二任务的上游任务是否产出数据表;当检测到所述第i个第二任务的上游任务已产出数据表时,确定所述第i个第二任务的上游任务执行完成。
16.根据权利要求9所述的装置,其特征在于,所述执行模块,还用于在所述当所述第一任务执行完成时,确定N个第二任务之后,根据所述N个第二任务中的每一个第二任务的第二执行参数,为所述每一个第二任务注册执行触发器,所述执行触发器用于在对应的所述第二任务的执行时刻到达时触发所述第二任务执行;所述当所述N个第二任务中的第i个第二任务的上游任务执行完成时,执行所述第i个第二任务,包括:当所述第i个第二任务的上游任务执行完成时,触发所述第i个第二任务对应的执行触发器。
17.一种电子设备,其特征在于,包括:
用于存储处理器可执行指令的存储器;
处理器;其中,所述处理器被配置为:用于执行所述可执行指令时,实现如权利要求1至8任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述可读存储介质存储有可执行程序,其中,所述可执行程序被处理器执行时实现如权利要求1至8任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210488671.1A CN115098232A (zh) | 2022-05-06 | 2022-05-06 | 任务调度的方法、装置和设备 |
PCT/CN2023/078004 WO2023213118A1 (zh) | 2022-05-06 | 2023-02-23 | 任务调度的方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210488671.1A CN115098232A (zh) | 2022-05-06 | 2022-05-06 | 任务调度的方法、装置和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115098232A true CN115098232A (zh) | 2022-09-23 |
Family
ID=83287137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210488671.1A Pending CN115098232A (zh) | 2022-05-06 | 2022-05-06 | 任务调度的方法、装置和设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115098232A (zh) |
WO (1) | WO2023213118A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023213118A1 (zh) * | 2022-05-06 | 2023-11-09 | 北京快乐茄信息技术有限公司 | 任务调度的方法、装置和设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10423442B2 (en) * | 2017-05-25 | 2019-09-24 | International Business Machines Corporation | Processing jobs using task dependencies |
CN110489213B (zh) * | 2018-05-15 | 2022-04-05 | 华为技术有限公司 | 一种任务处理方法及处理装置、计算机系统 |
CN113918288A (zh) * | 2020-07-07 | 2022-01-11 | 北京达佳互联信息技术有限公司 | 任务处理方法、装置、服务器及存储介质 |
CN112559143A (zh) * | 2020-12-04 | 2021-03-26 | 海南车智易通信息技术有限公司 | 任务调度方法、系统及计算设备 |
CN112801546A (zh) * | 2021-03-18 | 2021-05-14 | 中国工商银行股份有限公司 | 一种任务调度方法、装置及存储介质 |
CN113535364A (zh) * | 2021-07-29 | 2021-10-22 | 维沃移动通信(杭州)有限公司 | 任务调度方法及装置 |
CN113806038A (zh) * | 2021-08-04 | 2021-12-17 | 北京房江湖科技有限公司 | 任务调度方法、装置、电子设备、存储介质及程序产品 |
CN115098232A (zh) * | 2022-05-06 | 2022-09-23 | 北京快乐茄信息技术有限公司 | 任务调度的方法、装置和设备 |
-
2022
- 2022-05-06 CN CN202210488671.1A patent/CN115098232A/zh active Pending
-
2023
- 2023-02-23 WO PCT/CN2023/078004 patent/WO2023213118A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023213118A1 (zh) * | 2022-05-06 | 2023-11-09 | 北京快乐茄信息技术有限公司 | 任务调度的方法、装置和设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2023213118A1 (zh) | 2023-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200167359A1 (en) | Query task processing based on memory allocation and performance criteria | |
CN108280023B (zh) | 任务执行方法、装置和服务器 | |
CN111324610A (zh) | 一种数据同步的方法及装置 | |
EP3039574A1 (en) | Queries involving multiple databases and execution engines | |
CN110297955B (zh) | 一种信息查询方法、装置、设备及介质 | |
KR20170134723A (ko) | 이벤트 처리 시스템 페이징 | |
US20150205633A1 (en) | Task management in single-threaded environments | |
CN109298924B (zh) | 定时任务的管理方法、计算机可读存储介质和终端设备 | |
CN110569090A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN111061758A (zh) | 数据存储方法、装置及存储介质 | |
CN111784318A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN109614270A (zh) | 基于Hbase的数据读写方法、装置、设备及存储介质 | |
CN115098232A (zh) | 任务调度的方法、装置和设备 | |
CN113360581A (zh) | 数据处理方法、装置及存储介质 | |
CN110727666A (zh) | 面向工业互联网平台的缓存组件、方法、设备及存储介质 | |
CN110109986B (zh) | 任务处理方法、系统、服务器及任务调度系统 | |
CN115687491A (zh) | 一种基于关系型数据库的数据分析任务调度系统 | |
CN102867018B (zh) | 一种数据库系统中线程间的模拟信号通信方法 | |
US9659041B2 (en) | Model for capturing audit trail data with reduced probability of loss of critical data | |
WO2019134084A1 (zh) | 代码执行方法、装置、终端设备及计算机可读存储介质 | |
CN110865877B (zh) | 一种任务请求的响应方法及设备 | |
CN109241027B (zh) | 数据迁移的方法、装置、电子设备及计算机可读存储介质 | |
CN113641472A (zh) | 分布式应用的异转同实现方法及装置 | |
CN116932779B (zh) | 知识图谱的数据处理方法和装置 | |
CN115600567B (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 |