分布式任务调度方法以及装置、存储介质、电子装置与流程

文档序号:25296178发布日期:2021-06-04 11:25阅读:113来源:国知局
分布式任务调度方法以及装置、存储介质、电子装置与流程

1.本申请涉及分布式处理领域,具体而言,涉及一种分布式任务调度方法以及装置、存储介质、电子装置。


背景技术:

2.在互联网应用中,除了需要实时的业务系统支持业务正常流程运行,还需要大量的离线的定时任务,去处理各种各样的业务任务。
3.对执行上述离线任务和实时业务时,运行资源耦合程度较高、导致业务系统和定时任务极度不稳定,从而影响业务流程正常运行。
4.针对相关技术中对于离线定时任务和实时业务运行资源耦合度较高,容易相互影响且任务部署复杂的问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本申请的主要目的在于提供一种分布式任务调度方法以及装置、存储介质、电子装置,以解决对于离线定时任务和实时业务运行资源耦合度较高,容易相互影响且任务部署复杂的问题。
6.为了实现上述目的,根据本申请的一个方面,提供了一种分布式任务调度方法。
7.根据本申请的分布式任务调度方法包括:接收定时任务,其中,所述定时任务至少包括:用以完成定时任务的逻辑代码;根据所述逻辑代码,确定出符合执行条件的调度服务节点,其中,所述执行条件包括所述调度服务节点上的节点任务数量条件、节点健康状况条件;向至少一个所述调度服务节点分配所述定时任务和分发所述逻辑代码,以使通过所述调度服务节点用于运行相应的所述定时任务中的业务逻辑代码并触发启动单独的业务任务运行进程。
8.进一步地,向至少一个所述调度服务节点进行所述定时任务的调度分配、所述逻辑代码的分发之后,还包括:当所述定时任务的逻辑代码运行完毕之后,所述业务任务的进程退出并等待下一次调度执行;在所述进程退出之前通过分布式作业框架完成所述业务任务的状态记录,同时保存在本地日志。
9.进一步地,所述接收定时任务,其中,所述定时任务至少包括:用以完成定时任务的逻辑代码,包括:所述定时任务通过继承抽象job类生成用以完成定时任务的逻辑代码,其中,所述逻辑代码包括用于新创建或更新的代码;根据所述逻辑代码新创建或更新所述定时任务,并接收上传的所述逻辑代码的任务代码压缩包。
10.进一步地,所述根据所述逻辑代码,确定出符合执行条件的调度服务节点包括:向任务调度服务节点广播所述定时任务分配消息;接收根据所述定时任务分配消息确定的所述任务调度器服务上报的能力评分,其中,所述能力评分包括:每个任务调度服务节点接收到所述定时任务分配消息之后,根据当前和历史资源负载以及历史最大并行运行任务数计算得到的打分值;根据所述能力评分的筛选结果,将所述定时任务分配到符合执行条件的
目标调度服务节点并且指派至少一个用于备份的目标调度服务节点。
11.进一步地,所述根据所述能力评分的筛选结果,将所述定时任务分配到符合执行条件的目标调度服务节点并且指派至少一个用于备份的目标调度服务节点包括:采用选举算法选出符合执行条件的调目标度服务节点以及至少一个用于备份的调目标度服务节点,其中,所述标调度服务节点=节点健康分数

节点上已有的任务数,所述用于备份的目标调度服务节点=节点健康分数

已有备份任务数。
12.进一步地,所述根据所述逻辑代码,确定出符合执行条件的调度服务节点,还包括:由调度器管理协调控中心,监督所有定时任务履约情况及各个无中心调度器服务,彼此监督对方的定时任务履约情况;如果检测到定时任务执行异常,则发生异常的所述调度服务节点发送心跳检测,如果通过心跳检测出所述调度服务节点的服务异常,则接管相关任务调度的用于备份的目标调度服务节点之后对所述定时任务进行调度执行。
13.进一步地,向至少一个所述调度服务节点进行所述定时任务的调度分配、所述逻辑代码的分发之后,还包括:根据所述定时任务的调度分配结果在调度任务服务节点上,按照分配的任务和相应的触发命令,将所述定时任务的逻辑代码同步到本地执行对应的命令创建的任务进程;当所述任务进程结束之后,通过调度服务节点接口反馈并同步任务是否正常执行。
14.为了实现上述目的,根据本申请的另一方面,提供了一种分布式任务调度装置。
15.根据本申请的分布式任务调度装置包括:接收模块,用于接收定时任务,其中,所述定时任务至少包括:用以完成定时任务的逻辑代码;确定模块,用于根据所述逻辑代码,确定出符合执行条件的调度服务节点;调度分配模块,用于向至少一个所述调度服务节点分配所述定时任务和分发所述逻辑代码,以使通过所述调度服务节点用于运行相应的所述定时任务中的业务逻辑代码并触发启动单独的业务任务运行进程。
16.为了实现上述目的,根据本申请的又一方面,提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
17.为了实现上述目的,根据本申请的再一方面,提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
18.在本申请实施例中分布式任务调度方法以及装置、存储介质、电子装置,采用接收定时任务,其中,所述定时任务至少包括:用以完成定时任务的逻辑代码的方式,通过所述逻辑代码,确定出符合执行条件的调度服务节点,所述调度服务节点用于运行相应的所述定时任务中的业务逻辑代码并触发启动单独的业务任务运行进程,达到了向至少一个所述调度服务节点进行所述定时任务的调度分配、所述逻辑代码的分发的目的,从而实现了采用无中心化调度和任务执行,把任务执行从任务执行器服务里面解耦出来,同时无工作线程数限制,每个任务独立进程,相互不影响的技术效果,进而解决了离线定时任务和实时业务运行资源耦合度较高,容易相互影响且任务部署复杂的技术问题。
附图说明
19.构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它
特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
20.图1是根据本申请实施例的分布式任务调度方法实施的硬件结构示意图;
21.图2是根据本申请实施例的分布式任务调度方法流程示意图;
22.图3是根据本申请实施例的分布式任务调度装置结构示意图;
23.图4是根据本申请优选实施例分布式任务调度方法流程示意图;
24.图5是根据本申请一实施例分布式任务调度方法中在任务调度服务节点中容错协议流程示意图。
具体实施方式
25.为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
26.需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
27.在本申请中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本申请及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。
28.并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本申请中的具体含义。
29.此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
30.需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
31.如图1所示,是分布式任务调度方法实施的硬件结构示意图,在图1中包括至少一个调度器管理协调控中心100以及多个调度服务节点200、用户300。通过调度器管理协调控中心100,对定时任务进行配置,定时任务代码上传分发到目标调度器服务上,由调度服务节点200的调度器服务对相应定时任务代码进行运行触发启动单独的业务任务运行进程,当任务业务逻辑全部运行完毕,业务进程退出,进程退出前通过分布式任务框架完成任务
状态记录,同时在本地日志和远程任务数据库同时记录。业务进程正常退出标识任务此次正常执行,等待下一次调度执行。
32.在相关技术中由于执行业务任务代码需要和执行器高度耦合部署,从而不利于执行器服务资源被更多业务任务复用、成本高。对此在本申请实施例的系统架构上无中心化,去掉执行器服务节点,只保留任务调度节点。
33.并且,在相关技术中多个业务任务共享执行器服务进程资源,任务之间容易产生资源竞争冲突,从而导致并行运行效率,甚至导致部分业务任务延迟执行,及执行延时,从而影响相关业务。在本申请中通过调度管理控制后台,上传发布定时任务代码包,由控制台选举一调度节点,对此任务进行部署和调度。
34.此外,在相关技术中由于多个业务任务共享同一个执行器进程,导致排查定位问题困难,不容易知道是哪个业务任务导致cpu内存等资源消耗,降级停用某个业务任务困难。在本申请的架构中由于耦合离线定时任务和在线实时任务,从而在某个业务任务有问题,导致资源消耗过高,由于任务进程是独立,很容易找出问题进程,从而知道问题业务任务。
35.由于相关技术中,任务部署和调度平台分离,任务部署需要单独部署到计划好的执行器服务,后再在任务调度管理中心配置相关的调度策略,进行任务触发。对于单执行器可并行执行任务个数取决与执行器配置的工作线程数,降低任务并行执行的弹性伸缩性。在本申请的架构中,定时任务无状态,各个任务进程独立,资源进程级别隔离,互不影响。同时任务调度器不再需要设置维护工作线程数,提升任务并行执行的弹性。
36.如图2所示,该方法包括如下的步骤s201至步骤s203:
37.步骤s201,接收定时任务,其中,所述定时任务至少包括:用以完成定时任务的逻辑代码;
38.步骤s202,根据所述逻辑代码,确定出符合执行条件的调度服务节点,其中,所述执行条件包括所述调度服务节点上的节点任务数量条件、节点健康状况条件;
39.步骤s203,用于向至少一个所述调度服务节点分配所述定时任务和分发所述逻辑代码,以使通过所述调度服务节点用于运行相应的所述定时任务中的业务逻辑代码并触发启动单独的业务任务运行进程。
40.从以上的描述中,可以看出,本申请实现了如下技术效果:
41.采用接收定时任务,其中,所述定时任务至少包括:用以完成定时任务的逻辑代码的方式,通过所述逻辑代码,确定出符合执行条件的调度服务节点,所述调度服务节点用于运行相应的所述定时任务中的业务逻辑代码并触发启动单独的业务任务运行进程,达到了向至少一个所述调度服务节点进行所述定时任务的调度分配、所述逻辑代码的分发的目的,从而实现了采用无中心化调度和任务执行,把任务执行从任务执行器服务里面解耦出来,同时无工作线程数限制,每个任务独立进程,相互不影响的技术效果,进而解决了离线定时任务和实时业务运行资源耦合度较高,容易相互影响且任务部署复杂的技术问题。
42.在上述步骤s201中业务定时任务代码实现时继承抽象job类,并实现里面的抽象方法。所述定时任务中包括用以完成定时任务的逻辑代码,离线的定时任务,去处理各种各样的业务任务,比如定时统计生成各类业务报表,定时用户行为分析,定时更新状态,定时和客户推送数据等等。
43.在一种具体实施方式中,所述抽象方法process主要是完成任务所需要的业务逻辑代码。
44.在一种具体实施方式中,elastic

job是ddframe中dd

job的作业模块中分离出来的分布式弹性作业框架。
45.作为一种较佳实施方式,对所述接收定时任务中的逻辑代码以及依赖代码或资源打包成.gz、.zip或者.jar等任意一种压缩格式在进行,此处理过程在接受所述定时任务之前。
46.在上述步骤s202中根据所述逻辑代码,确定出符合执行条件的调度服务节点,即根据各个调度服务器资源状况,选举出合适的调度服务节点,进行调度任务分配和代码分发。
47.在上述步骤s203中调度器管理协调控制台,创建新调度任务或者更新已有的任务代码,无论是创建还是更新,都需在调度器管理协调控中心上传任务代码包。
48.同时,在调度器服务节点收到了分配的任务后,按配置好的调度规则,进行任务调度触发。
49.作为一种较佳实施方式,所述接收定时任务,其中,所述定时任务至少包括:用以完成定时任务的逻辑代码,包括:所述定时任务通过继承抽象job类生成用以完成定时任务的逻辑代码,其中,所述逻辑代码包括用于新创建或更新的代码;根据所述逻辑代码新创建或更新所述定时任务,并接收上传的所述逻辑代码的任务代码压缩包。
50.作为一种较佳实施方式,向至少一个所述调度服务节点进行所述定时任务的调度分配、所述逻辑代码的分发之后,还包括:当所述定时任务的逻辑代码运行完毕之后,所述业务任务的进程退出并等待下一次调度执行;在所述进程退出之前通过分布式作业框架完成所述业务任务的状态记录,同时保存在本地日志。
51.具体实施时,当任务业务逻辑全部运行完毕,业务进程退出。当离线定时业务进程退出前通过job框架完成任务状态记录,本地日志配合远程任务数据库记录。业务进程正常退出标识任务此次正常执行,等待下一次调度执行。
52.作为本实施例中的优选,所述根据所述逻辑代码,确定出符合执行条件的调度服务节点包括:向任务调度服务节点广播所述定时任务分配消息;接收根据所述定时任务分配消息确定的所述任务调度器服务上报的能力评分,其中,所述能力评分包括:每个任务调度服务节点接收到所述定时任务分配消息之后,根据当前和历史资源负载以及历史最大并行运行任务数计算得到的打分值;根据所述能力评分的筛选结果,将所述定时任务分配到符合执行条件的目标调度服务节点并且指派至少一个用于备份的目标调度服务节点。
53.具体实施时,首先调度器管理协调控中心100向所有任务调度服务节点,广播任务分配消息。各个任务调度服务节点收到消息后,根据自身当前和历史资源负载和历史最大并行运行任务数,这些信息数据评估自身能力得出一个能力分,分数越高证明调度服务器节点性能和健康度越好,把这个分数上报给调度器管理协调控制中心,协调控制中心根据所有任务调度器服务上报的自身能力评分,选出排名前1至3个节点进行核实,根据所属任务历史完成履约情况,最近一个月的负载峰值和平均峰值,进行核实,如果一切无异常,则进行任务分配到目标调度节点同时指派1到2个符合条件的备份节点,如果没有符合执行条件的调度服务节点,则反馈创建新任务失败则需要补给调度服务节点。
54.作为一种较佳实施方式,所述根据所述能力评分的筛选结果,将所述定时任务分配到符合执行条件的目标调度服务节点并且指派至少一个用于备份的目标调度服务节点包括:采用选举算法选出符合执行条件的调目标度服务节点以及至少一个用于备份的调目标度服务节点,其中,所述标调度服务节点=节点健康分数

节点上已有的任务数,所述用于备份的目标调度服务节点=节点健康分数

已有备份任务数。
55.具体实施时,通过分离出来的job框架选举出目标调度服务节点,任务部署时开发不需要知道部署到了个服务器,及不用停止重启相关的执行器服务,避免发布更新某个任务时,影响其他定时任务按时调度执行。
56.采用选举算法选出执行任务调度节点及1个以上任务备用调度节点,执行节点选举=节点健康分数

节点上已有的任务数的分值最高者作为目标执行节点,备份节点选举=节点健康分数

已有备份任务数,分值高的前1个到5个备份节点,作为本次任务的备份节点。
57.作为本实施例中的优选,所述根据所述逻辑代码,确定出符合执行条件的调度服务节点,还包括:由调度器管理协调控中心,监督所有定时任务履约情况及各个无中心调度器服务,彼此监督对方的定时任务履约情况;如果检测到定时任务执行异常,则发生异常的所述调度服务节点发送心跳检测,如果通过心跳检测出所述调度服务节点的服务异常,则接管相关任务调度的用于备份的目标调度服务节点之后对所述定时任务进行调度执行。
58.具体实施时,由调度器管理协调控中心100,监督在多个调度服务节点200上所有定时任务履约情况及各个无中心调度器服务,彼此监督对方的定时任务履约情况。可以很快的把故障调度节点上的任务,分摊到其它分布式备份节点上。
59.在一种具体实施方式中,如果发现有任务履约异常,包括延长触发执行,及执行时间超长,则向履约异常相关的调度服务节点发送心跳检测,并询问对方健康状况,如果目标服务一切正常则忽略。
60.在一种具体实施方式中,如果目标服务异常心跳不通、健康状态差,则由任务调度备份节点和控制中心协商选出接管相关任务调度的备份节点,对任务进行调度执行。
61.作为本实施例中的优选,向至少一个所述调度服务节点进行所述定时任务的调度分配、所述逻辑代码的分发之后,还包括:根据所述定时任务的调度分配结果在调度任务服务节点上,按照分配的任务和相应的触发命令,将所述定时任务的逻辑代码同步到本地执行对应的命令创建的任务进程;当所述任务进程结束之后,通过调度服务节点接口反馈并同步任务是否正常执行。
62.具体实施时,任务触发方法通过在调度任务节点服务上,按分配的任务和相应的触发命令,把定时任务逻辑代码同步到本地,通过java processbuilder执行相关的命令创建新的任务进程,并对启动过程和进程号,进行操作日志记录。任务执行完后进程停止退出释放系统资源。
63.在一种具体实施方式中,业务任务结束的时候,需要反馈自身的状态,告诉调度器,任务是否完正常执行,反馈方式,依次优先顺序,调用本地调度服务接口,如果本地调度服务挂了再调用控制协调中心接口,如果控制协调中心挂了调用失败,则再调用其它调度服务节点接口。
64.需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的
计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
65.根据本申请实施例,还提供了一种用于实施上述方法的分布式任务调度装置,如图3所示,该装置包括:
66.接收模块301,用于接收定时任务,其中,所述定时任务至少包括:用以完成定时任务的逻辑代码;
67.确定模块302,用于根据所述逻辑代码,确定出符合执行条件的调度服务节点,其中,所述执行条件包括所述调度服务节点上的节点任务数量条件、节点健康状况条件;
68.调度分配模块303,用于向至少一个所述调度服务节点分配所述定时任务和分发所述逻辑代码,以使通过所述调度服务节点用于运行相应的所述定时任务中的业务逻辑代码并触发启动单独的业务任务运行进程。
69.在上述接收模块301中业务定时任务代码实现时继承抽象job类,并实现里面的抽象方法。所述定时任务中包括用以完成定时任务的逻辑代码,离线的定时任务,去处理各种各样的业务任务,比如定时统计生成各类业务报表,定时用户行为分析,定时更新状态,定时和客户推送数据等等。
70.在一种具体实施方式中,所述抽象方法process主要是完成任务所需要的业务逻辑代码。
71.在一种具体实施方式中,elastic

job是ddframe中dd

job的作业模块中分离出来的分布式弹性作业框架。
72.作为一种较佳实施方式,对所述接收定时任务中的逻辑代码以及依赖代码或资源打包成.gz、.zip或者.jar等任意一种压缩格式在进行,此处理过程在接受所述定时任务之前。
73.在上述确定模块302中根据所述逻辑代码,确定出符合执行条件的调度服务节点,即根据各个调度服务器资源状况,选举出合适的调度服务节点,进行调度任务分配和代码分发。
74.在上述调度分配模块303中调度器管理协调控制台,创建新调度任务或者更新已有的任务代码,无论是创建还是更新,都需在调度器管理协调控中心上传任务代码包。
75.同时,在调度器服务节点收到了分配的任务后,按配置好的调度规则,进行任务调度触发。
76.作为一种较佳实施方式,所述接收定时任务,其中,所述定时任务至少包括:用以完成定时任务的逻辑代码,包括:所述定时任务通过继承抽象job类生成用以完成定时任务的逻辑代码,其中,所述逻辑代码包括用于新创建或更新的代码;根据所述逻辑代码新创建或更新所述定时任务,并接收上传的所述逻辑代码的任务代码压缩包。
77.作为一种较佳实施方式,向至少一个所述调度服务节点进行所述定时任务的调度分配、所述逻辑代码的分发之后,还包括:当所述定时任务的逻辑代码运行完毕之后,所述业务任务的进程退出并等待下一次调度执行;在所述进程退出之前通过分布式作业框架完成所述业务任务的状态记录,同时保存在本地日志。
78.具体实施时,当任务业务逻辑全部运行完毕,业务进程退出。当离线定时业务进程退出前通过job框架完成任务状态记录,本地日志配合远程任务数据库记录。业务进程正常
退出标识任务此次正常执行,等待下一次调度执行。
79.为了更好的理解上述分布式任务调度方法流程,以下结合优选实施例对上述技术方案进行解释说明,但不用于限定本发明实施例的技术方案。
80.本申请优选实施例的分布式任务调度方法,实现了无中心化调度和任务执行,把任务执行从任务执行器服务里面解耦出来,任务开发和部署,不要知道有哪些执行器服务节点,降低执行器里面各个业务代码冲突风险,提升资源利用率和各个业务团队开发定时任务和部署任务工作效率。此外,任务无中心化执行,任务执行无工作线程数限制,每个任务独立进程,相互不影响,避免任务之间产生资源竞争冲突,提高各个业务任务运行效率,避免业务任务延迟执行,及执行延时,提升任务调度质量。
81.如图4所示,是本申请实施例中分布式任务调度方法的流程示意图,具体包括如下步骤:
82.步骤1,创建或更新任务并上传完好的任务代码包。
83.所述任务代码包会发送至所述调度服务器控制协调中心。具体实施时,还需要把代码和依赖代码或资源打包成.gz、.zip或.jar等任意一种压缩格式的任务代码包。
84.业务定时任务代码实现时继承抽象job类,并实现里面的抽象方法process()process方法主要是完成任务所需要的业务逻辑代码。
85.步骤2,记录任务及任务调度规则和任务对应代码。
86.步骤3,向调度服务器节点广播任务通知。
87.在所述调度服务器控制协调中心执行上述步骤2和3,之后发送至调度服务节点。
88.步骤4,反馈自己的资源状况及可以接收任务的能力评分。
89.在所述调度服务节点反馈自己的资源状况及可以接收任务的能力评分至调度服务器控制协调中心。
90.步骤5,选出可用调度服务节点及备用调度服务节点。
91.步骤6,下发分配任务通知至任务调度备用节点。
92.在所述调度服务器控制协调中心执行上述步骤5和步骤6。并且根据选择出的任务调度节点和任务调度备用节点进行分配任务的下发。具体实施时,根据各个调度服务器资源状况,选举出合适的调度服务节点,进行调度任务分配和代码分发。
93.步骤7,下载任务代码存放本地。
94.步骤8,调度触发定时任务。
95.具体实施时,调度器服务节点收到了分配的任务后,按配置好的调度规则,进行任务调度触发。任务触发方法通过在调度任务节点服务上,按分配的任务和相应的触发命令,把任务代码同步到本地,通过java processbuilder执行相关的命令创建新的任务进程,并对启动过程和进程号,进行日志记录。任务执行完后进程停止退出释放系统资源。
96.进一步,业务任务结束的时候,需要反馈自身的状态,告诉调度器,任务是否完正常执行,反馈方式,依次优先顺序,调用本地调度服务接口,本地调度服务挂了,调用控制协调中心接口,控制协调中心挂了调用失败,调用其它调度服务节点接口。
97.步骤9,创建新的任务进程。
98.步骤10,任务运行结束反馈任务结束状态。
99.步骤11,向调度服务节点反馈失败转而向控制中心。
100.具体实施时,当任务业务逻辑全部运行完毕,业务进程退出,进程退出前通过job框架完成任务状态记录,本地日志配合远程任务数据库记录。业务进程正常退出标识任务此次正常执行,等待下一次调度执行。
101.如图5所示,是根据本申请一实施例分布式任务调度方法中在任务调度服务节点中容错协议流程示意图,具体包括如下步骤:
102.步骤1,在所述调度服务器控制协调中心,监督所有任务状态。
103.以及,在所述任务调度节点监督自己备份的任务状态。
104.步骤2,发现异常任务和负责执行调度的服务节点。
105.步骤3,判断是否有异常任务。
106.步骤4,如果有发起心跳及服务能力健康状态请求。
107.步骤5,通过责任服务调度节点判断节点是否健康。如果否,选择分布式任务备份调度服务节点。
108.步骤6,如果否,在调度服务器控制协调中心。确认故障及协调启动备份节点接管相关任务、重新分配任务,得到分布式任务备份调度服务节点。
109.具体实施时,由调度器管理协调控中心,监督所有定时任务履约情况及各个无中心调度器服务,彼此监督对方的定时任务履约情况。如果发现有任务履约异常,即包括延长触发执行,及执行时间超长,则向履约异常相关的调度服务节点发送心跳检测,并询问对方健康状况,如果目标服务一切正常,则忽略,如果目标服务异常,心跳不通,健康状态差,则由任务调度备份节点和控制中心协商选出接管相关任务调度的备份节点,对任务进行调度执行。
110.本申请的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
111.可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
112.s1,接收定时任务,其中,所述定时任务至少包括:用以完成定时任务的逻辑代码;
113.s2,根据所述逻辑代码,确定出符合执行条件的调度服务节点,其中,所述执行条件包括所述调度服务节点上的节点任务数量条件、节点健康状况条件;
114.s3,向至少一个所述调度服务节点分配所述定时任务和分发所述逻辑代码,以使通过所述调度服务节点用于运行相应的所述定时任务中的业务逻辑代码并触发启动单独的业务任务运行进程。
115.可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
116.s1,当所述定时任务的逻辑代码运行完毕之后,所述业务任务的进程退出并等待下一次调度执行;
117.s2,在所述进程退出之前通过分布式作业框架完成所述业务任务的状态记录,同时保存在本地日志。
118.可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read

only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
119.本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储
有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
120.可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
121.可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
122.s1,接收定时任务,其中,所述定时任务至少包括:用以完成定时任务的逻辑代码;
123.s2,根据所述逻辑代码,确定出符合执行条件的调度服务节点,其中,所述执行条件包括所述调度服务节点上的节点任务数量条件、节点健康状况条件;
124.s3,向至少一个所述调度服务节点分配所述定时任务和分发所述逻辑代码,以使通过所述调度服务节点用于运行相应的所述定时任务中的业务逻辑代码并触发启动单独的业务任务运行进程。
125.显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
126.以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1