流程调度方法、装置、设备、介质和程序产品与流程

文档序号:35137108发布日期:2023-08-16 20:27阅读:43来源:国知局
流程调度方法、装置、设备、介质和程序产品与流程

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


背景技术:

1、目前流行的流程调度执行方案并非由一个服务或系统解决,一个流程中存在多个任务,这些任务的执行可以是基于流程节点的调度由多个服务或者系统协同完成,以实现资源的充分利用。

2、但是,由于上述执行方案是分布式的,所以流程节点存在散点执行的情况,即流程中的任务的执行分布在不同的分布式实例中执行,导致需要大量的数据库操作和分布式锁去同步流程和流程节点的状态,保证流程的正确调度和状态的准确,如果存在大量流程执行,就会存在多次查询数据库,对数据库造成压力,并且,分布式锁同步状态造成执行效率低下易错,排查错误困难,难以充分发挥分布式技术的优势。


技术实现思路

1、鉴于上述问题,本公开提供了提高流程执行效率和正确度的流程调度方法、装置、设备、介质和程序产品。

2、根据本公开的第一个方面,提供了一种流程调度方法,所述流程调度方法应用于流程调度平台中,所述流程调度平台用于调度分布式系统中的多个分布式实例资源,所述多个分布式实例至少包括第一分布式实例,所述方法包括:响应于流程执行请求,获取流程上下文,其中,所述流程上下文包括多个流程分支,所述流程分支包括多个流程节点;按照所述流程分支编排所述流程上下文,得到多个流程执行模型,所述流程执行模型包括按照队列排布的流程任务;将所述流程上下文发送至所述第一分布式实例的本地缓存;以及按照所述多个流程执行模型中按照队列排布的流程任务,指导所述第一分布式实例获取所述本地缓存中的所述流程上下文,并使所述第一分布式实例基于所述流程节点执行流程任务。

3、根据本公开的实施例,其中,所述按照所述流程分支编排所述流程上下文,得到多个流程执行模型,包括:遍历所述流程上下文,判断所述流程上下文中的当前节点是否存在父节点;在所述当前节点不存在父节点的情况下,建立新队列,并将所述当前节点加入到所述新队列中;在所述当前节点存在父节点的情况下,判断所述当前节点的父节点是否具有大于一个的子节点;在所述当前节点的父节点具有大于一个的子节点的情况下,判断所述当前节点是否为所述当前节点的父节点的子节点列表中的第一个节点;在所述当前节点是所述当前节点的父节点的节点列表中的第一个节点的情况下,将所述当前节点加入到所述父节点所在的队列中;在所述当前节点不是所述当前节点的父节点的节点列表中的第一个节点的情况下,建立新队列,并将所述当前节点加入到所述新队列中,其中,一个所述队列中的节点的执行逻辑由一个线程执行,所述队列和所述线程是一一对应的,或者所述队列和所述线程是多对一的。

4、根据本公开的实施例,其中,所述多个流程执行模型是以有向无环图的形式关联的。

5、根据本公开的实施例,其中,在所述响应于流程执行请求,获取流程上下文后,所述按照所述流程分支编排所述流程上下文,得到多个流程执行模型前,还包括:建立流程状态树,所述流程状态树与所述流程上下文存在一致的树状结构,所述流程状态树的树节点是所述流程节点的节点状态。

6、根据本公开的实施例,其中,所述按照所述多个流程执行模型中按照队列排布的流程任务,指导所述第一分布式实例获取所述本地缓存中的所述流程上下文,并使所述第一分布式实例基于所述流程节点执行流程任务,包括:基于所述流程任务更新所述流程状态树的节点状态;基于所述流程状态树中的所述节点状态,监控所述执行模型是否满足预设的断点条件;在所述执行模型满足预设的流程断点条件的情况下,阻塞所述执行模型;以及在触发于预设的流程恢复条件的情况下,恢复所述执行模型。

7、根据本公开的实施例,其中,所述基于所述流程状态树中的所述节点状态,监控所述执行模型是否满足预设的断点条件,包括:判断所述节点状态为执行中的所述流程任务是否超时;以及在所述节点状态为执行中的所述流程任务超时的情况下,判定所述执行模型满足预设的断点条件。

8、根据本公开的实施例,其中,所述在触发于预设的流程恢复条件的情况下,恢复所述执行模型,包括:接收执行结果,所述执行结果包括流程主键和任务主键;基于所述流程主键和所述任务主键定位所述第一分布式实例;以及基于所述执行结果恢复所述流程执行模型在所述第一分布式实例上的任务。

9、根据本公开的实施例,其中,所述分布式系统还包括:分布式缓存,所述基于所述流程主键和所述任务主键定位所述第一分布式实例,包括:基于所述流程主键和所述任务主键查询所述分布式缓存,得到所述第一分布式实例的地址,其中,所述第一分布式实例的地址是在开始执行所述执行模型时缓存的;所述基于所述执行结果恢复所述流程执行模型在所述第一分布式实例上的任务,包括:判断所述第一分布式实例是否可用;在所述第一分布式实例可用的情况下,判断所述第一分布式实例的本地缓存中是否存在所述流程上下文;在所述第一分布式实例的本地缓存中存在所述流程上下文,转发所述执行结果至第一分布式实例;以及基于所述执行结果恢复所述流程执行模型在所述第一分布式实例上的任务。

10、根据本公开的实施例,其中,所述多个分布式实例还包括第二分布式实例,在所述判断所述第一分布式实例是否可用后,或者在所述判断所述第一分布式实例的本地缓存中是否存在所述流程上下文后,所述方法还包括:在所述第一分布式实例不可用的情况下,或者在所述第一分布式实例的本地缓存中不存在所述流程上下文的情况下,获取所述流程上下文;按照所述流程分支编排所述流程上下文;将所述流程上下文发送至所述第二分布式实例的本地缓存;以及基于所述执行结果恢复所述流程执行模型在所述第二分布式实例上的任务。

11、根据本公开的实施例,其中,在所述接收执行结果后,还包括:基于所述流程主键和所述任务主键,将所述执行结果持久化至数据库中。

12、根据本公开的实施例,其中,所述流程上下文包括多个不同逻辑颗粒度的流程节点,所述不同逻辑颗粒度的流程节点的上下文关系,包括小逻辑颗粒度的流程节点嵌套大逻辑颗粒度的流程节点作为子节点。

13、本公开的第二个方面,提供了一种流程调度装置,所述流程调度装置应用于流程调度平台中,所述流程调度平台用于调度分布式系统中的多个分布式实例资源,所述多个分布式实例至少包括第一分布式实例,所述装置包括:流程获取模块,用于响应于流程执行请求,获取流程上下文,其中,所述流程上下文包括多个流程分支,所述流程分支包括多个流程节点;执行模型编排模块,用于按照所述流程分支编排所述流程上下文,得到多个流程执行模型,所述流程执行模型包括按照队列排布的流程任务;流程上下文发送模块,用于将所述流程上下文发送至所述第一分布式实例的本地缓存;以及调度指导模块,用于按照所述多个流程执行模型中按照队列排布的流程任务,指导所述第一分布式实例获取所述本地缓存中的所述流程上下文,并使所述第一分布式实例基于所述流程节点执行流程任务。

14、根据本公开的实施例,其中,所述执行模型编排模块,用于遍历所述流程上下文,判断所述流程上下文中的当前节点是否存在父节点;在所述当前节点不存在父节点的情况下,建立新队列,并将所述当前节点加入到所述新队列中;在所述当前节点存在父节点的情况下,判断所述当前节点的父节点是否具有大于一个的子节点;在所述当前节点的父节点具有大于一个的子节点的情况下,判断所述当前节点是否为所述当前节点的父节点的子节点列表中的第一个节点;在所述当前节点是所述当前节点的父节点的节点列表中的第一个节点的情况下,将所述当前节点加入到所述父节点所在的队列中;在所述当前节点不是所述当前节点的父节点的节点列表中的第一个节点的情况下,建立新队列,并将所述当前节点加入到所述新队列中,其中,一个所述队列中的节点的执行逻辑由一个线程执行,所述队列和所述线程是一一对应的,或者所述队列和所述线程是多对一的。

15、根据本公开的实施例,其中,所述多个流程执行模型是以有向无环图的形式关联的。

16、根据本公开的实施例,其中,所述装置还包括流程状态树建立模块,用于建立流程状态树,所述流程状态树与所述流程上下文存在一致的树状结构,所述流程状态树的树节点是所述流程节点的节点状态。

17、根据本公开的实施例,其中,所述调度指导模块,用于基于所述流程任务更新所述流程状态树的节点状态;基于所述流程状态树中的所述节点状态,监控所述执行模型是否满足预设的断点条件;在所述执行模型满足预设的流程断点条件的情况下,阻塞所述执行模型;以及在触发于预设的流程恢复条件的情况下,恢复所述执行模型。

18、根据本公开的实施例,其中,所述调度指导模块,用于判断所述节点状态为执行中的所述流程任务是否超时;以及在所述节点状态为执行中的所述流程任务超时的情况下,判定所述执行模型满足预设的断点条件。

19、根据本公开的实施例,其中,所述调度指导模块,用于接收执行结果,所述执行结果包括流程主键和任务主键;基于所述流程主键和所述任务主键定位所述第一分布式实例;以及基于所述执行结果恢复所述流程执行模型在所述第一分布式实例上的任务。

20、根据本公开的实施例,其中,所述分布式系统还包括:分布式缓存,所述调度指导模块,用于基于所述流程主键和所述任务主键查询所述分布式缓存,得到所述第一分布式实例的地址,其中,所述第一分布式实例的地址是在开始执行所述执行模型时缓存的;所述基于所述执行结果恢复所述流程执行模型在所述第一分布式实例上的任务,包括:判断所述第一分布式实例是否可用;在所述第一分布式实例可用的情况下,判断所述第一分布式实例的本地缓存中是否存在所述流程上下文;在所述第一分布式实例的本地缓存中存在所述流程上下文,转发所述执行结果至第一分布式实例;以及基于所述执行结果恢复所述流程执行模型在所述第一分布式实例上的任务。

21、根据本公开的实施例,其中,所述调度指导模块,用于在所述第一分布式实例不可用的情况下,或者在所述第一分布式实例的本地缓存中不存在所述流程上下文的情况下,获取所述流程上下文;按照所述流程分支编排所述流程上下文;将所述流程上下文发送至所述第二分布式实例的本地缓存;以及基于所述执行结果恢复所述流程执行模型在所述第二分布式实例上的任务。

22、根据本公开的实施例,其中,所述调度指导模块,用于基于所述流程主键和所述任务主键,将所述执行结果持久化至数据库中。

23、根据本公开的实施例,其中,所述流程上下文包括多个不同逻辑颗粒度的流程节点,所述不同逻辑颗粒度的流程节点的上下文关系,包括小逻辑颗粒度的流程节点嵌套大逻辑颗粒度的流程节点作为子节点。

24、本公开的第三个方面,提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述流程调度方法。

25、本公开的第四个方面,还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述流程调度方法。

26、本公开的第五个方面,还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述流程调度方法。

27、在本公开的实施例中,通过将同一流程中的不同的流程节点进行编排后,放入同一分布式实例中处理,而非由不同的分布式实例执行,可以无需使用大量的数据库操作,避免多次查询数据库的操作,降低数据库的读取压力;并且,还能避免使用分布式锁去同步流程和流程的任务状态,保证高执行效率,有利于后期错误排查,充分发挥了分布式技术的优势。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1