流程调度方法、装置、设备、介质和程序产品制造方法及图纸

技术编号:38509896 阅读:10 留言:0更新日期:2023-08-19 16:54
本公开提供了一种流程调度方法、装置、设备、存储介质和程序产品,可以应用于云计算技术领域。该流程调度方法应用于流程调度平台中,流程调度平台用于调度分布式系统中的多个分布式实例资源,多个分布式实例至少包括第一分布式实例,该方法包括:响应于流程执行请求,获取流程上下文,其中,流程上下文包括多个流程分支,流程分支包括多个流程节点;按照流程分支编排流程上下文,得到多个流程执行模型,流程执行模型包括按照队列排布的流程任务;将流程上下文发送至第一分布式实例的本地缓存;以及按照多个流程执行模型中按照队列排布的流程任务,指导第一分布式实例获取本地缓存中的流程上下文,并使第一分布式实例基于流程节点执行流程任务。点执行流程任务。点执行流程任务。

【技术实现步骤摘要】
流程调度方法、装置、设备、介质和程序产品


[0001]本公开涉及云计算
,具体地涉及一种流程调度方法、装置、设备、介质和程序产品。

技术介绍

[0002]目前流行的流程调度执行方案并非由一个服务或系统解决,一个流程中存在多个任务,这些任务的执行可以是基于流程节点的调度由多个服务或者系统协同完成,以实现资源的充分利用。
[0003]但是,由于上述执行方案是分布式的,所以流程节点存在散点执行的情况,即流程中的任务的执行分布在不同的分布式实例中执行,导致需要大量的数据库操作和分布式锁去同步流程和流程节点的状态,保证流程的正确调度和状态的准确,如果存在大量流程执行,就会存在多次查询数据库,对数据库造成压力,并且,分布式锁同步状态造成执行效率低下易错,排查错误困难,难以充分发挥分布式技术的优势。

技术实现思路

[0004]鉴于上述问题,本公开提供了提高流程执行效率和正确度的流程调度方法、装置、设备、介质和程序产品。
[0005]根据本公开的第一个方面,提供了一种流程调度方法,所述流程调度方法应用于流程调度平台中,所述流程调度平台用于调度分布式系统中的多个分布式实例资源,所述多个分布式实例至少包括第一分布式实例,所述方法包括:响应于流程执行请求,获取流程上下文,其中,所述流程上下文包括多个流程分支,所述流程分支包括多个流程节点;按照所述流程分支编排所述流程上下文,得到多个流程执行模型,所述流程执行模型包括按照队列排布的流程任务;将所述流程上下文发送至所述第一分布式实例的本地缓存;以及按照所述多个流程执行模型中按照队列排布的流程任务,指导所述第一分布式实例获取所述本地缓存中的所述流程上下文,并使所述第一分布式实例基于所述流程节点执行流程任务。
[0006]根据本公开的实施例,其中,所述按照所述流程分支编排所述流程上下文,得到多个流程执行模型,包括:遍历所述流程上下文,判断所述流程上下文中的当前节点是否存在父节点;在所述当前节点不存在父节点的情况下,建立新队列,并将所述当前节点加入到所述新队列中;在所述当前节点存在父节点的情况下,判断所述当前节点的父节点是否具有大于一个的子节点;在所述当前节点的父节点具有大于一个的子节点的情况下,判断所述当前节点是否为所述当前节点的父节点的子节点列表中的第一个节点;在所述当前节点是所述当前节点的父节点的节点列表中的第一个节点的情况下,将所述当前节点加入到所述父节点所在的队列中;在所述当前节点不是所述当前节点的父节点的节点列表中的第一个节点的情况下,建立新队列,并将所述当前节点加入到所述新队列中,其中,一个所述队列中的节点的执行逻辑由一个线程执行,所述队列和所述线程是一一对应的,或者所述队列
和所述线程是多对一的。
[0007]根据本公开的实施例,其中,所述多个流程执行模型是以有向无环图的形式关联的。
[0008]根据本公开的实施例,其中,在所述响应于流程执行请求,获取流程上下文后,所述按照所述流程分支编排所述流程上下文,得到多个流程执行模型前,还包括:建立流程状态树,所述流程状态树与所述流程上下文存在一致的树状结构,所述流程状态树的树节点是所述流程节点的节点状态。
[0009]根据本公开的实施例,其中,所述按照所述多个流程执行模型中按照队列排布的流程任务,指导所述第一分布式实例获取所述本地缓存中的所述流程上下文,并使所述第一分布式实例基于所述流程节点执行流程任务,包括:基于所述流程任务更新所述流程状态树的节点状态;基于所述流程状态树中的所述节点状态,监控所述执行模型是否满足预设的断点条件;在所述执行模型满足预设的流程断点条件的情况下,阻塞所述执行模型;以及在触发于预设的流程恢复条件的情况下,恢复所述执行模型。
[0010]根据本公开的实施例,其中,所述基于所述流程状态树中的所述节点状态,监控所述执行模型是否满足预设的断点条件,包括:判断所述节点状态为执行中的所述流程任务是否超时;以及在所述节点状态为执行中的所述流程任务超时的情况下,判定所述执行模型满足预设的断点条件。
[0011]根据本公开的实施例,其中,所述在触发于预设的流程恢复条件的情况下,恢复所述执行模型,包括:接收执行结果,所述执行结果包括流程主键和任务主键;基于所述流程主键和所述任务主键定位所述第一分布式实例;以及基于所述执行结果恢复所述流程执行模型在所述第一分布式实例上的任务。
[0012]根据本公开的实施例,其中,所述分布式系统还包括:分布式缓存,所述基于所述流程主键和所述任务主键定位所述第一分布式实例,包括:基于所述流程主键和所述任务主键查询所述分布式缓存,得到所述第一分布式实例的地址,其中,所述第一分布式实例的地址是在开始执行所述执行模型时缓存的;所述基于所述执行结果恢复所述流程执行模型在所述第一分布式实例上的任务,包括:判断所述第一分布式实例是否可用;在所述第一分布式实例可用的情况下,判断所述第一分布式实例的本地缓存中是否存在所述流程上下文;在所述第一分布式实例的本地缓存中存在所述流程上下文,转发所述执行结果至第一分布式实例;以及基于所述执行结果恢复所述流程执行模型在所述第一分布式实例上的任务。
[0013]根据本公开的实施例,其中,所述多个分布式实例还包括第二分布式实例,在所述判断所述第一分布式实例是否可用后,或者在所述判断所述第一分布式实例的本地缓存中是否存在所述流程上下文后,所述方法还包括:在所述第一分布式实例不可用的情况下,或者在所述第一分布式实例的本地缓存中不存在所述流程上下文的情况下,获取所述流程上下文;按照所述流程分支编排所述流程上下文;将所述流程上下文发送至所述第二分布式实例的本地缓存;以及基于所述执行结果恢复所述流程执行模型在所述第二分布式实例上的任务。
[0014]根据本公开的实施例,其中,在所述接收执行结果后,还包括:基于所述流程主键和所述任务主键,将所述执行结果持久化至数据库中。
[0015]根据本公开的实施例,其中,所述流程上下文包括多个不同逻辑颗粒度的流程节点,所述不同逻辑颗粒度的流程节点的上下文关系,包括小逻辑颗粒度的流程节点嵌套大逻辑颗粒度的流程节点作为子节点。
[0016]本公开的第二个方面,提供了一种流程调度装置,所述流程调度装置应用于流程调度平台中,所述流程调度平台用于调度分布式系统中的多个分布式实例资源,所述多个分布式实例至少包括第一分布式实例,所述装置包括:流程获取模块,用于响应于流程执行请求,获取流程上下文,其中,所述流程上下文包括多个流程分支,所述流程分支包括多个流程节点;执行模型编排模块,用于按照所述流程分支编排所述流程上下文,得到多个流程执行模型,所述流程执行模型包括按照队列排布的流程任务;流程上下文发送模块,用于将所述流程上下文发送至所述第一分布式实例的本地缓存;以及调度指导模块,用于按照所述多个流程执行模型中按照队列排布的流程任务,指导所述第一分布式实例获取所述本地缓存中的所述流程上下文,并使所述第一分布式实例基于所述流程节点执行流程任务。
[0017]根据本公开的实本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种流程调度方法,所述流程调度方法应用于流程调度平台中,所述流程调度平台用于调度分布式系统中的多个分布式实例资源,所述多个分布式实例至少包括第一分布式实例,所述方法包括:响应于流程执行请求,获取流程上下文,其中,所述流程上下文包括多个流程分支,所述流程分支包括多个流程节点;按照所述流程分支编排所述流程上下文,得到多个流程执行模型,所述流程执行模型包括按照队列排布的流程任务;将所述流程上下文发送至所述第一分布式实例的本地缓存;以及按照所述多个流程执行模型中按照队列排布的流程任务,指导所述第一分布式实例获取所述本地缓存中的所述流程上下文,并使所述第一分布式实例基于所述流程节点执行流程任务。2.根据权利要求1所述的方法,其中,所述按照所述流程分支编排所述流程上下文,得到多个流程执行模型,包括:遍历所述流程上下文,判断所述流程上下文中的当前节点是否存在父节点;在所述当前节点不存在父节点的情况下,建立新队列,并将所述当前节点加入到所述新队列中;在所述当前节点存在父节点的情况下,判断所述当前节点的父节点是否具有大于一个的子节点;在所述当前节点的父节点具有大于一个的子节点的情况下,判断所述当前节点是否为所述当前节点的父节点的子节点列表中的第一个节点;在所述当前节点是所述当前节点的父节点的节点列表中的第一个节点的情况下,将所述当前节点加入到所述父节点所在的队列中;在所述当前节点不是所述当前节点的父节点的节点列表中的第一个节点的情况下,建立新队列,并将所述当前节点加入到所述新队列中,其中,一个所述队列中的节点的执行逻辑由一个线程执行,所述队列和所述线程是一一对应的,或者所述队列和所述线程是多对一的。3.根据权利要求1或2所述的方法,其中,所述多个流程执行模型是以有向无环图的形式关联的。4.根据权利要求1所述的方法,其中,在所述响应于流程执行请求,获取流程上下文后,所述按照所述流程分支编排所述流程上下文,得到多个流程执行模型前,还包括:建立流程状态树,所述流程状态树与所述流程上下文存在一致的树状结构,所述流程状态树的树节点是所述流程节点的节点状态。5.根据权利要求4所述的方法,其中,所述按照所述多个流程执行模型中按照队列排布的流程任务,指导所述第一分布式实例获取所述本地缓存中的所述流程上下文,并使所述第一分布式实例基于所述流程节点执行流程任务,包括:基于所述流程任务更新所述流程状态树的节点状态;基于所述流程状态树中的所述节点状态,监控所述执行模型是否满足预设的断点条
件;在所述执行模型满足预设的流程断点条件的情况下,阻塞所述执行模型;以及在触发于预设的流程恢复条件的情况下,恢复所述执行模型。6.根据权利要求5所述的方法,其中,所述基于所述流程状态树中的所述节点状态,监控所述执行模型是否满足预设的断点条件,包括:判断所述节点状态为执行中的所述流程任务是否超时;以及在所述节点状态为执行中的所述流程任务超时的情况下,判定所述执行模型满足预设的断点条件。7.根据权利要求5所述的方法,其中,所述在触发于预设的流程恢复条件的情况下,恢复所述执行模型,包括:接收执行结果,所述执行结果包括流程主键和任务主键;基于所述流程主键和所述任务主键定位所述第一分布式实例;以及基...

【专利技术属性】
技术研发人员:廖加嘉张泳刘伟赵振标
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1