首页 / 专利库 / 医疗服务 / 即时检验 / 基于作业流的分布式调度系统及应用方法

基于作业流的分布式调度系统及应用方法

阅读:1018发布:2020-12-23

专利汇可以提供基于作业流的分布式调度系统及应用方法专利检索,专利查询,专利分析的服务。并且本 发明 提供一种基于作业流的分布式调度系统及应用方法,包括:逻辑调度模 块 、触发器管理模块、 数据库 交互模块、服务 接口 模块、作业分发模块、作业应答模块、作业流资源库模块以及执行代理终端模块。其中逻辑调度模块完成作业流及作业的逻辑处理和调度,触发器管理模块完成作业流的触发器新增、触发和删除,数据库交互模块完成系统与数据库之间数据交互,服务接口模块提供对作业流、作业进行控制的对外服务接口,作业分发模块和作业应答模块用于完成对作业的分发和执行代理终端模块执行作业结果的接收、更新,作业流资源库模块存储从数据库读取的作业流配置属性。分担了单点的作业执行压 力 ,提高了作业调度与执行的效率。,下面是基于作业流的分布式调度系统及应用方法专利的具体信息内容。

1.一种基于作业流的分布式调度系统,其特征在于,包括:逻辑调度模、触发器管理模块、数据库交互模块、服务接口模块、作业分发模块、作业应答模块、作业流资源库模块以及执行代理终端模块;
所述逻辑调度模块用于完成作业流及作业的逻辑处理和调度;
-当一个作业流的触发器触发时,所述逻辑调度模块收到触发消息,并判断此时所述作业流的业务逻辑是否符合触发条件;
-当一个作业执行结果被传递到所述逻辑调度模块时,所述逻辑调度模块根据作业执行结果及作业流属性判定作业流结束,或者调度作业流中所述作业的后续作业;
-当人工干预触发作业流或作业操作时,作业流触发请求被传递到所述逻辑调度模块,所述逻辑调度模块根据作业流属性,判定所述作业流触发请求是否有效,若有效则触发作业流或作业操作;
所述触发器管理模块用于完成作业流的触发器新增、触发和删除,所述触发器管理模块是基于作业流的调度系统并根据作业流进行配置,其中,一个作业流能够对应多个触发器,且所述触发器为时间条件的配置;
-当时间条件满足触发器预设条件时,触发器触发作业流调度;
-当人工触发作业流时,逻辑调度模块为请求创建临时触发器进行调度,在执行结束后删除该触发器;
所述数据库交互模块用于完成分布式调度系统与数据库之间数据交互,其中所述数据库中存储有关于作业流属性配置的全部信息;
-当分布式调度系统启动时从数据库读取所述属性配置的信息;
-当分布式调度系统调度运行时,所述数据库实时存储关于作业流及作业的各种属性、状态信息,且保持所述属性信息与数据库中一致;
所述服务接口模块用于提供对作业流、作业进行控制的对外服务接口,通过标准的SOAP协议调用,并且提供人工对所述作业流的干预以及查询所述作业流的信息;
所述作业分发模块用于完成作业进入调度进程后的分发,根据所述作业的配置属性,将作业执行指令分发到特定的执行代理终端模块,同时发送消息以判断各个执行代理终端模块的状态,且所述作业分发模块与执行代理终端模块所处的物理位置操作系统类型无关;
所述作业应答模块用于完成对执行代理终端模块作业执行结果的接收,以及接收应答后对作业状态属性信息的更新;
所述作业流资源库模块用于存储从数据库读取的作业流配置属性,作业流配置属性包括作业流的基础配置以及其中每个作业的基本配置信息,并在系统运行过程中对所述配置属性进行实时更新;
所述执行代理终端模块用于接收逻辑调度模块发送的作业执行请求,根据所述作业执行请求执行作业命令,并将结果返回给作业应答模块,整个分布式调度系统包含多个执行代理终端模块,且所述多个执行代理终端模块能够运行在不同的物理节点上。
2.一种权利要求1所述的基于作业流的分布式调度系统的应用方法,其特征在于,包括如下步骤:
步骤1:启动分布式调度系统服务端;
步骤2:在分布式调度系统服务端上申请创建作业流;
步骤3:根据创建的作业流进行触发;
步骤4:作业流触发成功后进入作业应答,执行作业;
步骤5:对作业流创建人工控制服务;
步骤6:分布式调度系统执行完作业后,进行作业分发。
3.根据权利要求2所述的基于作业流的分布式调度系统的应用方法,其特征在于,所述步骤1包括:
步骤1.1:在分布式调度系统中加载资源配置,包括数据库资源、对外服务接口、队列资源、日志以及控制时间间隔设置;
步骤1.2:根据所述资源配置建立数据库连接,完成数据库交互模块初始化;
步骤1.3:启动逻辑调度模块,完成请求队列初始化;
步骤1.4:根据所述资源配置读取作业流配置,调用数据库交互模块,读取数据库中已配置的作业流,同时读取各作业流内作业信息,保存到作业流资源库模块中;
步骤1.5:启动触发器管理模块,根据作业流资源库模块中作业流触发配置,为作业流创建触发器并进行管理,当触发器被触发时触发作业流,向逻辑调度模块发调度请求;
步骤1.6:启动服务接口模块,启动web服务,使用户能够通过网络调用命令行以及管理UI,并对作业流及作业进行查询、控制;
步骤1.7:启动作业分发模块,包括启动接收逻辑调度模块通知作业分发线程、定时检测作业分发事件线程、执行代理终端模块状态检测线程、作业分发线程池;
步骤1.8:启动作业应答模块,启动接收执行代理终端模块作业结果的服务以及启动检测事件状态通知调度模块的线程;
其中,若所述逻辑调度模块、触发器管理模块、数据库交互模块、服务接口模块、作业分发模块、作业应答模块、作业流资源库模块以及执行代理终端模块中任一模块启动失败,则记录失败日志。
4.根据权利要求2所述的基于作业流的分布式调度系统的应用方法,其特征在于,所述步骤2包括:
步骤2.1:用户经过授权登入系统,申请创建作业流,系统检验用户权限,通过则授权作业流创建;
步骤2.2:根据用户创建的作业流,配置所述作业流的全局属性和触发策略;
步骤2.3:根据用户指令将有需要的作业添加到作业流中;
步骤2.4:若有需要的作业在作业模版中不存在,则进入步骤2.5;若有需要的作业在作业模板中已经存在,则选择作业模板并进入步骤2.9;
步骤2.5:新建作业模版时要选择执行代理终端模块,若有需要的执行代理终端模块不存在,则进入步骤2.6;
步骤2.6:新增执行代理终端模块时,将执行代理终端模块划分到某个应用系统,选择已划分的所述应用系统,若没有合适的应用系统,则新增应用系统;
步骤2.7:根据应用系统基本信息,包括系统代号、负责人、基本功能说明创建新增应用系统,所述应用系统根据用户需要对执行代理终端模块进行划分;
步骤2.8:作业模版提交成功后编辑作业流依次选择需要的作业模版,若没有合适的作业模板,则新增作业模版;
步骤2.9:选择所有需要的作业模版后,对这些作业模版配置仅属于所述作业流的属性,其中所述属性包括:作业前后依赖关系、执行超时条件、报警条件;
步骤2.10:编辑作业流结束后用户能够通过作业流逻辑图形展示来检查作业流是否配置正确,确认正确后需要用户激活作业流,激活作业流则该作业流被加载到系统作业流资源库,并进入自动调度。
5.根据权利要求2所述的基于作业流的分布式调度系统的应用方法,其特征在于,所述步骤3包括:
步骤3.1:触发器管理模块中作业流的触发器被触发,其中所述触发包括作业流定时配置的触发器被触发和人工触发时临时创建的触发器即时触发;
步骤3.2:根据触发器关联的作业流,为作业流创建触发请求,且所述触发请求被发送给逻辑调度模块;
步骤3.3:根据触发请求中的关键字,从作业流资源库查找是否存在该作业流;若存在该作业流,则进入步骤3.4;若不存在该作业流,则进入步骤3.5;
步骤3.4:根据作业流资源库中作业流状态信息判断该作业流能否被触发,当该作业流处于运行或暂停状态时触发器不能被触发;
步骤3.5:当作业流未存在于作业流资源库中或该作业流不能被触发时,则触发失败;
当作业流未在作业流资源库中找到的情况出现于人工触发新增的作业流时,该作业流未激活,没有被加载到作业流资源库中;
步骤3.6:对触发之前的作业流配置进行备份,若触发失败,则作业流能够恢复到之前的配置;
步骤3.7:重置作业流内所有作业,将作业流内作业历史状态、关联的事件置为初始状态;
步骤3.8:从作业流资源库获取该作业流的初始作业,所述初始作业还包括Box作业,所述Box作业能够包含多个作业流分支,用于作业有多个依赖作业的情况;若初始作业是Box作业,则需获取Box作业内每个分支流的初始作业;
步骤3.9:为获取到的初始作业创建事件,所述事件用于作业后续的分发、执行及应答处理;
步骤3.10:若步骤3.7、步骤3.8、骤3.9失败,则恢复步骤3.6中备份的作业流配置;
步骤3.11:当作业流触发失败且所述作业流中作业均被重置时,记录错误,并返回错误;
步骤3.12:作业流触发成功后,通知分发模块分发作业。
6.根据权利要求2所述的基于作业流的分布式调度系统的应用方法,其特征在于,所述步骤4包括:
步骤4.1:当执行代理终端模块执行作业后,将作业执行结果返回给作业应答模块;
步骤4.2:作业应答模块接收到执行代理终端模块的作业执行结果,并从所述作业执行结果消息中获取关联的事件,更新事件状态;
步骤4.3:当事件状态变更完成后,作业应答模块通知逻辑调度模块作业执行结束;
步骤4.4:逻辑调度模块收到作业应答模块通知后,从通知消息中获取关联的作业流和作业;
步骤4.5:从作业流资源库查找是否存在作业应答模块通知消息中的作业流;
步骤4.6:从作业流资源库查找是否存在作业应答模块通知消息中的作业;
步骤4.7:若找到关联的作业流及作业,将从作业执行结果消息中获取的关联事件与作业应答模块通知消息中的事件进行比较;
步骤4.8:通知消息中的作业流或者作业没有在作业流资源库中存在时,或者作业流资源库中作业关联事件与通知消息在事件不匹配时,判定该事件以及作业执行结果为过时数据,该事件被丢弃,作业执行结果被忽略;
步骤4.9:当作业流、作业、事件均匹配时,更新作业状态信息;
步骤4.10:记录作业执行历史记录;
步骤4.11:当且仅当作业执行结果为失败且作业流配置为该作业失败立即告警暂停时,立即暂停该作业流,标记作业失败并报警;
步骤4.12:当作业执行结束且无需报警时,从作业流资源库查找该作业流中当前作业是否有后续作业需要调度;若当前作业包含在Box作业中,则需要判断该Box作业是否结束以及结束状态;若后续作业为Box作业,则需要获取该Box的起始作业列表作为后续作业;
步骤4.13:当无法找到后续作业时,检查作业流中所有作业,有任意作业处于中间状态没有结束时不能判定结束,此时该作业流需要等待所有分支均为初始化状态,即无需调度的分支,或没有后续的状态时才能判定结束;
步骤4.14:若当前作业无后续作业,且该作业流没有其他作业处于中间状态时,判定作业流已经执行结束,根据作业流中作业配置判定作业流的执行结果是成功或者失败;若有后续作业需要调度,根据获取到的后续作业或作业列表,为后续作业创建事件;
步骤4.15:更新后续作业的状态,进入运行状态,所述后续作业的状态是作业流结束判定的一个参照条件;
步骤4.16:逻辑调度模块通知作业分发模块有待处理事件,作业分发模块根据事件分发作业到相应的执行代理终端模块进行处理。
7.根据权利要求2所述的基于作业流的分布式调度系统的应用方法,其特征在于,所述步骤5包括:
步骤5.1:获取控制接口,对作业流进行查询、激活与冻结、启动与停止、暂停与恢复操作,或者对作业流内作业进行启动与停止操作;其中获取控制接口的方法包括:系统管理UI、系统控制台命令、网络SOAP服务;
步骤5.2:步骤5.1中任一种控制方式,都能够将控制请求发送至系统的服务接口模块;
步骤5.3:服务接口模块接收到服务请求,根据服务请求所调用的作业流组织相应的请求消息,传递给逻辑调度模块,同时等待逻辑调度模块的处理结果,若等待超时,超时后逻辑调度模块返回的调用超时结果将被丢弃;
步骤5.4:逻辑调度模块根据作业流是否存在、作业流当前状态是否符合控制条件来判断触发请求是否有效,其中控制条件如下:
A:当前作业流激活状态无法再次激活,当前冻结状态无法再次冻结;
B:当前作业流运行或暂停状态无法再次触发运行;
C:已经结束或处于初始状态的作业流无法停止;
D:只有处于运行状态的作业流才能被暂停,只有处于被暂停状态的作业流才能够被恢复;
E:处于运行状态的作业流,只有失败状态的作业可以被人工触发运行;而处于结束状态的作业流,其中任意一个作业能够被触发,整个作业流能够继续执行;
F:只有处于运行状态的作业才能够被停止;
步骤5.5:通过状态判定,逻辑调度模块则对指定的作业流进行更新,若是触发作业流或作业,则会创建作业调度事件,并通知分发;
步骤5.6:逻辑调度模块返回控制结果,再由服务接口模块将结果返回给调用方。
8.根据权利要求2所述的基于作业流的分布式调度系统的方法,其特征在于,所述步骤6包括:
步骤6.1:作业分发模块根据触发检查是否有待处理事件,其中所述触发包括逻辑调度模块发出的通知消息触发和作业分发模块的定时触发;
步骤6.2:若有待处理事件,则作业分发模块取出所有待处理事件,若没有待处理事件,则等待下次检查;
步骤6.3:取出所有待处理事件后更新这些事件为已读取状态,防止再次检索重复处理;
步骤6.4:根据事件中的信息,将事件交由分发线程池进行作业分发;
步骤6.5:若作业分发失败,则检查是否超过设定的重发限制,所述重发限制是为防止故障事件被永远地重发下去而占用分发线程使正常事件得不到及时处理;
步骤6.6:当重发已达到限制次数时,则标记发送失败,不再进行重发;当未达到重发限制时,则继续进行重发直到发送成功或达到重发限制;若发送成功,则标记事件已发送状态,防止被再次发送;
步骤6.7:执行代理终端模块接收到作业后,检查所述作业是否有效,若作业指令异常,则返回相应的作业错误应答;
步骤6.9:通过所述检查后,执行代理终端模块启动作业执行进程并等待执行结束将结果返回。

说明书全文

基于作业流的分布式调度系统及应用方法

技术领域

[0001] 本发明涉及作业调度领域,具体地,涉及基于作业流的分布式调度系统及方法。

背景技术

[0002] 现有关于作业调度系统的方案大多基于Quartz构建,最主要特征有:作业调度与执行糅合,虽然调度效率较高,但加重了系统负担,在作业并发量较大时其响应与调度效率受到较大限制。以作业为调度单元进行调度,一个作业一个配置,无法复用。作业流由作业间依赖关系串联而成,没有独立属性,不易对作业流全局展现及控制。虽然可以灵活地对作业流中每个作业进行干预,但是缺少对作业流全局的控制,使得作业流调度容易出现逻辑混乱。

发明内容

[0003] 针对现有技术中的缺陷,本发明的目的是提供一种基于作业流的分布式调度系统及方法。
[0004] 根据本发明提供的一种基于作业流的分布式调度系统,包括:逻辑调度模、触发器管理模块、数据库交互模块、服务接口模块、作业分发模块、作业应答模块、作业流资源库模块以及执行代理终端模块;
[0005] 所述逻辑调度模块用于完成作业流及作业的逻辑处理和调度;
[0006] -当一个作业流的触发器触发时,所述逻辑调度模块收到触发消息,并判断此时所述作业流的业务逻辑是否符合触发条件;
[0007] -当一个作业执行结果被传递到所述逻辑调度模块时,所述逻辑调度模块根据作业结果及作业流属性判定作业流结束,或者调度作业流中所述作业的后续作业;
[0008] -当人工干预触发作业流或作业操作时,请求被传递到所述逻辑调度模块,所述逻辑调度模块根据作业流属性,判定所述请求是否有效,若有效则触发作业流或作业操作;
[0009] 所述触发器管理模块用于完成作业流的触发器新增、触发和删除,所述触发器管理模块是基于作业流的调度系统并根据作业流进行配置,其中,一个作业流能够对应多个触发器,且所述触发器为时间条件的配置;
[0010] -当时间条件满足触发器预设条件时,触发器触发作业流调度;
[0011] -当人工触发作业流时,调度模块为请求创建临时触发器进行调度,在执行结束后删除该触发器;
[0012] 所述数据库交互模块用于完成系统与数据库之间数据交互,其中所述数据库中存储有关于作业流属性配置的全部信息;
[0013] -当系统启动时从数据库读取所述属性配置的信息;
[0014] -当系统调度运行时,所述数据库实时存储关于作业流及作业的各种属性、状态信息,且保持所述属性信息与数据库中一致;
[0015] 所述服务接口模块用于提供对作业流、作业进行控制的对外服务接口,通过标准的SOAP协议调用,并且提供对所述作业流的人工干预和查询;
[0016] 所述作业分发模块用于完成作业进入调度进程后的分发,根据所述作业的配置属性,将所述作业执行指令分发到特定的执行终端Agent,同时发送消息以判断各个执行代理终端模块的状态,且所述作业分发模块与Agent所处的物理位置操作系统类型无关;
[0017] 所述作业应答模块用于完成对作业执行代理终端模块执行作业结果的接收,以及接收应答后对作业状态属性信息的更新;
[0018] 所述作业流资源库模块用于存储从数据库读取的作业流配置属性,包括作业流的基础配置以及其中每个作业的基本配置信息,并在系统运行过程中对所述配置属性进行实时更新;
[0019] 所述执行代理终端模块用于接收调度分发模块发送的作业执行请求,执行作业命令及将结果返回给服务端的应答模块,整个系统包含多个执行代理终端模块,且所述多个执行代理终端模块能够运行在不同的物理节点上。
[0020] 根据本发明提供的一种应用上述的基于作业流的分布式调度系统的方法,包括如下步骤:
[0021] 步骤1:启动系统服务端;
[0022] 步骤2:在系统服务端上申请创建作业流;
[0023] 步骤3:根据创建的作业流进行触发;
[0024] 步骤4:作业流触发成功后进入作业应答,执行作业;
[0025] 步骤5:对作业流创建人工控制服务;
[0026] 步骤6:系统执行完作业后,进行作业分发。
[0027] 优选地,所述步骤1包括:
[0028] 步骤1.1:在系统中加载资源配置,包括数据库资源、对外服务接口、队列资源、日志以及控制时间间隔设置;
[0029] 步骤1.2:根据所述配置建立数据库连接,完成数据库交互模块初始化;
[0030] 步骤1.3:启动逻辑调度模块,完成请求队列初始化;
[0031] 步骤1.4:根据所述配置读取作业流配置,调用数据库交互模块,读取数据库中已配置的作业流,同时读取各作业流内作业信息,保存到作业流资源库中;
[0032] 步骤1.5:启动触发器管理模块,根据作业流资源库中作业流触发配置,为作业流创建触发器并进行管理,当触发器被触发时触发作业流,向调度模块队列发调度请求;
[0033] 步骤1.6:启动服务接口模块,启动web服务,使用户能够通过网络调用、管理UI、命令行并对作业流及作业进行查询、控制;
[0034] 步骤1.7:启动作业分发模块,包括启动接收调度模块通知作业分发线程、定时检测作业分发事件线程、执行终端状态检测线程、作业分发线程池;
[0035] 步骤1.8:启动作业应答模块,启动接收执行终端作业结果的服务以及启动检测事件状态通知调度模块的线程;
[0036] 其中所述步骤1.1至步骤1.8中任一模块启动失败,则记录失败日志。
[0037] 优选地,所述步骤2包括:
[0038] 步骤2.1:用户经过授权登入系统,申请创建作业流,系统检验用户权限,通过则授权作业流创建;
[0039] 步骤2.2:根据用户创建的作业流,配置所述作业流的全局属性,重点配置作业流触发策略;
[0040] 步骤2.3:查看作业模版,是否有需要的作业,并添加到作业流中;
[0041] 步骤2.4:若需求的作业在作业模版中不存在,则进入新建作业模版子流程;
[0042] 步骤2.5:新建作业模版时要选择执行代理Agent,若没有需求的Agent,则进入新增Agent子流程;
[0043] 步骤2.6:新增Agent时,将Agent划分到某个应用系统,选择已划分的所述应用系统,若没有合适的应用系统,则进入新增应用系统子流程;
[0044] 步骤2.7:根据应用系统基本信息,包括系统代号、负责人、基本功能说明创建新增应用系统,所述应用系统根据用户需要对Agent进行划分;
[0045] 步骤2.8:作业模版提交成功后编辑作业流依次选择需要的作业模版,若没有合适模板,则新增模版;
[0046] 步骤2.9:选择所有需要的作业模版后,对这些模版配置仅属于所述作业流的属性,其中所述属性包括:作业前后依赖关系、执行超时、报警相关;
[0047] 步骤2.10:编辑作业流结束后用户能够通过作业流逻辑图形展示来检查作业流是否配置正确,确认正确后需要用户激活作业流,激活作业流则该作业流被加载到系统作业流资源库,并进入自动调度。
[0048] 优选地,所述步骤3包括:
[0049] 步骤3.1:触发器管理模块中作业流的触发器被触发,其中所述触发包括作业流定时配置的触发器被触发和人工触发时临时创建的触发器即时触发;
[0050] 步骤3.2:根据触发器关联的作业流,为作业流创建触发请求,所述请求被发送给调度模块;
[0051] 步骤3.3:根据触发请求中关键字,从作业流资源库查找是否存在该作业流;
[0052] 步骤3.4:根据作业流资源库中作业流状态信息判断该作业流能否被触发,当该作业流处于运行或暂停状态时触发器不能被触发;
[0053] 步骤3.5:当作业流未存在于作业流资源库中或该作业流不能被触发时,则触发失败;当作业流未在作业流资源库中找到的情况出现于人工触发新增的作业流时,该作业流未激活,没有被加载到作业流资源库中;
[0054] 步骤3.6:对触发作业流前状态进行备份,若触发失能够恢复到之前状态;
[0055] 步骤3.7:重置作业流内所有作业,将作业流内作业历史状态、关联的事件置为初始状态;
[0056] 步骤3.8:从作业流资源库获取该作业流的初始作业,所述初始作业包括普通的作业和特殊的Box作业,所述Box作业能够包含多个作业流分支,用于作业有多个依赖作业的情况;若是Box作业,则需获取Box内每个分支流的初始作业;
[0057] 步骤3.9:为获取到的初始作业创建事件,所述事件用于作业后续的分发、执行及应答处理;
[0058] 步骤3.10:若步骤3.7、步骤3.8、骤3.9失败时,则恢复步骤3.6中备份的作业流状态;
[0059] 步骤3.11:当作业流触发失败且所述作业流中作业均被重置时,记录错误,并返回错误;
[0060] 步骤3.12:作业流触发成功后,通知分发模块分发作业。
[0061] 优选地,所述步骤4包括:
[0062] 步骤4.1:当执行代理终端模块Agent执行作业后,将执行结果返回给作业应答模块;
[0063] 步骤4.2:作业应答模块接收到Agent的作业执行结果,并从所述结果消息中获取关联的事件,更新事件状态;
[0064] 步骤4.3:当事件状态变更完成后,作业应答模块通知逻辑调度模块作业执行结束;
[0065] 步骤4.4:逻辑调度模块收到通知后,从通知消息中获取关联的作业流和作业;
[0066] 步骤4.5:从作业流资源库查找是否存在通知消息中的作业流;
[0067] 步骤4.6:从作业流资源库查找是否存在通知消息中的作业;
[0068] 步骤4.7:若找到关联的作业流及作业,从作业获取关联的事件与通知消息中的事件进行比较;
[0069] 步骤4.8:通知消息中的作业流或者作业没有在作业流资源库中存在时,或者作业流资源库中作业关联事件与通知消息在事件不匹配时,判定该事件以及作业执行结果为过时数据,该事件被丢弃,作业执行结果被忽略;
[0070] 步骤4.9:当作业流、作业、事件均匹配时,更新作业状态信息;
[0071] 步骤4.10:记录作业执行历史记录;
[0072] 步骤4.11:当且仅当作业执行结果为失败且作业流配置为该作业失败立即告警暂停时,立即暂停该作业流,标记作业失败并报警;
[0073] 步骤4.12:当作业执行结束且无需报警,从作业流资源库查找该作业流中当前作业是否有后续作业需要调度。当前作业包含在Box中需要判断该Box作业的是否结束及结束状态;若后续作业为Box作业,需要获取该Box的起始作业列表作为后续作业;
[0074] 步骤4.13:当无法找到后续作业时,检查作业流中所有作业,有任意作业处于中间状态没有结束时不能判定结束,此时该作业流需要等待所有分支均为初始化状态即无需调度的分支或结束没有后续的状态时才能判定结束;
[0075] 步骤4.14:当前作业无后续作业,且该作业流没有其他作业处于中间状态时,判定作业流已经执行结束,根据作业流中作业配置判定作业流的执行结果是成功或者失败;若有后续作业需要调度,根据获取到的后续作业或作业列表,为后续作业创建事件;
[0076] 步骤4.15:更新后续作业的状态,进入运行状态,所述作业的状态是作业流结束判定的一个参照条件。
[0077] 步骤4.16:逻辑调度模块通知作业分发模块有待处理事件,分发模块根据事件分发作业到相应的Agent进行处理。
[0078] 优选地,所述步骤5包括:
[0079] 步骤5.1:获取控制接口,对作业流进行查询、激活与冻结、启动与停止、暂停与恢复操作,或者对作业流内作业进行启动与停止操作;其中获取控制接口的方法包括:包括系统管理UI、系统控制台命令、网络SOAP服务;
[0080] 步骤5.2:用户根据步骤5.1任选择一种控制方式,将控制请求都会发送到系统的服务接口模块;
[0081] 步骤5.3:服务接口模块接收到服务请求,根据调用的方法组织相应的请求消息,传递给逻辑调度模块,同时等待逻辑调度模块的处理结果,若等待超时,超时后调度模块返回的调用超时结果将被丢弃;
[0082] 步骤5.4:逻辑调度模块根据作业流是否存在、作业流当前状态是否符合控制条件来判断请求是否有效,其中控制条件如下:
[0083] A:当前作业流激活状态无法再次激活,当前冻结状态无法再次冻结;
[0084] B:当前作业流运行或暂停状态无法再次触发运行;
[0085] C:已经结束或处于初始状态的作业流无法停止;
[0086] D:只有处于运行状态的作业流可以被暂停,只有处于被暂停状态的作业流可以被恢复;
[0087] E:处于运行状态的作业流,只有失败状态的作业可以被人工触发运行;而处于结束状态的作业流,其中任意一个作业可以被触发,整个作业流可以继续执行;
[0088] F:只有处于运行状态的作业可以被停止;
[0089] 步骤5.5:通过状态判定,调度模块则对指定的作业流进行更新,若是触发作业流或作业,则会创建作业调度事件,并通知分发;
[0090] 步骤5.6:调度模块返回控制结果,再由服务接口模块将结果返回给调用方。
[0091] 优选地,所述步骤6包括:
[0092] 步骤6.1:作业分发模块根据触发检查是否有待处理事件,其中所述触发包括调度模块发出的通知消息触发和作业分发模块的定时触发;
[0093] 步骤6.2:若有待处理事件,则分发模块取出所有待处理事件,若没有待处理事件,则等待下次检查;
[0094] 步骤6.3:取出所有待处理事件后更新这些事件为已读取状态,防止再次检索重复处理;
[0095] 步骤6.4:根据事件包含信息,将事件交由分发线程池进行作业分发;
[0096] 步骤6.5:若发送失败,则检查是否超过设定的重发限制,所述重发限制是为防止故障事件被永远地重发下去而占用分发线程使正常事件得不到及时处理;
[0097] 步骤6.6:当重发已达到限制次数时,则标记发送失败,不再进行重发;当未达到重发限制时,则继续进行重发知道发送成功或达到重发限制;若发送成功,则标记事件已发送状态,防止被再次发送;
[0098] 步骤6.7:Agent接收到作业后,检查所述作业是否有效,若作业指令异常,则返回相应的作业错误应答;
[0099] 步骤6.9:通过所述检查后,Agent启动作业执行进程并等待执行结束将结果返回。
[0100] 与现有技术相比,本发明具有如下的有益效果:
[0101] 1、本发明中提供的基于作业流的分布式调度系统及方法,将调度逻辑处理与作业的具体执行分开到不同的系统,利用分布式系统,作业流中各作业步骤可以分布在不同的执行端上运行,分担了单点的作业执行压,大大提高了作业调度与执行效率。
[0102] 2、本发明中作业流与作业模版结合,作业流的配置更灵活,作业可复制,节省了作业流的配置时间,可大大提高作业流配置部署效率。
[0103] 3、本发明中以作业流为对象进行配置和调度,内部以作业为单元,作业作为作业流的一个步骤,并增加了对作业流的全局展现与控制,能更全面的控制作业流调度逻辑,不会导致作业流逻辑混乱。附图说明
[0104] 通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0105] 图1为本发明提供的基于作业流的分布式调度系统模块划分方框图
[0106] 图2为本发明提供的系统服务端启动流程图
[0107] 图3为本发明提供的作业流申请流程图;
[0108] 图4为本发明提供的作业流触发流程图;
[0109] 图5为本发明提供的作业应答后逻辑流程图;
[0110] 图6为本发明提供的人工操作控制作业流流程图;
[0111] 图7为本发明提供的作业分发与执行流程图。

具体实施方式

[0112] 下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
[0113] 本发明提供的一种基于作业流的分布式调度系统,包括:逻辑调度模块、触发器管理模块、数据库交互模块、服务接口模块、作业分发模块、作业应答模块、作业流资源库模块以及执行代理终端模块;
[0114] 具体地,所述逻辑调度模块可以包含多个执行终端,根据终端的功能不同,用户可以分割成多个应用系统。执行终端Agent必须包含在一个应用系统中,一个应用系统可以包含多个执行终端Agent,一个执行终端Agent上可以同时执行多个作业。
[0115] 更进一步地,所述作业包括以名称标记、作业类型、具体的执行指令或脚本、依赖的前置作业、依赖的类型、对应的作业流、执行的Agent、超时设置、报警设置等描述一个具体地执行步骤;具体地,所述作业以模版形式存在,在配置作业流时选择模版进行实例化后作为作业流的步骤,同一个作业模版可以在不同的作业流中,也可以在一个作业流中出现多次,其中实例化后的作业可配置特有的实例属性,通过作业流属性及前置依赖属性串联成作业流逻辑。
[0116] 更具体地,所述作业流为作业系统调度的基本对象,所述作业流包含了用于调度的基本信息:调度时间和调度状态设定;所述调度状态设定用于控制作业流是否被自动调度,调度时间设定用于设定作业流的触发机制;所述作业流至少包含一个作业的实例才能被触发,具有多个作业的作业流内部包含的作业可以在系统不同的Agent中得到执行。
[0117] 所述逻辑调度模块用于完成作业流及作业的逻辑处理和调度;
[0118] -当一个作业流的触发器触发时,所述逻辑调度模块收到触发消息,并判断此时所述作业流的业务逻辑是否符合触发条件;
[0119] -当一个作业执行结果被传递到所述逻辑调度模块时,所述逻辑调度模块根据作业结果及作业流属性判定作业流结束,或者调度作业流中所述作业的后续作业;
[0120] -当人工干预触发作业流或作业操作时,请求被传递到所述逻辑调度模块,所述逻辑调度模块根据作业流属性,判定所述请求是否有效,若有效则触发作业流或作业操作;
[0121] 所述触发器管理模块用于完成作业流的触发器新增、触发和删除,所述触发器管理模块是基于作业流的调度系统并根据作业流进行配置,其中,一个作业流能够对应多个触发器,且所述触发器为时间条件的配置;
[0122] -当时间条件满足触发器预设条件时,触发器触发作业流调度;
[0123] -当人工触发作业流时,调度模块为请求创建临时触发器进行调度,在执行结束后删除该触发器;
[0124] 所述数据库交互模块用于完成系统与数据库之间数据交互,其中所述数据库中存储有关于作业流属性配置的全部信息;
[0125] -当系统启动时从数据库读取所述属性配置的信息;
[0126] -当系统调度运行时,所述数据库实时存储关于作业流及作业的各种属性、状态信息,且保持所述属性信息与数据库中一致;
[0127] 所述服务接口模块用于提供对作业流、作业进行控制的对外服务接口,通过标准的SOAP协议调用,并且提供对所述作业流的人工干预和查询;
[0128] 所述作业分发模块用于完成作业进入调度进程后的分发,根据所述作业的配置属性,将所述作业执行指令分发到特定的执行终端Agent,同时发送消息以判断各个执行代理终端模块的状态,且所述作业分发模块与Agent所处的物理位置、操作系统类型无关;
[0129] 所述作业应答模块用于完成对作业执行代理终端模块执行作业结果的接收,以及接收应答后对作业状态属性信息的更新;
[0130] 所述作业流资源库模块用于存储从数据库读取的作业流配置属性,包括作业流的基础配置以及其中每个作业的基本配置信息,并在系统运行过程中对所述配置属性进行实时更新;
[0131] 所述执行代理终端模块用于接收调度分发模块发送的作业执行请求,执行作业命令及将结果返回给服务端的应答模块,整个系统包含多个执行代理终端模块,且所述多个执行代理终端模块能够运行在不同的物理节点上。
[0132] 一种应用上述的基于作业流的分布式调度系统的方法,包括如下步骤:
[0133] 步骤1:启动系统服务端;
[0134] 步骤2:在系统服务端上申请创建作业流;
[0135] 步骤3:根据创建的作业流进行触发;
[0136] 步骤4:作业流触发成功后进入作业应答,执行作业;
[0137] 步骤5:对作业流创建人工控制服务;
[0138] 步骤6:系统执行完作业后,进行作业分发。
[0139] 优选地,所述步骤1包括:
[0140] 步骤1.1:在系统中加载资源配置,包括数据库资源、对外服务接口、队列资源、日志以及控制时间间隔设置;
[0141] 步骤1.2:根据所述配置建立数据库连接,完成数据库交互模块初始化;
[0142] 步骤1.3:启动逻辑调度模块,完成请求队列初始化;
[0143] 步骤1.4:根据所述配置读取作业流配置,调用数据库交互模块,读取数据库中已配置的作业流,同时读取各作业流内作业信息,保存到作业流资源库中;
[0144] 步骤1.5:启动触发器管理模块,根据作业流资源库中作业流触发配置,为作业流创建触发器并进行管理,当触发器被触发时触发作业流,向调度模块队列发调度请求;
[0145] 步骤1.6:启动服务接口模块,启动web服务,使用户能够通过网络调用、管理UI、命令行并对作业流及作业进行查询、控制;
[0146] 步骤1.7:启动作业分发模块,包括启动接收调度模块通知作业分发线程、定时检测作业分发事件线程、执行终端状态检测线程、作业分发线程池;
[0147] 步骤1.8:启动作业应答模块,启动接收执行终端作业结果的服务以及启动检测事件状态通知调度模块的线程;
[0148] 其中所述步骤1.1至步骤1.8中任一模块启动失败,则记录失败日志。
[0149] 优选地,所述步骤2包括:
[0150] 步骤2.1:用户经过授权登入系统,申请创建作业流,系统检验用户权限,通过则授权作业流创建;
[0151] 步骤2.2:根据用户创建的作业流,配置所述作业流的全局属性,重点配置作业流触发策略;
[0152] 步骤2.3:查看作业模版,是否有需要的作业,并添加到作业流中;
[0153] 步骤2.4:若需求的作业在作业模版中不存在,则进入新建作业模版子流程;
[0154] 步骤2.5:新建作业模版时要选择执行代理Agent,若没有需求的Agent,则进入新增Agent子流程;
[0155] 步骤2.6:新增Agent时,将Agent划分到某个应用系统,选择已划分的所述应用系统,若没有合适的应用系统,则进入新增应用系统子流程;
[0156] 步骤2.7:根据应用系统基本信息,包括系统代号、负责人、基本功能说明创建新增应用系统,所述应用系统根据用户需要对Agent进行划分;
[0157] 步骤2.8:作业模版提交成功后编辑作业流依次选择需要的作业模版,若没有合适模板,则新增模版;
[0158] 步骤2.9:选择所有需要的作业模版后,对这些模版配置仅属于所述作业流的属性,其中所述属性包括:作业前后依赖关系、执行超时、报警相关;
[0159] 步骤2.10:编辑作业流结束后用户能够通过作业流逻辑图形展示来检查作业流是否配置正确,确认正确后需要用户激活作业流,激活作业流则该作业流被加载到系统作业流资源库,并进入自动调度。
[0160] 优选地,所述步骤3包括:
[0161] 步骤3.1:触发器管理模块中作业流的触发器被触发,其中所述触发包括作业流定时配置的触发器被触发和人工触发时临时创建的触发器即时触发;
[0162] 步骤3.2:根据触发器关联的作业流,为作业流创建触发请求,所述请求被发送给调度模块;
[0163] 步骤3.3:根据触发请求中关键字,从作业流资源库查找是否存在该作业流;
[0164] 步骤3.4:根据作业流资源库中作业流状态信息判断该作业流能否被触发,当该作业流处于运行或暂停状态时触发器不能被触发;
[0165] 步骤3.5:当作业流未存在于作业流资源库中或该作业流不能被触发时,则触发失败;当作业流未在作业流资源库中找到的情况出现于人工触发新增的作业流时,该作业流未激活,没有被加载到作业流资源库中;
[0166] 步骤3.6:对触发作业流前状态进行备份,若触发失能够恢复到之前状态;
[0167] 步骤3.7:重置作业流内所有作业,将作业流内作业历史状态、关联的事件置为初始状态;
[0168] 步骤3.8:从作业流资源库获取该作业流的初始作业,所述初始作业包括普通的作业和特殊的Box作业,所述Box作业能够包含多个作业流分支,用于作业有多个依赖作业的情况;若是Box作业,则需获取Box内每个分支流的初始作业;
[0169] 步骤3.9:为获取到的初始作业创建事件,所述事件用于作业后续的分发、执行及应答处理;
[0170] 步骤3.10:若步骤3.7、步骤3.8、骤3.9失败时,则恢复步骤3.6中备份的作业流状态;
[0171] 步骤3.11:当作业流触发失败且所述作业流中作业均被重置时,记录错误,并返回错误;
[0172] 步骤3.12:作业流触发成功后,通知分发模块分发作业。
[0173] 优选地,所述步骤4包括:
[0174] 步骤4.1:当执行代理终端模块Agent执行作业后,将执行结果返回给作业应答模块;
[0175] 步骤4.2:作业应答模块接收到Agent的作业执行结果,并从所述结果消息中获取关联的事件,更新事件状态;
[0176] 步骤4.3:当事件状态变更完成后,作业应答模块通知逻辑调度模块作业执行结束;
[0177] 具体地,所述事件是系统的调度过程,每一次的作业调度都会产生一个事件,事件包含了作业调度的整个过程,通过查看事件就能够看到作业调度的进度;
[0178] 步骤4.4:逻辑调度模块收到通知后,从通知消息中获取关联的作业流和作业;
[0179] 步骤4.5:从作业流资源库查找是否存在通知消息中的作业流;
[0180] 步骤4.6:从作业流资源库查找是否存在通知消息中的作业;
[0181] 步骤4.7:若找到关联的作业流及作业,从作业获取关联的事件与通知消息中的事件进行比较;
[0182] 步骤4.8:通知消息中的作业流或者作业没有在作业流资源库中存在时,或者作业流资源库中作业关联事件与通知消息在事件不匹配时,判定该事件以及作业执行结果为过时数据,该事件被丢弃,作业执行结果被忽略;
[0183] 步骤4.9:当作业流、作业、事件均匹配时,更新作业状态信息;
[0184] 步骤4.10:记录作业执行历史记录;
[0185] 步骤4.11:当且仅当作业执行结果为失败且作业流配置为该作业失败立即告警暂停时,立即暂停该作业流,标记作业失败并报警;
[0186] 步骤4.12:当作业执行结束且无需报警,从作业流资源库查找该作业流中当前作业是否有后续作业需要调度。当前作业包含在Box中需要判断该Box作业的是否结束及结束状态;若后续作业为Box作业,需要获取该Box的起始作业列表作为后续作业;
[0187] 步骤4.13:当无法找到后续作业时,检查作业流中所有作业,有任意作业处于中间状态没有结束时不能判定结束,此时该作业流需要等待所有分支均为初始化状态即无需调度的分支或结束没有后续的状态时才能判定结束;
[0188] 步骤4.14:当前作业无后续作业,且该作业流没有其他作业处于中间状态时,判定作业流已经执行结束,根据作业流中作业配置判定作业流的执行结果是成功或者失败;若有后续作业需要调度,根据获取到的后续作业或作业列表,为后续作业创建事件;
[0189] 步骤4.15:更新后续作业的状态,进入运行状态,所述作业的状态是作业流结束判定的一个参照条件。
[0190] 步骤4.16:逻辑调度模块通知作业分发模块有待处理事件,分发模块根据事件分发作业到相应的Agent进行处理。
[0191] 优选地,所述步骤5包括:
[0192] 步骤5.1:获取控制接口,对作业流进行查询、激活与冻结、启动与停止、暂停与恢复操作,或者对作业流内作业进行启动与停止操作;其中获取控制接口的方法包括:包括系统管理UI、系统控制台命令、网络SOAP服务;
[0193] 步骤5.2:用户根据步骤5.1任选择一种控制方式,将控制请求都会发送到系统的服务接口模块;
[0194] 步骤5.3:服务接口模块接收到服务请求,根据调用的方法组织相应的请求消息,传递给逻辑调度模块,同时等待逻辑调度模块的处理结果,若等待超时,超时后调度模块返回的调用超时结果将被丢弃;
[0195] 步骤5.4:逻辑调度模块根据作业流是否存在、作业流当前状态是否符合控制条件来判断请求是否有效,其中控制条件如下:
[0196] A:当前作业流激活状态无法再次激活,当前冻结状态无法再次冻结;
[0197] B:当前作业流运行或暂停状态无法再次触发运行;
[0198] C:已经结束或处于初始状态的作业流无法停止;
[0199] D:只有处于运行状态的作业流可以被暂停,只有处于被暂停状态的作业流可以被恢复;
[0200] E:处于运行状态的作业流,只有失败状态的作业可以被人工触发运行;而处于结束状态的作业流,其中任意一个作业可以被触发,整个作业流可以继续执行;
[0201] F:只有处于运行状态的作业可以被停止;
[0202] 步骤5.5:通过状态判定,调度模块则对指定的作业流进行更新,若是触发作业流或作业,则会创建作业调度事件,并通知分发;
[0203] 步骤5.6:调度模块返回控制结果,再由服务接口模块将结果返回给调用方。
[0204] 优选地,所述步骤6包括:
[0205] 步骤6.1:作业分发模块根据触发检查是否有待处理事件,其中所述触发包括调度模块发出的通知消息触发和作业分发模块的定时触发;
[0206] 步骤6.2:若有待处理事件,则分发模块取出所有待处理事件,若没有待处理事件,则等待下次检查;
[0207] 步骤6.3:取出所有待处理事件后更新这些事件为已读取状态,防止再次检索重复处理;
[0208] 步骤6.4:根据事件包含信息,将事件交由分发线程池进行作业分发;
[0209] 步骤6.5:若发送失败,则检查是否超过设定的重发限制,所述重发限制是为防止故障事件被永远地重发下去而占用分发线程使正常事件得不到及时处理;
[0210] 步骤6.6:当重发已达到限制次数时,则标记发送失败,不再进行重发;当未达到重发限制时,则继续进行重发知道发送成功或达到重发限制;若发送成功,则标记事件已发送状态,防止被再次发送;
[0211] 步骤6.7:Agent接收到作业后,检查所述作业是否有效,若作业指令异常,则返回相应的作业错误应答;
[0212] 步骤6.9:通过所述检查后,Agent启动作业执行进程并等待执行结束将结果返回。
[0213] 以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈