任务调度管理方法、装置及系统与流程

文档序号:11621059阅读:186来源:国知局
任务调度管理方法、装置及系统与流程
本发明涉及互联网技术,尤其涉及一种跨平台的任务调度管理方法、装置及系统。
背景技术
:当前,随着业务规模的逐渐扩大,企业内部系统或者外部系统中发起的任务数量越来越多,任务种类也越来越繁杂。现有的任务调度系统都是基于复杂的大规模分布式集群来实现的,即一个服务构建于不同的应用集群之上,一个前端请求会调用多个不同的后端业务,调用方式多种多样,如远程过程调用、数据库、分布式缓存、分布式文件系统等。这些后端业务集群可能是由不同的团队来开发的,也可能是使用不同的编程语言来实现的,可能分布在多个服务器之上,也可能横跨多个不同的数据中心。当任务间相互具有依赖关系时,只能通过用户编程的方式实现对单一的任务管理,容易产生大量分散的脚本文件,同时需要管理员或者用户实时地监控各个任务的执行结果,并根据执行结果,通过脚本触发执行后续任务。当任务数量较多时,通常是通过对各个任务按照执行顺序设定不同的执行时间,以达到任务管理效果,但是这样容易导致任务独立执行并导致任务并发执行,容易出现任务结果输出错乱而必须重新执行任务的情况,使得任务无法统一管理,严重影响任务的执行效率。技术实现要素:本发明实施例提供一种任务调度管理方法、装置及系统,可以实现跨平台的统一的任务调度管理。本发明实施例第一方面提供的任务调度管理方法,包括:扫描数据库,加载当前任务,并根据用户配置的任务依赖关系确定当前任务的上级任务和下级任务;根据预设规则获取上级任务的执行结果,若上级任务均执行成功,则将当前任务下发给任务执行节点执行;监测当前任务的执行结果,若当前任务执行成功,触发加载下级任务。本发明实施例第二方面提供的任务调度管理装置,包括:任务加载模块,用于扫描数据库,加载当前任务,并根据用户配置的任务依赖关系确定当前任务的上级任务和下级任务;任务下发模块,用于根据预设规则获取上级任务的执行结果,若上级任务均执行成功,则将当前任务下发给任务执行节点执行;任务触发模块,用于监测当前任务的执行结果,若当前任务执行成功,则触发加载下级任务。本发明实施例第三方面提供的任务调度管理系统,包括:数据库、网页管理界面、任务执行节点和上述第二方面提供的任务调度管理装置,其中,网页管理界面用于配置任务以及任务依赖关系;数据库用于保存通过网页管理界面配置的任务信息以及任务依赖关系信息;任务执行节点用于执行任务调度管理装置下发的任务,并将任务的执行结果返回给任务调度管理装置。基于上述,本发明实施例提供的任务调度管理方法、装置及系统,根据任务依赖关系确定当前任务的上级任务以及下级任务,然后按预设规则获取上级任务的执行结果,如果所有的上级任务执行成功,则触发执行当前任务;在当前任务的执行过程当中,监测当前任务的执行结果,如果当前任务执行成功,则触发加载下级任务。本发明根据任务依赖关系获得当前任务的上级任务和下级任务,在上级任务执行成功的前提下,即可触发执行当前任务,因此避免了任务独立执行并导致任务并发执行的情况,使得任务能够统一管理。在当前任务执行成功时,就加载下级任务,下级任务在其上级任务执行成功的情况下就可以立即触发执行,避免了任务间的空余时间,能够节约全部任务执行完毕所需耗费的运行时间,从而提高任务的执行效率。附图说明为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述 中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种任务调度管理方法的流程图;图2a~2b为基于本发明实施例的任务依赖关系示意图;图3为本发明实施例提供的另一种任务调度管理方法的流程图;图4为本发明实施例提供的一种任务调度管理装置的示意图;图5为本发明实施例提供的另一种任务调度管理装置的示意图;图6为本发明实施例提供的一种任务调度管理系统示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。任务依赖是计算机系统执行任务存在的一种普遍现象。示例一任务1:统计网站的上一个小时的点击访问数量,执行时间是每小时执行一次;任务2:统计网站当天的点击访问数量,执行时间是每天执行一次;任务3:统计网站今天点击访问数量比昨天增长的数量,执行时间是每天执行一次;上面的任务中,任务2依赖任务1;当任务1执行24次之后,再开始执行任务2,将24次的结果求和,就能得到任务2的结果。(据此可以确定任务2的开始时间等。)上面的任务中,任务3又依赖任务2;只有任务2完成后,任务3中用今天的量减去昨天的量得到结果。示例二任务1:将磁盘a中全部图片,压缩为压缩包x;任务2:将压缩包x从磁盘a复制到磁盘b中;任务3:删除磁盘a中的压缩包x;显然,任务2依赖任务1,任务1执行完毕后,才能执行任务2;任务2执行完毕后才能执行任务3。上述任务调度管理,主要用来管理后续任务的执行时间和执行条件是不是满足。如示例一中,如果任务1和任务2执行失败或者由于故障等原因未完成时,任务3就处于等待不执行的状态。示例二中,只有确定任务2成功执行完毕之后,才能执行任务3,否则就可能导致数据丢失。大规模分布式集群在执行任务时,为提高任务执行效率,需要构建一种跨平台的分布式任务调度管理系统,对应的要实现任务调度,必须对任务的依赖关系进行设置和管理。图1为本发明实施例提供的一种任务调度管理方法的流程图,如图1所示,本实施例提供的任务调度管理方法包括如下步骤:s11,扫描数据库,加载当前任务,并根据用户配置的任务依赖关系确定当前任务的上级任务和下级任务;s12,根据预设规则获取上级任务的执行结果,若上级任务均执行成功,则将当前任务下发给任务执行节点执行;s13,监测当前任务的执行结果,若当前任务执行成功,则触发加载下级任务。本实施提供的任务调度管理方法可以应用于跨平台的分布式任务调度管理系统,该系统包括数据库、网页管理界面、调度管理服务器和多个计算服务器。其中,上述步骤的执行主体为调度管理服务器,网页管理界面用于配置任务以及任务依赖关系,数据库用于保存任务配置信息以及任务依赖关系信息,计算服务器用于执行调度管理服务器下发的任务,并将任务的执行结果返回给调度管理服务器。用户通过网页管理界面配置任务(job)时,具体可以配置任务标识信息(id)、任务运行周期、任务类型、运行ip等等。由于具有同一id的任务,会在每间隔一个运行周期后再次执行,进一步的,还可以根据任务的运行周期创建一个运行时间标记作为任务标签(tag),以便根据任务id和任务tag区分记录不同时段的任务执行结果。具体的,在本实施例中,任务标签可以定义为分时日月年的格式。例如 上述的示例一中,任务1的运行周期为每小时运行一次,对任务1的每个运行周期都会生成相应的任务tag:2016012000、2016012001、2016012002、……、2016012023。再例如上述的示例一中,任务2的运行周期为每天运行一次,对任务2的每个运行周期都会生成相应的任务tag:……、20160118、20160119、20160120、……。用户还通过网页管理界面配置任务依赖关系,图2a~2b为基于本发明实施例的任务依赖关系示意图,如图2a所示,任务c依赖于任务a和任务b,也就是说在任务a和任务b执行成功的前提下才能执行任务c,只要任务a和任务b其中有一个执行不成功,则任务c不执行。再如图2b所示,任务j依赖于任务i的多个实例,例如上述的示例一中,统计网站当天的点击访问数量需要依赖24次统计网站的上一个小时的点击访问数量的结果。获取用户配置的任务依赖关系,从所述依赖关系中确定起点任务,以及起点任务的下级任务,启动起点任务执行,如果有多个起点任务,则将起点任务并发执行,起点任务执行后,将起点任务的下级任务定义为当前任务,并加载该当前任务,然后根据任务依赖关系确定当前任务的上级任务和下级任务。图2a所示的示例中,对于任务c,任务a和任务b就是任务c的上级任务,对于任务a或任务b,任务c就是下级任务。图2b所示的示例中,就存在多个起点任务i,多个任务i可以并发执行,其中一个执行成功后,就可以触发加载任务j,直至24个任务i均执行成功后,可以触发执行任务j。进一步的,在本实施例中,根据预设规则获取上级任务的执行结果时,可以根据当前任务与上级任务的运行周期和任务标签确定预设规则。具体的,根据预设规则获取上级任务的执行结果,包括以下两种情况:一、如果依赖和被依赖的两个任务的运行周期是一样的,即当前任务的运行周期与上级任务的运行周期相同,那么就简单的计算两个任务tag的时间间隔,获取该时间间隔前的一个运行周期内的上级任务的执行结果。比如:当前任务上级任务jobj,tag201601010102jobi,tag201601010101以上两个任务的tag对应的时间间隔是1分钟,每次运行jobj时,都会寻找1分钟前的jobi的执行结果。二、如果依赖和被依赖的两个任务的运行周期是不一样的,即当前任务的运行周期与上级任务的运行周期不同,那么就将当前任务的tag通过减少或者增加长度的方式变成和上级任务的tag格式一致,然后通过简单的计算两个tag的时间间隔,获取该时间间隔前的一个当前任务的运行周期内的上级任务的执行结果。比如:当前任务上级任务jobj,tag20160102jobi,tag2016010101首先将当前任务的tag变成2016010201,然后计算两个tag的时间间隔是1天,每次运行jobj时,都会寻找1天前的所有jobi的执行结果。在当前任务的执行过程当中,实时监测当前任务的执行结果,如果当前任务正在执行并未获得结果,则标定该当前任务的状态为“正在执行”。如果当前任务执行成功,则根据该执行结果更新数据库中该当前任务的状态信息为“执行成功”,然后加载当前任务的下级任务,只要下级任务所有的上级任务都执行成功就可触发执行下级任务,依次类推,直到所有任务执行完毕为止,或者任务终止执行为止。本实施例提供的任务调度管理方法,根据任务依赖关系确定当前任务的上级任务以及下级任务,然后按预设规则获取上级任务的执行结果,如果所有的上级任务执行成功,则触发执行当前任务;在当前任务的执行过程当中,监测当前任务的执行结果,如果当前任务执行成功,则触发加载下级任务。本发明根据任务依赖关系获得当前任务的上级任务和下级任务,在上级任务执行成功的前提下,即可触发执行当前任务,因此避免了任务独立执行并导致任务并发执行的情况,使得任务能够统一管理。在当前任务执行成功时,就加载下级任务,下级任务在其上级任务执行成功的情况下就可以立即触发执行,避免了任务间的空余时间,能够节约全部任务执行完毕所需耗费的运行时间,从而提高任务的执行效率。图3为本发明实施例提供的另一种任务调度管理方法的流程图,本实施例在图1所示实施例的基础上,较佳的,用户通过网页管理界面配置任务时,具体还可以配置任务的运行超时时间,如果任务有需要依赖的上级任务时,还可以配置任务的等待超时时间。进一步的,本实施例提供的任务调度管理方法具体可以包括如下步 骤:s31,扫描数据库,加载当前任务,并根据用户配置的任务依赖关系确定当前任务的上级任务和下级任务;s32,根据预设规则获取上级任务的执行结果;s33,若上级任务均执行成功,将当前任务下发给任务执行节点执行;s34,若根据预设规则获取上级任务的执行结果中至少有一个未执行成功时,执行等待过程;s35,在等待时间超过第一预设时间时,判定当前任务等待超时,并发出等待超时告警信息。s36,监测当前任务的执行结果;s37,若当前任务执行成功,则触发加载下级任务。s38,若在第二预设时间内,当前任务没有执行成功,判定当前任务执行失败,并发出失败告警信息。其中,上述的第一预设时间为用户配置的等待超时时间。从触发加载当前任务开始,一直到依赖全部满足,即当前任务的上级任务全部执行成功所用的时间,如果小于或等于第一预设时间,则判定没有等待超时,如果大于第一预设时间,则判定等待超时,并发出等待超时告警信息。上述的第二预设时间为用户配置的运行超时时间,从下发当前任务到任务执行节点开始,一直到当前任务执行成功所用的时间,如果小于或等于第二预设时间,则判定没有运行超时,如果大于第二预设时间,则判定运行超时,并发出运行超时告警信息。需要说明的是,如果调度管理服务器第一次接收到的当前任务的执行结果为失败时,只要没有超过第二预设时间,调度管理服务器可以多次将当前任务下发给任务执行节点执行,直到接收到的当前任务的执行结果为成功。在本实施例中,用户通过网页管理界面配置任务时,具体还可以配置任务的运行超时时间,如果任务有需要依赖的上级任务时,还可以配置任务的等待超时时间,通过时间信息监控任务正常有序的调度运行,一旦有等待超时或运行超时发生时,都会自动发送报警信息,以便用户在接收到告警信息后,检测系统中是否有软硬件故障并及时进行故障恢复。进一步的,作为本实施例一种可选的实施方式,在用户根据告警信息及时进行故障恢复后,还可以向调度管理服务器发送故障恢复信息。较佳的,该故障恢复信息为上述告警信息的响应信息,可以携带与告警信息相对应的标识内容,以便调度管理服务器在接收到该故障恢复信息之后,根据其信息标识,判定本次故障恢复是针对哪一次告警进行的,然后重新执行相应的任务调度管理。举例来说,当前任务为jobj,tag20160102,在等待其依赖满足时超过预设时间,此时发出超时告警信息可以包括任务id(j),任务tag(20160102),告警类型(timeout)等。在用户根据该告警信息及时进行故障恢复后,发送的告警响应信息同样可以包括任务id(j),任务tag(20160102),告警类型(timeout)等,调度管理服务器在接收到该告警响应信息之后,就会重新根据预设规则获取其上级任务的执行结果,进而运行后续的任务调度和依赖管理。再例如,当前任务为jobj,tag20160102,在下发任务执行节点进行执行时超过预设时间,此时发出失败告警信息可以包括任务id(j),任务tag(20160102),告警类型(failed)等。在用户根据该告警信息及时进行故障恢复后,发送的告警响应信息同样可以包括任务id(j),任务tag(20160102),告警类型(failed)等,调度管理服务器在接收到该告警响应信息之后,就会重新将当前任务下发给任务执行节点执行,进而运行后续的任务调度和依赖管理。本实施例提供的任务调度管理方法在图1所示实施例的基础上,进一步还可以实现自动报警,进一步方便了任务调度管理系统的运维工作。图4为本发明实施例提供的一种任务调度管理装置的示意图,可以用来实现本发明图1所示实施例提供的任务调度管理方法,此处不再赘述。如图4所示,该装置包括任务加载模块41,任务下发模块42和任务触发模块43。其中,任务加载模块41用于:扫描数据库,加载当前任务,并根据用户配置的任务依赖关系确定当前任务的上级任务和下级任务;任务下发模块42用于:根据预设规则获取上级任务的执行结果,若上级任务均执行成功,则将当前任务下发给任务执行节点执行;任务触发模块43用于: 监测当前任务的执行结果,若当前任务执行成功,则触发加载下级任务。在具体实施过程中,上述预设规则可以根据当前任务与上级任务的运行周期和任务标签确定。其中,任务标签为根据任务的运行周期创建的运行时间标记。进一步的,作为本实施例一种较佳的实现方式,任务下发模块42具体可以用于:若当前任务的运行周期与上级任务的运行周期相同,计算当前任务与上级任务的任务标签对应的第一时间间隔,获取该第一时间间隔前的一个运行周期内的上级任务的执行结果;若当前任务的运行周期与上级任务的运行周期不同,调整当前任务的任务标签的格式使其与上级任务的任务标签的格式一致,计算调节后的当前任务的任务标签与上级任务的任务标签对应的第二时间间隔,获取该第二时间间隔前的一个当前任务的运行周期内的上级任务的执行结果。本实施例提供的任务调度管理装置,可以用来实现本发明图1所示实施例提供的任务调度管理方法,其实现原理和技术效果类似,此处不再赘述。图5为本发明实施例提供的另一种任务调度管理装置的示意图,可以用来实现本发明图1或图3所示实施例提供的任务调度管理方法,此处不再赘述。如图5所示,本实施例提供的任务调度管理装置在图4所示实施例的基础上,进一步的,还可以包括超时监测模块44和任务监测模块45。其中,超时监测模块44可以用于:若任务下发模块42根据预设规则获取的上级任务的执行结果中至少有一个未执行成功时,执行等待过程;在等待时间超过第一预设时间时,判定当前任务等待超时,并发出等待超时告警信息。任务监测模块45可以用于:若在第二预设时间内,当前任务没有执行成功,判定当前任务执行失败,并发出失败告警信息。进一步的,在本实施例中,任务调度管理装置还可以包括任务重启模块46,用于:在发出失败告警信息之后,接收用户发送的故障恢复信息,并重新将当前任务下发给任务执行节点执行。在实际应用中,作为一种可选的实施方式,任务重启模块46还可以用于:在发出等待超时告警信息之后,接收用户发送的超时故障恢复信息,并重新根据预设规则获取上级任务的执行结果,若上级任务均执行成功, 则将当前任务下发给任务执行节点执行。本实施例提供的任务调度管理装置,可以用来实现本发明图1或图3所示实施例提供的任务调度管理方法,其实现原理和技术效果类似,此处不再赘述。基于与上述图1所述实施例提供的任务调度管理方法相同的思想,本发明实施例还提供一种任务调度管理系统,该系统可以用于实现图1或图3所述实施例提供的任务调度方法。图6为本发明实施例提供的一种任务调度管理系统示意图,如图6所示,该系统包括数据库61、网页管理界面62、调度管理服务器63和多个任务执行节点641、642、……、64n。其中,调度管理服务器63可以是上述图4或图5所示实施例提供的任务调度管理装置。网页管理界面62具体可以是安装于计算机中的应用程序,各个平台的用户均可以通过网页管理界面62进行任务配置以及相应的任务依赖关系配置。数据库61用于保存用户通过网页管理界面62配置的任务信息以及任务依赖关系信息。任务执行节点641、642、……、64n,可以用于执行调度管理服务器63下发的任务,并将任务的执行结果返回给调度管理服务器63。可以理解的是,在实际应用中,任务执行节点641、642、……、64n的类型、数量等可以根据实际需要进行线性扩展。在实际应用中,作为一种优选的实施方式,数据库61还可以用于保存任务的状态信息,当调度管理服务器63在调度管理某些有需要依赖的上级任务的任务时,可以直接从数据库中获取其所需的上级任务的执行结果。另外,作为本实施例一种优选的实施方式,调度管理服务器63具体可以包括主任务调度管理装置和备任务调度管理装置,其中主任务调度管理装置和备任务调度管理装置中的任务调度管理进程的数据信息同步。当主任务调度管理装置发生故障时,可以立即启动备任务调度管理装置的任务调度管理进程,可以保证任务调度管理得以正常进行,而且相关的任务信息不必重新加载,有效避免在主任务调度管理装置故障的情况下,任务调度管理中断时间过长,保证了任务可靠性和关联性,从而有效保证任务执行效率。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1