一种分布式调度系统架构和微服务工作流调度方法

文档序号:135162 发布日期:2021-10-22 浏览:23次 >En<

阅读说明:本技术 一种分布式调度系统架构和微服务工作流调度方法 (Distributed scheduling system architecture and micro-service workflow scheduling method ) 是由 许健 齐海乐 宋茹 张艳丽 于 2021-07-26 设计创作,主要内容包括:本发明涉及一种分布式调度系统架构和微服务工作流调度方法,属于计算机领域。本发明采用分布式架构设计微服务调度的控制中心,将控制逻辑与业务逻辑分离,从试验结果来看,将业务逻辑分离出去后,并且采用异步任务的方式,这时占用执行线程的时间会大幅缩短,微服务响应速度大幅提升。采用分布式锁实现后台微服务工作流的有序调度和容错,在相同的线程池数量下,能够明显提高调度中心的并发能力和高可用能力。(The invention relates to a distributed scheduling system architecture and a micro-service workflow scheduling method, belonging to the field of computers. The invention adopts a distributed architecture to design a control center of micro-service scheduling, separates control logic from service logic, separates the service logic from the test result, and adopts an asynchronous task mode, so that the time occupied by an execution thread can be greatly shortened, and the response speed of the micro-service is greatly improved. The distributed locks are adopted to realize the ordered scheduling and fault tolerance of the background micro-service workflow, and the concurrency capability and the high availability capability of the scheduling center can be obviously improved under the condition of the same number of thread pools.)

一种分布式调度系统架构和微服务工作流调度方法

技术领域

本发明属于计算机领域,具体涉及一种基于分布式调度系统架构和微服务工作流调度方法。

背景技术

主流的微服务系统通过微服务网关产品实现对微服务应用的管控治理。微服务网关负责处理微服务模块间的接口服务调用,会涉及到安全、路由、代理、监控、日志、限流等调度工作,形成一个中心化的调度系统架构。对于中心化架构,所有的API接口服务都会在微服务网关中进行注册,相当于微服务网关基于原始的业务服务API接口做了一层封装,然后发布代理服务。因此对于所有微服务接口服务的调用,都可以在微服务网关中进行拦截。微服务网关实现的安全、日志、限流、路由等调度能力,全部都以这个拦截为基础。同时各个能力的实现又可以配置为拦截过程中的各个独立插件。

中心化的微服务网关作为所有服务的API入口,随着业务规模的扩大,容易遭遇性能瓶颈。每个用户请求访问后台应用时只要涉及服务之间的交互,则都会从微服务网关进行路由,服务上量以后,内部服务之间的交互调用大量叠加在微服务网关上,会造成微服务网关过负载、后台服务响应迟缓的问题。另一个问题是一旦微服务网关出现了问题,则群龙无首,整个集群就会崩溃。

为了解决这个问题,一些解决方案在架构模式上采用了多网关实例搭配负载均衡的设计,实现负载分担和高可用,这种模式的缺点在于调度控制不够灵活。也一些微服务系统提出了去中心化架构,如SericeMesh服务化网关,通过在服务端植入控制功能的SDK包,后台服务直接进行点对点交互,实际服务调用请求和数据流并不会通过控制中心;这样的缺点是需要针对微服务设计和植入SDK包,需要较大工作量,也不适用于工作流任务的复杂调度。

发明内容

(一)要解决的技术问题

本发明要解决的技术问题是如何提供一种分布式调度系统架构和微服务工作流调度方法,以解决中心化的微服务网关容易遭遇性能瓶颈的问题。

(二)技术方案

为了解决上述技术问题,本发明提出一种分布式调度系统架构,该系统架构包括微服务注册中心eureka、调度中心、执行节点、调度数据库和业务数据库,调度中心包括多个调度节点;

调度节点、执行节点都以微服务形式进行分布式部署;各节点的角色、API地址信息都在微服务中心eureka上进行注册,并统一由微服务注册中心eureka进行维护;

调度节点包括远程调用控制器、回调控制器、管理运行时和核心调度器;其中,核心调度器基于quartz构建;管理运行时用于实现各种管理功能;调度节点与执行节点的核心通信包括远程调用(RMS)和回调(Cal lback),通过远程调用控制器向执行节点发送执行指令,通过回调控制器接收从执行节点的执行器返回的作业运行结果,复杂的作业流序列可通过作业管理组件从执行节点的作业链模块接收;

调度数据库连接调度中心,用于持久化存储调度相关的数据;

执行节点是嵌入在各个微服务中的一个执行模块,包括执行器、作业链和业务bean;执行器执行任务,并通过回调接口将结果返回调度中心;作业链组合任务的执行顺序和依赖关系,满足复杂作业调度需求;业务bean是执行节点与微服务嵌合的载体;

业务数据库连接执行节点,用于存储持久化微服务应用的服务端数据。

进一步地,所述调度节点的管理功能包括作业管理、监控管理、日志管理、配置管理、触发器管理和调度日志,并提供Restful接口和web页面动态展现。

进一步地,所述调度数据库存储的数据包括任务序列、监控数据、日志数据和配置数据。

进一步地,所述调度节点和所述执行节点间通信通过http协议的API接口进行远程调用和结果回调。

进一步地,所述调度节点通过远程调用控制器向执行节点发送同步或异步执行指令,执行器支持同步和异步两种方式执行任务,并通过回调接口将结果返回调度中心。

本发明还提供一种基于分布式调度系统架构的微服务工作流调度方法,其特征在于,该方法包括如下步骤,

S1、调度节点从任务调度线程池中获取空闲线程,通过新线程访问调度数据库以获取任务;若有任务需要执行,则进入步骤S2;否则,进入休眠状态,直至唤醒后重新开始本步骤;

S2、调度节点通过竞争获取流程锁;流程锁将分配给分布式调度中心中的最优节点,即选举成为管理节点,未获取到所锁的节点将阻塞直至获得流程锁;

S3、管理节点开启事务,从任务数据库中取出第一条任务,并判断指令类型,提交到任务队列中,以远程调用执行节点,之后管理节点删除任务数据库中这条任务,关闭事务,并记录日志信息;

S4、管理节点释放流程锁,再释放线程资源,线程回到线程池中,以供下一任务调度。

进一步地,调度节点以非阻塞的形式调用执行节点,不需要等待执行节点结果回调即可释放流程锁和线程。

进一步地,当管理节点/执行节点获取到的指令是“资源不足”时,则将阻塞的线程挂起,让资源不足挂起的流程重新唤醒执行。

进一步地,当管理节点发生故障或者因网络抖动失去心跳时,执行如下的管理节点容错流程:

(1)调度中心监听到管理节点故障事件,触发容错机制;

(2)可用的调度节点竞争容错锁,得到容错锁的调度节点成为容错管理节点,容错管理节点广播容错告警通知并记录日志信息;

(3)容错管理节点查询调用来源为原故障节点的任务实例,更新这些实例的调用来源为Nul l,并生成新的任务指令;

(4)释放容错锁,容错完成。

进一步地,容错完成之后还包括如下步骤:重新由调度中心进行线程调度,新管理节点根据监控到新提交任务的不同状态进行接管;对“正在运行”的任务监控其任务实例的状态;对“提交成功”的任务需要判断任务队列中是否已经存在,如果存在则同样监控任务实例的状态,如果不存在则重新提交任务实例。

(三)有益效果

本发明提出一种分布式调度系统架构和微服务工作流调度方法,本发明采用分布式架构设计微服务调度的控制中心,将控制逻辑与业务逻辑分离,从试验结果来看,将业务逻辑分离出去后,并且采用异步任务的方式,这时占用执行线程的时间会大幅缩短,微服务响应速度大幅提升。采用分布式锁实现后台微服务工作流的有序调度和容错,在相同的线程池数量下,能够明显提高调度中心的并发能力和高可用能力。

附图说明

图1为本发明分布式调度系统架构图;

图2为本发明分布式调度实施例流程图;

图3为本发明分布式调度容错流程图。

具体实施方式

为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

本发明的目的是提供一种微服务调度管理的分布式解决方案,通过将传统微服务网关中的控制功能单独剥离出来形成分布式控制中心,实现控制中心的去中心化和高可用能力。在分布式调度流程中,控制逻辑与业务逻辑分离,通过分布式锁设计保障控制节点的有序调度和容错,实现高度灵活性和复杂工作流任务的调度。

本发明采用分布式架构设计微服务调度的控制中心,将控制逻辑与业务逻辑分离,从试验结果来看,将业务逻辑分离出去后,并且采用异步任务的方式,这时占用执行线程的时间会大幅缩短,微服务响应速度大幅提升。采用分布式锁实现后台微服务工作流的有序调度和容错,在相同的线程池数量下,能够明显提高调度中心的并发能力和高可用能力。

本发明提出的分布式调度系统架构图如图1所示。该系统架构包括微服务注册中心eureka、调度中心、执行节点、调度数据库和业务数据库。调度中心包括多个调度节点。

整体架构建立在微服务基础之上,调度节点、执行节点都以微服务形式进行分布式部署。各节点的角色、API地址信息都在微服务中心eureka上进行注册,并统一由微服务注册中心eureka进行维护。可使服务去中心化调度,实现集群的高可用。

调度中心由多个调度节点组成。单个调度节点包括远程调用控制器、回调控制器、管理运行时和核心调度器。其中,核心调度器基于quartz构建,quartz原生支持集群,可实现复杂的任务触发和调度;

管理功能通过模块化部署的管理运行时组件实现,支持包括作业管理、监控管理、日志管理、配置管理、触发器管理、调度日志等功能,并提供Restful接口和web页面动态展现。

调度节点与执行节点的核心通信包括远程调用(RMS)和回调(Cal lback),通过远程调用控制器向执行节点发送同步或异步执行指令,通过回调控制器接收从执行节点的执行器返回的作业运行结果。复杂的作业流序列可通过作业管理组件从执行节点的作业链模块接收。

调度数据库连接调度中心,用于持久化存储调度相关的任务序列、监控数据、日志数据、配置数据等。

执行节点是嵌入在各个微服务中的一个执行模块,负责接受调度中心调度,包括执行器、作业链和业务bean。执行器支持同步和异步两种方式执行任务,并通过回调接口将结果返回调度中心;作业链可以组合任务的执行顺序和依赖关系,满足复杂作业调度需求;业务bean是执行节点与微服务嵌合的载体。

业务数据库连接执行节点,用于存储持久化微服务应用的服务端数据。

调度节点和执行节点两个模块分离,调度节点只负责调度,执行节点只负责业务,节点间通信主要通过http协议的API接口进行远程调用和结果回调,两部分可以完全解耦合,增强系统整体的扩展性。

本发明提出的分布式调度的方法如图2所示,包括下列步骤:

S1、调度节点从任务调度线程池中获取空闲线程,通过新线程访问调度数据库以获取任务。若有任务需要执行,则进入步骤S2;否则,进入休眠状态,直至唤醒后重新开始本步骤;

S2、调度节点通过竞争获取流程锁。流程锁将分配给分布式调度中心中的最优节点,即选举成为管理节点,未获取到所锁的节点将阻塞直至获得流程锁。

S3、管理节点开启事务,从任务数据库中取出第一条任务,并判断指令类型,提交到任务队列中,以远程调用执行节点。之后管理节点删除任务数据库中这条任务,关闭事务,并记录日志信息。

S4、管理节点释放流程锁,再释放线程资源,线程回到线程池中,以供下一任务调度。

在上述场景中,管理节点对执行节点发起的远程调用通常是异步的,不需要等待执行节点结果回调即可释放流程锁和线程。这种工作模式下,调度节点能以非阻塞的形式调用执行节点,可以不受任务业务逻辑带来的性能影响,提高了系统的性能。

但在某些有状态应用场景下,任务执行有限定顺序,任务执行只能通过同步方式进行,即执行节点通过同步执行器执行完任务,将结果返回给管理节点后,管理节点才能释放流程锁和线程资源。若子流程还有相互嵌套,将可能产生线程不足循环等待、死锁的问题。解决方法是增加一种资源不足的指令类型,当管理节点/执行节点获取到的指令是“资源不足”时,则将阻塞的线程挂起,这样线程池就有了新的线程,可以让资源不足挂起的流程重新唤醒执行。

调度系统中,管理节点可能发生故障或者因网络抖动失去心跳。本发明的分布式调度系统可以通过容错实现集群高可用,管理节点容错流程图如图3所示。

(1)调度中心监听到管理节点故障事件,触发容错机制。

(2)可用的调度节点竞争容错锁,得到容错锁的调度节点成为容错管理节点,容错管理节点广播容错告警通知并记录日志信息。

(3)容错管理节点查询调用来源为原故障节点的任务实例,更新这些实例的调用来源为Nul l,并生成新的任务指令。

(4)释放容错锁,容错完成。

(5)容错完成之后则重新由调度中心进行线程调度,新管理节点根据监控到新提交任务的不同状态进行接管。对“正在运行”的任务监控其任务实例的状态;对“提交成功”的任务需要判断任务队列中是否已经存在,如果存在则同样监控任务实例的状态,如果不存在则重新提交任务实例。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:任务调用方法、装置、电子设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!