一种分布式任务调度的方法和装置与流程

文档序号:12363220阅读:185来源:国知局
一种分布式任务调度的方法和装置与流程
本发明涉及计算机信息
技术领域
,具体而言,涉及一种分布式任务调度的方法和装置。
背景技术
:目前,在大型的系统群中,包含着各个不同功能的业务系统,且这些业务系统可能都存在需要定时执行的任务,比如一个电商系统,它可能是由多个业务系统构成的,如订单业务系统,账户业务系统,支付业务系统;在物理架构上,整个电商系统就是由这些分散在不同物理部署上业务系统构成的一个系统群。随着任务的多样性增加,系统群所面对的任务处理量和复杂度逐渐增大,因此,如何提高任务处理性能便成为集群技术研究的一个重要目标之一,此时能够实现任务灵活配置的任务调度系统至关重要。当前,相关技术中提供了一种分布式任务调度的方法,该方法主要包括:通过任务设置模块将各任务节点的相关配置信息发送到任务调度系统;该任务调度系统收到配置信息后进行存储;待任务触发条件满足时提取需要执行的任务;任务执行完毕,更新任务信息到存储并等待下一次触发。在该方法中,任务调度系统包括多个任务调度器,针对业务系统中多个不同的任务进行调度。在实现本发明的过程中,发明人发现相关技术中至少存在以下问题:相关技术中的内嵌于各系统中的任务调度方式一般针对于处理自己系统范围内的任务,然而,存在于系统群的各业务系统间的任务在业务层面和系统层面都可能存在依赖性,因此,每个业务系统分别维护自己的任务调度就会增加任务管理维护的复杂度,同时也会使任务流程执行也会变得混乱。技术实现要素:有鉴于此,本发明实施例的目的在于提供一种分布式任务调度的方法和装置,以解决任务管理维护的复杂度增加以及任务流程执行混乱的问题,实现将任务调度,流程控制的管理从各业务系统间剥离出来,形成一种对各业务系统任务统一调度管理的方法,降低任务管理维护的复杂度以及任务流执行过程中出错的风险。第一方面,本发明实施例提供了一种分布式任务调度的方法,该方法包括:对各个任务节点的任务静态定义信息进行持久化存储,其中,所述任务静态定义信息包括:任务基本信息、任务间依赖关系和任务调度信息;通过任务调度器监听任务触发条件,检测到所述任务触发条件则读取相应的任务静态定义信息,并确定所述任务触发条件对应的当前任务节点;根据读取的所述任务静态定义信息生成任务实例,并对所述任务实例进行持久化存储;根据所述任务间依赖关系调取所述当前任务节点的前置任务节点对应的任务实例中的任务执行状态;根据调取的所述第一任务执行状态执行任务远程调度,并接收返回的任务执行结果信息;根据所述任务执行结果信息中的第二任务执行状态和所述任务间依赖关系执行下游节点任务,并根据所述任务执行结果信息更新所述任务实例。结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中所述对各个任务节点的任务静态定义信息进行持久化存储之前,还包括:采用有向无环图结构根据各个任务节点间的依赖性和任务的执行流向确定任务间依赖关系,其中,所述有向无环图结构包括:将在固定周期重复运行的任务流定义并描述为一个在所述固定周期内的有向无环图,所述有向图无环图中的每个任务看作一个任务节点,所述有向图无环图中的每个边看作所述任务间依赖关系;根据各个所述任务节点对应的远程调度时的调用方法和参数信息确定相应的任务调度信息,其中,所述调用方法由任务执行方法的提供方提供,所述参数信息包括任务执行方法的提供方要求的输入参数。结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述根据调取的所述第一任务执行状态执行任务远程调度,并接收返回的任务执行结果信息,包括:判断调取的所述第一任务执行状态是否全部为成功;若否,则将所述任务实例的第一任务执行状态设置为失败,并终止所述任务实例对应的任务周期,直到通过任务调度器检测到下一个任务触发条件;若是,则利用远程标准开放调用接口根据所述任务调用信息中调用方法类型调用相应的远程地址,根据所述远程地址执行任务远程调度,并接收返回的任务执行结果信息,其中,所述远程标准开放调用接口的数据结构包括以下中的一种或者多种:任务号、业务日期、回调方式、或者调用参数,所述任务执行结果信息的数据结构包括以下中的一种或者多种:任务号、业务日期、或者任务执行状态。结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述远程地址执行任务远程调度,并接收返回的任务执行结果信息,包括:当所述任务基本信息中的同步标志为异步调用且任务调用方在任务执行方法提供方执行完成时,接收所述任务执行方法提供方根据所述远程标准开放调用接口携带的回调方法返回的所述任务执行结果信息。结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述根据所述任务执行结果信息中的第二任务执行状态和所述任务间依赖关系执行下游节点任务,并根据所述任务执行结果信息更新所述任务实例,包括:检查返回的所述任务执行结果信息中的第二任务执行状态是否为成功;若否,则控制任务调度器根据任务的重试属性对任务进行重试调度,直到任务成功或重试次数大于预设阈值,并根据所述任务执行结果信息更新所述任务实例;若是,则根据所述任务间依赖关系执行下游节点任务,并根据所述任务执行结果信息更新所述任务实例,其中,所述任务实例的数据结构包括以下中的一种或者多种:任务号、批次序号、第一任务执行状态、任务开始时间、任务结束时间、或者重试次数,所述批次序号表示所述任务实例的周期编号。第二方面,本发明实施例还提供了一种分布式任务调度的装置,包括:信息存储模块,用于对各个任务节点的任务静态定义信息进行持久化存储,其中,所述任务静态定义信息包括:任务基本信息,任务间依赖关系和任务调度信息;信息读取模块,用于通过任务调度器监听任务触发条件,检测到所述任务触发条件则读取相应的任务静态定义信息,并确定所述任务触发条件对应的当前任务节点;任务实例生成模块,用于根据读取的所述任务静态定义信息生成任务实例,并对所述任务实例进行持久化存储;第一任务执行状态调取模块,用于根据所述任务间依赖关系调取所述当前任务节点的前置任务节点所对应的任务实例中的第一任务执行状态;任务调度模块,用于根据调取的所述第一任务执行状态执行任务远程调度,并接收返回的任务执行结果信息;任务实例更新模块,用于根据所述任务执行结果信息中的第二任务执行状态和所述任务间依赖关系执行下游节点任务,并根据所述任务执行结果信息更新所述任务实例。结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述装置,还包括:任务间依赖关系确定模块,用于采用有向无环图结构根据各个任务节点间的依赖性和任务的执行流向确定任务间依赖关系,其中,所述有向无环图结构包括:将在固定周期重复运行的任务流定义并描述为一个在所述固定周期内的有向无环图,所述有向图无环图中的每个任务看作一个任务节点,所述有向图无环图中的每个边看作所述任务间依赖关系;任务调用信息确定模块,用于根据各个所述任务节点对应的远程调度时的调用方法和参数信息确定相应的任务调度信息,其中,所述调用方法由任务执行方法的提供方提供,所述参数信息包括任务执行方法的提供方要求的输入参数。结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述任务调度模块包括:判断单元:用于判断调取的所述第一任务执行状态是否全部为成功;第一执行任务调度单元,用于当所述第一任务执行状态至少一个为失败时,将所述任务实例的第一任务执行状态设置为失败,并终止所述任务实例对应的任务周期,直到通过任务调度器检测到下一个任务触发条件;第二执行任务调度单元,用于当所述第一任务执行状态全部为成功时,利用预设的远程标准开放调用接口根据所述任务调用信息中调用方法类型调用相应的远程地址,根据所述远程地址执行任务远程调度,并接收返回的任务执行结果信息。结合第二方面,本发明实施例提供了第二方面的第三种可能的实施方式,其中,第二执行任务调度单元包括;异步调用接收子单元,用于当所述任务基本信息中的同步标志为异步调用且任务调用方在任务执行方法提供方执行完成时,接收所述任务执行方法提供方根据所述远程标准开放调用接口携带的回调方法返回的所述任务执行结果信息。结合第二方面,本发明实施例提供了第二方面的第四种可能的实施方式,其中,所述任务实例更新模块包括:检查单元,用于检查返回的所述任务执行结果信息中的第二任务执行状态是否为成功;第一执行任务实例更新单元,用于当所述第二任务执行状态为失败时控制任务调度器根据任务的重试属性对任务进行重试调度,直到任务成功或重试次数大于预设阈值,并根据所述任务执行结果信息更新所述任务实例;第二执行任务实例更新单元,用于当所述第二任务执行状态为成功时,根据所述任务间依赖关系执行下游节点任务,并根据所述任务执行结果信息更新所述任务实例。在本发明实施例提供的分布式任务调度的方法和装置中,该方法包括:对各个任务节点的任务静态定义信息进行持久化存储;通过任务调度器侦听所述任务触发条件,读取相应的任务静态定义信息;根据读取的任务静态定义信息生成任务实例;根据当前任务节点的前置任务节点的第一任务执行状态执行任务远程调度,并接收返回的任务执行结果信息;根据所述任务执行结果信息中的第二任务执行状态和任务间依赖关系执行下游节点任务,并根据所述任务执行结果信息更新所述任务实例。本发明实施例通过将任务调度方式从各业务系统中独立出来,各业务系统只需着重于任务本身业务处理的实现,从而能降低任务管理维护的复杂度,同时统一的调度管理也降低任务流执行过程中出错的风险。为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1示出了本发明实施例所提供的分布式任务调度的方法的流程示意图;图2示出了本发明实施例所提供的分布式任务调度的方法中有向无环图的示意图;图3示出了本发明实施例所提供的分布式任务调度的方法中任务调度器进行远程任务调度具体方法的流程图;图4示出了本发明实施例所提供的一种分布式任务调度的装置的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。考虑到现有技术中内嵌在各系统中的任务调度方式只能处理自己系统范围内的任务,每个业务系统维护自己的任务调度会增加任务管理维护的复杂度,对于任务流程执行也会显得混乱。基于此,本发明实施例提供的一种分布式任务调度方法和装置,下面通过实施例进行描述。如图1所示,本发明实施例提供了一种分布式任务调度的方法,该方法可以用于管理分散在系统集群中各业务系统的任务节点,实现对任务进行统一的管理调度,降低任务管理维护的复杂度以及任务流执行过程中出错的风险,其中,该方法包括步骤S101-S106,具体如下:步骤S101:对各个任务节点的任务静态定义信息进行持久化存储,其中,任务静态定义信息包括:任务基本信息、任务间依赖关系和任务调度信息;步骤S102:通过任务调度器监听任务触发条件,检测到任务触发条件则读取相应的任务静态定义信息,并确定该任务触发条件对应的当前任务节点;步骤S103:根据读取的任务静态定义信息生成任务实例,并对该任务实例进行持久化存储;步骤S104:根据任务间依赖关系调取当前任务节点的前置任务节点对应的任务实例中的第一任务执行状态;步骤S105:根据调取的第一任务执行状态执行任务远程调度,并接收返回的任务执行结果信息;步骤S106:根据任务执行结果信息中的第二任务执行状态和任务间依赖关系执行下游节点任务,并根据任务执行结果信息更新任务实例。具体的,任务的信息持久化存储用以保存任务调度中产生的任务相关数据信息,这些信息的持久化是任务调度的数据基础,记录任务的属性、执行的状态和结果信息。在本发明提供的实施例中,将任务抽象为有任务号、任务名、描述、任务触发条件等静态属性的对象,作为任务的一个静态属性持久化到存储中。其中,触发方式可以为定时触发或者是事件触发,具体根据任务具体执行的业务选择,本发明优选采用定时触发。优选的是,任务基本信息的数据结构包括以下中的一种或者多种:任务号、业务名、描述、任务触发条件、是否重试或者同步标志。本发明实施例中,任务基本信息存储采用如下表1但不限于表格1内容所示的数据结构进行持久化存储,其中,任务节点即有向无环图的顶点任务,任务号为任务的唯一标识,同步标志表示同步或者异步调用,重复次数代表如果一个任务执行失败时,会根据任务中的重试次数,在一定延迟后进行再次执行。直至任务成功,或者重试次数用完为止。表1:任务基本信息进一步,针对相关技术中只存在描述单个任务节点的数据结构,本发明提供的实施例为了能够清晰的描述任务间的依赖关系,并为任务流执行时的自动寻径提供依据,基于此,对各个任务节点的任务静态定义信息进行持久化存储之前,还包括:采用有向无环图结构根据各个任务节点间的依赖性和任务的执行流向确定任务间依赖关系,其中,所述有向无环图结构包括:将在固定周期重复运行的任务流定义并描述为一个在所述固定周期内的有向无环图,所述有向图无环图中的每个任务看作一个任务节点,所述有向图无环图中的每个边看作所述任务间依赖关系。以此来完善任务流的有向无环图结构,并将其持久化到存储中。具体的,所述固定周期可以以天但不限于天为单位,所述固定周期内的有向无环图表示的任务流形成一个任务周期。优选的,本发明实施例中,采用的有向无环图如图2所示,其中,有任务job1、job2、job3、job4,任务依赖关系是:job1的后继为job2和job4,job4的后继为job2,job2的后继为job3。具体的,将有向无环图中的每一个任务看作一个节点,所述有向图无环图中的每个边看作所述任务间依赖关系,所述任务间依赖关系的数据结构包括以下中的一种或者多种:源任务号、目标任务号或者描述。本发明实施例中,任务间依赖关系存储采用如下表2但不限于表格2内容所示的数据结构进行持久化存储。表2:任务间依赖关系依赖关系源任务号目标任务号描述进一步的,本发明的实施例中,一个任务的执行需要特定的执行业务逻辑的方法和该方法所需要的参数,因此,本发明为任务的特定执行方法定义了一个任务调用信息的数据结构,具体的,对各个任务节点的任务静态定义信息进行持久化存储之前,还包括:根据各个任务节点对应的远程调度时的调用方法和参数信息确定相应的任务调度信息,其中,所述调用方法由任务方法的执行方提供,所述参数信息包括任务方法的提供方要求的输入参数。更进一步的,为了实现远程调度,执行跨多个物理机器的调度任务,并以此来统一调度分布式系统中的各个任务节点和由分布式系统中各节点组成的任务流,本发明实施例中任务调用信息中存储一个远程调用的方法的URL(UniformResourceLocator,统一资源定位符),该方法由具体的任务执行方法的提供方提供,存储的参数信息是远程调用的任务执行方法的提供方要求的输入参数。在调度执行某个任务时,将会根据该任务的参数通过调用远程调用方法的URL来启动执行远程系统的任务逻辑执行。优选的,所述任务调用信息的数据结构包括以下中的一种或者多种:任务号、目标任务号或者描述。本发明实施例中,任务间依赖关系存储采用如下表3但不限于表格3内容所示的数据结构进行持久化存储,其中以任务号关联任务的静态数据。表3:任务调用信息任务调用信息任务号(以此关联任务的静态数据)调用方法参数进一步,任务静态定义信息持久化存储步骤之后,为实现调度任务的定时触发,本发明实施例提供了一种特定的调度器,由该调度器负责任务的远程调度,来实现分布式的跨多个物理机器的任务调度。任务调度器会一直监听各个任务基本信息所携带的任务触发条件。当满足任务触发条件时会创建一个任务实例到存储,然后,根据任务调用信息中的调用方法属性,调用具体的任务调用方法,当任务执行完成后更新任务实例。具体的,为了实现任务的准确调用,保证任务的顺序执行,当任务调度器监听到触发任务时,读取任务的静态定义信息,并根据这些信息生成一个任务实例,对该任务实例的信息进行持久化存储。优选的,所述任务实例的数据结构包括以下中的一种或者多种:任务号、批次序号、第一任务执行状态、任务开始时间、任务结束时间或者重试次数。本发明实施例采用表4但不限于表格4中内容的数据结构持久化存储任务实例信息,其中,任务号用于关联任务的静态数据,所述批次序号表示所述任务实例的周期编号,由于本发明中的任务都处于一个固定周期內的有向无环图中,可通过任务实例数据结构中的批次号来确定该任务实例属于那个周期,本发明中优选采用一个业务日期作为任务的批次号,具体的,第一任务执行状态包含但不限于成功、失败或者等待中,本实施例中,一个任务节点的任务实例初始化后,初始的第一任务执行状态为等待中,表示在等待被触发执行;当任务节点的第一任务执行状态为成功时表示任务完成。表4:任务实例信息进一步,任务实例生成之后,任务调度器根据任务间依赖关系调取所述当前任务节点的前置任务节点的对应的任务实例中的第一任务执行状态,具体的,根据调取的第一任务执行状态执行任务远程调度,并接收返回的任务执行结果信息,包括:判断调取的第一任务执行状态是否全部为成功;若否,则将任务实例的第一任务执行状态设置为失败,并终止所述任务实例对应的任务周期,直到通过任务调度器检测到下一个任务触发条件;若是,则利用远程标准开放调用接口根据所述任务调用信息中调用方法类型调用相应的远程地址,根据所述远程地址执行任务远程调度,并接收返回的任务执行结果信息。具体的,仍以上述图2所示有向无环图为例:假设,当前任务节点为job2,则任务调度器根据任务间依赖关系调取任务节点job2的前置任务节点job1和job4对应的任务实例中的第一任务执行状态,判断调取的第一任务执行状态是否全部为成功,若否,则将任务实例的第一任务执行状态设置为失败,并终止所述任务实例对应的任务周期,即不再执行job2以及job2的后续节点job3,直到通过任务调度器检测到下一个任务触发条件;若是,则利用远程标准开放调用接口根据所述任务调用信息中调用方法类型调用相应的远程地址,根据所述远程地址执行任务远程调度,并接收返回的任务执行结果信息。其中,为实现对各系统的统一任务调度,该任务调度器采用但不限于http、web-service的方式调用远程的任务执行方法,需要任务执行方法的提供方按照本发明实施例中定义的标准开放调用接口。优选的,所述远程标准开放调用接口的数据结构包括以下中的一种或者多种:任务号、业务日期、回调方式、或者调用参数,所述任务执行结果信息的数据结构包括以下中的一种或者多种:任务号、业务日期、或者任务执行状态。本发明实施例采用表5但不限于表格5中内容定义远程标准开放调用接口的数据结构,其中,任务号为任务的唯一标识,参数为任务执行所需参数,进一步为了实现异步调用,数据结构中定义了回调方法。表5:远程标准开放调用接口数据结构名称说明任务号任务的唯一标识日期回调方法用于异步调用参数任务执行所需参数进一步的,当任务执行方法的提供方执行完后(正常/异常),需要按照本发明定义的标准将任务执行结果信息通知任务的调用方。进一步的,为实现异步调用,根据远程地址执行任务远程调度,并接收返回的任务执行结果信息,包括:当任务基本信息中的同步标志为异步调用且任务调用方在任务执行方法提供方执行完成时,接收所述任务执行方法提供方根据远程标准开放调用接口携带的回调方法返回的所述任务执行结果信息。具体的,所述任务执行结果信息的数据结构包括以下中的一种或者多种:任务号、日期或者第二任务执行状态。优选的是,本发明实施例采用表6但不限于表格6中内容定义任务执行结果信息数据结构,其中,所述任务号为任务的唯一标识,所述第二任务执行状态可表示为成功、失败、运行中、或者等待。表6:任务执行结果信息数据结构名称说明任务号任务的唯一标识日期第二任务执行状态成功/失败/运行中/等待进一步的,根据任务执行结果信息中的第二任务执行状态和任务间依赖关系执行下游节点任务,并根据任务执行结果信息更新任务实例,包括:检查返回的任务执行结果信息中的第二任务执行状态是否为成功;若否,则控制任务调度器根据任务的重试属性对任务进行重试调度,直到任务成功或重试次数大于预设阈值,并根据任务执行结果信息更新所述任务实例;若是,则根据任务间依赖关系执行下游节点任务,并根据所述任务结果信息更新所述任务实例。具体的,当前任务节点的下游节点为多个时,分别检查该多个下游节点的前置任务节点,检测到其中某个下游节点只有当前任务节点为前置任务节点时,执行该下游节点任务,并按照任务间依赖关系执行该下游节点的下游节点任务。仍以上述图2所示有向无环图为例,当前任务节点job1的下游节点为job2和job4,此时检测到下游节点job4只有当前任务节点为前置任务节点,则执行节点job4,然后根据任务间依赖关系执行节点job4的下游节点job2。优选的是,本发明实施例中,任务调度器对任务基本信息中携带的任务触发条件的监听是一个不间断的过程。在监听到触发任务时,调度器进行远程任务调度的执行。参见图3,示出了本发明实施例所提供的分布式任务调度方法中,任务调度器进行远程任务调度具体方法的流程图,该方法以下步骤:步骤S201:读取任务的基本信息、任务调用信息、任务的依赖关系,根据以上静态定义信息创建出一个任务实例;步骤S202:根据任务的依赖关系,检查当前任务节点的前置任务节点是否全部完成。如果未全部完成则将任务实例中的第一任务执行状态置为失败,如果全部完成则继续步骤S203;步骤S203:根据任务调用信息中的调用相应的远程地址;步骤S204:接收任务执行方法提供方返回的任务结果数据;步骤S205:检查返回的第二任务执行状态,如果失败,调度器会根据任务的重试属性对任务进行重试调度,直到任务成功或重试次数用完,执行步骤6,如果成功执行步骤S206;步骤S206:根据结果数据更新任务实例的状态、结束时间、消耗时间等信息。具体的,在以上调度器执行远程任务调度步骤中,任务流中的首个节点由配置的任务触发条件触发,此时,不需要对前置任务节点的第一任务执行状态进行判断而直接执行任务远程调度,当该任务节点执行成功后,会根据任务的有向图寻找下游节点;如果该任务执行失败时,会根据任务中的重试次数,在一定延迟后进行再次执行,直至任务成功,或者重试次数用完为止。如果重试次数用完,仍执行失败,则会将任务状态设置为失败。如果下游节点的所有前置节点任务都已完成,则自动执行下游节点的任务调用。非首个任务节点由上游任务节点完成后,任务流向走到该节点时触发,也可以由配置的任务触发条件触发。如果由任务流向走到该节点触发,则根据任务间依赖关系读取下游节点的任务号,根据该任务号读取相应的任务静态定义信息,生成任务实例并按照前述方法执行任务调度任务;如果由配置的任务触发条件触发时,前置任务未完成时,触发失败,任务状态置为失败,等前置任务完成再次触发该节点时,会重新触发任务执行。基于上述分析可知,与现有技术相比,本发明实施例提供的分布式任务调度的方法中,通过对各个任务节点的任务静态定义信息进行持久化存储;再通过任务调度器侦听所述任务触发条件,读取相应的任务静态定义信息;根据读取的任务静态定义信息生成任务实例;根据当前任务节点的前置任务节点的第一任务执行状态执行任务远程调度,并接收返回的任务执行结果信息;再根据所述任务执行结果信息中的第二任务执行状态和任务间依赖关系执行下游节点任务,并根据所述任务执行结果信息更新所述任务实例,以解决任务管理维护的复杂度增加以及任务流程执行混乱的问题,实现将任务调度,流程控制的管理从各系统间剥离出来,形成一种对各系统任务统一调度管理的方法,降低了任务管理维护的复杂度以及任务流执行过程中出错的风险;进一步的,通过定义任务间依赖关系、任务调度信息、任务实例、远程标准开放调用接口,以及通过任务调度器对任务触发条件的持续侦听,实现了任务的定时触发、顺序执行、校验任务的依赖性、远程调用、同步/异步调用,以及支持任务的重试。本发明实施例还提供一种分布式任务调度的装置,如图4所示,该装置包括:信息存储模块51,用于对各个任务节点的任务静态定义信息进行持久化存储,其中,所述任务静态定义信息包括:任务基本信息,任务间依赖关系和任务调度信息;信息读取模块52,用于通过任务调度器监听任务触发条件,检测到任务触发条件则读取相应的任务静态定义信息,并确定该任务触发条件对应的当前任务节点;任务实例生成模块53,用于根据读取的所述任务静态定义信息生成任务实例,并对该任务实例进行持久化存储;第一任务执行状态调取模块54,用于根据任务间依赖关系调取所述当前任务节点的前置任务节点对应的任务实例中的第一任务执行状态;任务调度模块55,用于根据调取的第一任务执行状态执行任务远程调度,并接收返回的任务执行结果信息;任务实例更新模块56,用于根据任务执行结果信息中的第二任务执行状态和任务间依赖关系执行下游节点任务,并根据任务执行结果信息更新任务实例。在本发明提供的实施例中,通过对各个任务节点的任务静态定义信息进行持久化存储;再通过任务调度器侦听所述任务触发条件,读取相应的任务静态定义信息;根据读取的任务静态定义信息生成任务实例;根据当前任务节点的前置任务节点的第一任务执行状态执行任务远程调度,并接收返回的任务执行结果信息;再根据所述任务执行结果信息中的第二任务执行状态和任务间依赖关系执行下游节点任务,并根据所述任务执行结果信息更新所述任务实例,以解决任务管理维护的复杂度增加以及任务流程执行混乱的问题,实现将任务调度,流程控制的管理从各系统间剥离出来,形成一种对各系统任务统一调度管理的方法,降低了任务管理维护的复杂度以及任务流执行过程中出错的风险。进一步的,上述装置,还包括:任务间依赖关系确定模块,用于采用有向无环图结构根据各个任务节点间的依赖性和任务的执行流向确定任务间依赖关系,其中,所述有向无环图结构包括:将在固定周期重复运行的任务流定义并描述为一个在所述固定周期内的有向无环图,所述有向图无环图中的每个任务看作一个任务节点,所述有向图无环图中的每个边看作所述任务间依赖关系;任务调用信息确定模块,用于根据各个所述任务节点对应的远程调度时的调用方法和参数信息确定相应的任务调度信息,其中,所述调用方法由任务执行方法的提供方提供,所述参数信息包括任务执行方法的提供方要求的输入参数。进一步的,上述任务调度模块包括:判断单元:用于判断调取的第一任务执行状态是否全部为成功;第一执行任务调度单元,用于当第一任务执行状态至少一个为失败时,将任务实例的第一任务执行状态设置为失败,并终止所述任务实例对应的任务周期,直到通过任务调度器检测到下一个任务触发条件;第二执行任务调度单元,用于当第一任务执行状态全部为成功时,利用预设的远程标准开放调用接口根据所述任务调用信息中调用方法类型调用相应的远程地址,根据所述远程地址执行任务远程调度,并接收返回的任务执行结果信息。进一步的,上述第二执行任务调度单元包括;异步调用接收子单元,用于当所述任务基本信息中的同步标志为异步调用且任务调用方在任务执行方法提供方执行完成时,接收所述任务执行方法提供方根据所述远程标准开放调用接口携带的回调方法返回的所述任务执行结果信息。进一步的,上述任务实例更新模块包括:检查单元:用于检查返回的任务执行结果信息中的第二任务执行状态是否为成功;第一执行任务实例更新单元,用于当第二任务执行状态为失败时,控制任务调度器根据任务的重试属性对任务进行重试调度,直到任务成功或重试次数大于预设阈值,并根据任务执行结果信息更新所述任务实例;第一执行任务实例更新单元,用于当第二任务执行状态为成功时,则根据所述任务间依赖关系执行下游节点任务,并根据所述任务结果信息更新所述任务实例根据所述任务间依赖关系执行的任务执行结果信息更新所述任务实例。本发明实施例提供的一种分布式任务调度的装置中,通过对各个任务节点的任务静态定义信息进行持久化存储;再通过任务调度器侦听所述任务触发条件,读取相应的任务静态定义信息;根据读取的任务静态定义信息生成任务实例;根据当前任务节点的前置任务节点的第一任务执行状态执行任务远程调度,并接收返回的任务执行结果信息;再根据所述任务执行结果信息中的第二任务执行状态和任务间依赖关系执行下游节点任务,并根据所述任务执行结果信息更新所述任务实例,以解决任务管理维护的复杂度增加以及任务流程执行混乱的问题,实现将任务调度,流程控制的管理从各系统间剥离出来,形成一种对各系统任务统一调度管理的方法,降低了任务管理维护的复杂度以及任务流执行过程中出错的风险。进一步的,通过定义任务间依赖关系、任务调度信息、任务实例、远程标准开放调用接口,以及通过任务调度器对任务触发条件的持续侦听,实现了任务的定时触发、顺序执行、校验任务的依赖性、远程调用、同步/异步调用,以及支持任务的重试。本发明实施例所提供的一种分布式任务调度的装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1