一种任务调度系统及方法与流程
未命名
07-29
阅读:120
评论:0
1.本发明属于分布式系统任务调度领域,具体涉及一种任务调度系统及方法。
背景技术:
2.开发业务系统过程中遇到需要进行业务变更的情况时,开发者需要调整业务代码,包括调整任务执行顺序或者是增加删除任务,因为任务代码都在一个接口里,接口里的任务有强耦合性,修改代码可能会影响整体逻辑,且业务代码调整起来效率低下,并且在上下游调用关系复杂的系统里,业务代码调整可能牵扯的业务域也会变多,协调起来会更复杂。
3.目前,调整业务代码时,需要各个系统独自去排期、修改代码、发布上线,当面对上下游需要协调的时候,往往是需要拉齐所有上下游,制定一个统一的上线方案,整体费时费力,效率低下。
4.如果要实现多个任务按规则执行,现有技术中存在以下几个缺点:
5.(1)必须要经过一个完整的研发流程:代码变更、测试、发布上线,无法实现添加任务,删除任务,调整任务执行顺序;
6.(2)多个任务时,其中某个任务失败后,下次执行又需要重头开始。
技术实现要素:
7.本发明提出了一种任务调度系统及方法,通过在任务调度系统配置接口,可根据业务系统需求配置接口的调用顺序,实现了任务流程在任务调度系统中的动态修改,并能够实时生效。
8.一方面,为实现上述目的,本发明提供了一种任务调度系统,包括:任务读取模块、失败任务判断模块、断点重试配置判断模块、接口配置模块、dubbo接口获取模块、业务系统接口调用模块、接口失败阻断配置判断模块和任务全部执行模块;
9.所述任务读取模块用于从配置中心读取全部任务的配置和业务系统中当前任务的任务状态;其中,所述配置中心用于配置接口调用顺序;所述配置为接口调用顺序;
10.所述失败任务判断模块用于基于所述任务状态判断所述当前任务是否存在失败任务;
11.所述断点重试配置判断模块用于当存在所述失败任务时根据所述配置判断所述任务调度系统是否开启断点重试;
12.所述接口配置模块用于当所述断点重试开启时读取所述失败任务的节点接口配置;所述接口配置模块还用于当不存在所述失败任务或所述断点重试未开启时,读取所述当前任务的当前任务接口配置;
13.所述dubbo接口获取模块用于在所述节点接口配置或所述当前任务接口配置读取完成后,获取dubbo接口;
14.所述业务系统接口调用模块用于基于所述dubbo接口调用业务系统接口,并判断
所述业务系统接口是否返回;
15.所述接口失败阻断配置判断模块用于当所述业务系统接口未返回时判断所述任务调度系统是否开启接口失败阻断,
16.所述任务全部执行模块用于当所述接口失败阻断开启时判断所述全部任务是否执行完毕,若所述全部任务未执行完毕,则返回至所述dubbo接口获取模块,重复进行后续执行过程,直至所述全部任务执行完毕,并结束任务调度;若所述任务调度系统未开启所述接口失败阻断,则保存所述当前任务的执行结果并结束任务调度。
17.可选地,所述全部任务中的每个任务均配置有任务流程唯一编码,所述任务流程唯一编码包括:接口名、方法名、接口版本号、入参全类名、任务执行顺序、是否开启所述断点重试和是否开启所述接口失败阻断。
18.可选地,所述任务调度系统的后端采用springboot+mybatis实现,所述任务调度系统的前端采用vue实现。
19.可选地,所述dubbo接口获取模块采用java反射机制反射获取所述dubbo接口。
20.另一方面,为实现上述目的,本发明还提供了一种任务调度方法,应用于任务调度系统,所述任务调度系统包括配置中心,所述配置中心用于配置接口调用顺序;所述任务调度方法包括以下步骤:
21.从配置中心读取全部任务的配置和业务系统中当前任务的任务状态;其中,所述配置为接口调用顺序;
22.基于所述任务状态判断所述当前任务是否存在失败任务;
23.当存在所述失败任务时,根据所述配置,判断所述任务调度系统是否开启断点重试;
24.当所述断点重试开启时,读取所述失败任务的节点接口配置;当不存在所述失败任务或所述断点重试未开启时,读取所述当前任务的当前任务接口配置;
25.在所述节点接口配置或所述当前任务接口配置读取完成后,获取dubbo接口;
26.基于所述dubbo接口调用业务系统接口,并判断所述业务系统接口是否返回;
27.当所述业务系统接口未返回时判断所述任务调度系统是否开启接口失败阻断;
28.当所述接口失败阻断开启时,判断所述全部任务是否执行完毕,若所述全部任务未执行完毕,则返回获取剩余任务的所述dubbo接口,重复进行后续执行过程,直至所述全部任务执行完毕,并结束任务调度;若所述任务调度系统未开启所述接口失败阻断,则保存所述当前任务的执行结果并结束任务调度。
29.可选地,所述全部任务中的每个任务均配置有任务流程唯一编码,所述任务流程唯一编码包括:接口名、方法名、接口版本号、入参全类名、任务执行顺序、是否开启所述断点重试和是否开启所述接口失败阻断。
30.可选地,所述任务调度系统的后端采用springboot+mybatis实现,所述任务调度系统的前端采用vue实现。
31.可选地,采用java反射机制反射获取所述dubbo接口。
32.本发明的有益效果为:
33.本发明在任务调度系统配置接口,当失败任务存在且断点重试开启时,通过接口配置模块读取失败任务的节点接口配置,当不存在失败任务或者断点重试未开启时,通过
接口配置模块读取当前任务的当前任务接口配置,在节点接口配置或当前任务接口配置读取完成后获取dubbo接口,业务系统接口调用模块基于dubbo接口调用业务系统接口,并判断业务系统接口是否返回,当业务系统接口未返回时,通过接口失败阻断配置判断模块判断任务调度系统是否开启失败阻断,当接口失败阻断开启时,通过任务全部执行模块判断全部任务是否执行完毕,若全部任务未执行完毕,则返回至dubbo接口获取模块,重复进行后续执行过程,直至全部任务执行完毕,并结束任务调度;若任务调度系统未开启接口失败阻断,则保存当前任务的执行结果并结束任务调度。本发明通过在任务调度系统配置接口,实现了所有任务执行逻辑的接口配置化,可根据业务系统需求配置接口的调用顺序,实现了任务流程在任务调度系统中的动态修改,并能够实时生效。
附图说明
34.为了更清楚地说明本发明的技术方案,下面对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
35.图1为本发明实施例一任务调度系统示意图;
36.图2为本发明实施例一任务调度系统进行任务调度的流程示意图;
37.图3为本发明实施例查询当前任务执行状态流程示意图。
具体实施方式
38.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
39.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
40.实施例一
41.图1为本发明实施例任务调度系统示意图,如图1所示,本发明公开了一种任务调度系统,包括:任务读取模块、失败任务判断模块、断点重试配置判断模块、接口配置模块、dubbo接口获取模块、业务系统接口调用模块、接口失败阻断配置判断模块和任务全部执行模块;任务读取模块用于从配置中心(用于配置接口调用顺序)读取全部任务的配置(接口调用顺序)和业务系统中当前任务的任务状态,失败任务判断模块用于基于任务状态判断当前任务是否存在失败任务,断点重试配置判断模块用于当存在失败任务时根据所述配置判断任务调度系统是否开启断点重试,接口配置模块用于当断点重试开启时读取失败任务的节点接口配置,接口配置模块还用于当不存在失败任务或断点重试未开启时,读取当前任务的当前任务接口配置,dubbo接口获取模块用于在节点接口配置或当前任务接口配置读取完成后,获取dubbo接口,业务系统接口调用模块用于基于dubbo接口调用业务系统接口,并判断业务系统接口是否返回,接口失败阻断配置判断模块用于当业务系统接口未返回时判断任务调度系统是否开启接口失败阻断,任务全部执行模块用于当接口失败阻断开启时判断全部任务是否执行完毕,若全部任务未执行完毕,则返回至dubbo接口获取模块,
重复执行后续执行过程,直至全部任务执行完毕,并结束任务调度;若任务调度系统未开启接口失败阻断,则保存当前任务的执行结果并结束任务调度。
42.图2为本发明实施例任务调度系统进行任务调度的流程示意图,如图2所示,任务调度系统中的每个任务均配置有任务流程唯一编码,任务流程唯一编码包括:接口名(interfacename)、方法名(methodname)、接口版本号(version)、入参全类名(paramsname)、任务执行顺序(sort)、是否开启断点重试(isretry)和是否开启接口失败阻断(isblock)。在任务调度开始时,首先在配置中心配置好每个任务的任务流程唯一编码,任务读取模块根据任务流程唯一编码从配置中心读取全部任务的配置和业务系统中当前任务的任务状态,失败任务判断模块基于当前任务的任务状态判断当前任务是否存在失败任务,当存在失败任务时,断点重试配置判断模块判断任务调度系统是否开启断点重试,当断点重试开启时,接口配置模块读取失败任务的节点接口配置,当不存在失败任务或断点重试未开启时,接口配置模块读取当前任务的当前任务接口配置,在节点接口配置或当前任务接口配置读取完成后,dubbo接口获取模块获取dubbo接口,基于dubbo接口,业务系统接口调用模块调用业务系统接口,并判断业务系统接口是否返回,当业务系统接口未返回时,接口失败阻断配置判断模块判断任务调度系统是否开启接口失败阻断,当接口失败阻断开启时,任务全部执行模块判断全部任务是否执行完毕,若全部任务未执行完毕,则返回至dubbo接口获取模块,重复执行后续执行过程,直至全部任务执行完毕,并结束任务调度;若任务调度系统未开启接口失败阻断,则保存当前任务的执行结果并结束任务调度。
43.进一步地,本发明任务调度系统的后端采用springboot+mybatis实现,前端采用vue实现,提供了一套完整的可视化配置页面,提供了用户+角色+权限的完整用户体系。
44.进一步地,图3为本发明实施例查询当前任务执行状态流程示意图,如图3所示,在本发明实施例中,业务系统调用任务调度系统开启任务调度接口时带有任务流程唯一编码,即接口入参,任务调度系统会返回一个唯一的任务id,后续业务系统可根据任务id查询当前任务的执行状态。
45.进一步地,dubbo接口获取模块采用java反射机制反射获取dubbo接口,例如:流程配置,根据以下配置调用userservice接口的adduser方法,接口入参是com.xxx.user,执行顺序是第三个,参数具体值是:{“userid”:1,“username”:“张三”,“phone”:“yvga1dvnzjovo1za”}。具体参数说明如表1所示:
46.表1
47.[0048][0049]
进一步地,任务调度系统中的核心参数说明如表2所示:
[0050]
表2
[0051]
参数说明interfacename接口名,完整类名称methodname方法名paramsname入参全类名tasklist任务集合sort任务执行顺序flowid在配置中心配置好流程后返回的唯一idtaskid任务id,任务开启后的唯一idisretry是否开启断点重试idblock是否开启失败阻断
[0052]
开启接口入参配置的核心参数如表3所示:
[0053]
表3
[0054][0055][0056]
本发明实施例通过在任务调度系统配置接口,实现了所有任务执行逻辑的接口配置化,可根据业务系统需求配置接口的调用顺序,实现了任务流程在任务调度系统中的动态修改,并能够实时生效。
[0057]
实施例二
[0058]
本发明公开了一种任务调度方法,包括以下步骤:
[0059]
读取全部任务的配置和当前任务的任务状态;
[0060]
基于任务状态判断当前任务是否存在失败任务;
[0061]
当存在失败任务时,判断任务调度系统是否开启断点重试;
[0062]
当断点重试开启时,读取失败任务的节点接口配置;当不存在失败任务或断点重试未开启时,读取当前任务的当前任务接口配置;
[0063]
在节点接口配置或当前任务接口配置读取完成后,获取dubbo接口;
[0064]
基于dubbo接口调用业务系统接口,并判断业务系统接口是否返回;
[0065]
当业务系统接口未返回时判断任务调度系统是否开启接口失败阻断,
[0066]
当接口失败阻断开启时,判断全部任务是否执行完毕,若全部任务未执行完毕,则返回获取剩余任务的dubbo接口,直至全部任务执行完毕,并结束任务调度;若任务调度系统未开启接口失败阻断,则保存当前任务的执行结果并结束任务调度。
[0067]
关于上述实施例中的方法,其中各个步骤的具体执行操作过程已经在有关该装置的实施例中进行了详细描述,此处将不做详细阐述说明。
[0068]
以上所述的实施例仅是对本发明优选方式进行的描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
[0069]
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
[0070]
需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是指至少两个。
[0071]
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
[0072]
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
[0073]
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0074]
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0075]
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0076]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0077]
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
技术特征:
1.一种任务调度系统,其特征在于,包括:任务读取模块、失败任务判断模块、断点重试配置判断模块、接口配置模块、dubbo接口获取模块、业务系统接口调用模块、接口失败阻断配置判断模块和任务全部执行模块;所述任务读取模块用于从配置中心读取全部任务的配置和业务系统中当前任务的任务状态;其中,所述配置中心用于配置接口调用顺序;所述配置为接口调用顺序;所述失败任务判断模块用于基于所述任务状态判断所述当前任务是否存在失败任务;所述断点重试配置判断模块用于当存在所述失败任务时根据所述配置判断所述任务调度系统是否开启断点重试;所述接口配置模块用于当所述断点重试开启时读取所述失败任务的节点接口配置;所述接口配置模块还用于当不存在所述失败任务或所述断点重试未开启时,读取所述当前任务的当前任务接口配置;所述dubbo接口获取模块用于在所述节点接口配置或所述当前任务接口配置读取完成后,获取dubbo接口;所述业务系统接口调用模块用于基于所述dubbo接口调用业务系统接口,并判断所述业务系统接口是否返回;所述接口失败阻断配置判断模块用于当所述业务系统接口未返回时判断所述任务调度系统是否开启接口失败阻断,所述任务全部执行模块用于当所述接口失败阻断开启时判断所述全部任务是否执行完毕,若所述全部任务未执行完毕,则返回至所述dubbo接口获取模块,重复进行后续执行过程,直至所述全部任务执行完毕,并结束任务调度;若所述任务调度系统未开启所述接口失败阻断,则保存所述当前任务的执行结果并结束任务调度。2.根据权利要求1所述的任务调度系统,其特征在于,所述全部任务中的每个任务均配置有任务流程唯一编码,所述任务流程唯一编码包括:接口名、方法名、接口版本号、入参全类名、任务执行顺序、是否开启所述断点重试和是否开启所述接口失败阻断。3.根据权利要求1所述的任务调度系统,其特征在于,所述任务调度系统的后端采用springboot+mybatis实现,所述任务调度系统的前端采用vue实现。4.根据权利要求1所述的任务调度系统,其特征在于,所述dubbo接口获取模块采用java反射机制反射获取所述dubbo接口。5.一种任务调度方法,其特征在于,应用于任务调度系统,所述任务调度系统包括配置中心,所述配置中心用于配置接口调用顺序;所述任务调度方法包括以下步骤:从配置中心读取全部任务的配置和业务系统中当前任务的任务状态;其中,所述配置为接口调用顺序;基于所述任务状态判断所述当前任务是否存在失败任务;当存在所述失败任务时,根据所述配置,判断所述任务调度系统是否开启断点重试;当所述断点重试开启时,读取所述失败任务的节点接口配置;当不存在所述失败任务或所述断点重试未开启时,读取所述当前任务的当前任务接口配置;在所述节点接口配置或所述当前任务接口配置读取完成后,获取dubbo接口;
基于所述dubbo接口调用业务系统接口,并判断所述业务系统接口是否返回;当所述业务系统接口未返回时判断所述任务调度系统是否开启接口失败阻断;当所述接口失败阻断开启时,判断所述全部任务是否执行完毕,若所述全部任务未执行完毕,则返回获取剩余任务的所述dubbo接口,重复进行后续执行过程,直至所述全部任务执行完毕,并结束任务调度;若所述任务调度系统未开启所述接口失败阻断,则保存所述当前任务的执行结果并结束任务调度。6.根据权利要求5所述的任务调度方法,其特征在于,所述全部任务中的每个任务均配置有任务流程唯一编码,所述任务流程唯一编码包括:接口名、方法名、接口版本号、入参全类名、任务执行顺序、是否开启所述断点重试和是否开启所述接口失败阻断。7.根据权利要求5所述的任务调度方法,其特征在于,所述任务调度系统的后端采用springboot+mybatis实现,所述任务调度系统的前端采用vue实现。8.根据权利要求5所述的任务调度方法,其特征在于,采用java反射机制反射获取所述dubbo接口。
技术总结
本发明公开一种任务调度系统及方法,属于分布式系统任务调度领域,包括任务读取模块、失败任务判断模块、任务全部执行模块,断点重试配置判断模块用于当存在失败任务时判断是否开启断点重试,接口配置模块用于当不存在失败任务或断点重试未开启时,读取当前任务接口配置,dubbo接口获取模块用于获取dubbo接口,业务系统接口调用模块用于基于dubbo接口调用业务系统接口,并判断业务系统接口是否返回,接口失败阻断配置判断模块用于当业务系统接口未返回时判断是否开启接口失败阻断;通过在任务调度系统配置接口,可根据业务系统需求配置接口的调用顺序,实现了任务流程在任务调度系统中的动态修改,并能够实时生效。并能够实时生效。并能够实时生效。
技术研发人员:刘睿
受保护的技术使用者:上海中通吉网络技术有限公司
技术研发日:2023.04.18
技术公布日:2023/7/28
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
