CN112698931B - 一种云工作流分布式调度*** - Google Patents
一种云工作流分布式调度*** Download PDFInfo
- Publication number
- CN112698931B CN112698931B CN202110033497.7A CN202110033497A CN112698931B CN 112698931 B CN112698931 B CN 112698931B CN 202110033497 A CN202110033497 A CN 202110033497A CN 112698931 B CN112698931 B CN 112698931B
- Authority
- CN
- China
- Prior art keywords
- cloud workflow
- scheduler
- cloud
- workflow
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种云工作流分布式调度***。该***包括:调度器控制器、分布式云工作流调度模块和云工作流状态数据库模块。通过采用调度器控制器能够快速将云工作流进行动态分配、调度;通过采用分布式云工作流调度模块能够弹性化调整调度数量从而适应不同规模的云工作流调度,以能够在提高云资源共享效率的同时,节约用户成本。云工作流状态数据库模块用于存储云工作流状态,从而保障云工作流执行过程中出现意外时***能够对断点具有记忆性,从断点处重新执行云工作流。
Description
技术领域
本发明涉及云工作流调度领域,特别是涉及一种云工作流分布式调度***。
背景技术
随着云计算技术的发展,计算资源和数据资源可以共享和打通,用户的计算任务需求能够根据复杂业务逻辑或复杂计算任务之间的前后依赖关系进行订制,从而形成云工作流。在云计算技术刚刚兴起的时候,云工作流调度和计算是在虚拟机集群上进行的,且主要针对某一具有多个前后依赖关系计算任务的科学云工作流。随着容器技术的发展,使云计算资源的隔离性、共享性、易编排性更优越,能够支持在异构集群环境下同时执行多个云工作流。但是,现有的云工作流调度***不能够满足大规模云工作流同时到达的应用环境,其主要体现在:(1)传统的云工作流调度***大多基于虚拟机的调度,不能够满足基于容器环境的云工作流调度模式;(2)现有的基于容器的云工作流调度***为集中式调度模式,调度器能够接收的云工作流数量受调度器容量限制,不能够满足云计算时代用户同时提交大规模云工作流的需求,使调度***反应速度慢甚至瘫痪。
发明内容
为解决现有技术中存在的上述问题,本发明提供了一种云工作流分布式调度***。
为实现上述目的,本发明提供了如下方案:
一种云工作流分布式调度***,包括:调度器控制器、分布式云工作流调度模块和云工作流状态数据库模块;
所述调度器控制器的一端与用户端连接,所述调度器控制器的另一端与所述分布式云工作流调度模块的一端连接;所述分布式云工作流调度模块的另一端与所述云工作流状态数据库模块连接;
所述调度器控制器用于接收所述用户端发送的云工作流,并用于将接收的所述云工作流分配给所述分布式云工作流调度模块;所述分布式云工作流调度模块用于对接收的所述云工作流进行动态调度和分配。
优选地,所述分布式云工作流调度模块包括多个调度器;
所述调度器分别与所述调度器控制器和所述云工作流状态数据库模块连接;
所述调度器用于根据云工作流任务间的依赖关系释放已就绪的云工作流任务,并用于为所述已就绪的云工作流任务分配计算资源。
优选地,每一所述调度器均包括:监听单元、存储单元、云工作流解析单元、资源监控单元、资源分配单元、更新单元和资源计算单元;
所述监听单元、所述云工作流解析单元、所述资源监控单元、所述资源分配单元和所述更新单元均与所述存储单元连接;所述资源计算单元与所述资源分配单元连接;所述资源监控单元与所述云工作流状态数据库模块连接;所述存储单元包括:云工作流缓冲区、任务缓冲区、云工作流任务执行状态链表和就绪任务池;
所述监听单元用于接收所述调度器控制器发送的云工作流文件,并用于采用雪花算法对接收的云工作流文件中的云工作流进行编号后,将编号后的所述云工作流存入所述存储单元的云工作流缓存区中;所述云工作流解析单元读取所述云工作流缓存区中的云工作流,并解析所述云工作流文件后,将解析后的所述云工作流文件存入所述任务缓存区;所述监控单元用于接收所述调度器控制器反馈的云工作流任务执行结果,并用于将所述云工作流任务执行结果存入所述云工作流任务执行状态链表,同时,根据所述云工作流任务执行结果对所述云工作流状态数据库模块中存储的信息进行更新;所述更新单元用于根据所述云工作流任务执行状态链表中的任务状态,将所述云工作流缓存区中的可执行任务更新至所述就绪任务池;所述资源计算单元用于计算所述就绪任务池中云工作流任务所需的计算资源总和,并将所述计算资源总和发送至所述资源分配单元,并用于接收所述资源分配单元返回的云平台可提供计算资源总和,根据云工作流任务的优先级给各个云工作流任务分配计算资源后,将分配方案结果传输给所述资源分配单元。
优选地,还包括:保活信号模块、调度器压力评价模块和容器资源分配/监控模块;
所述保活信号模块、调度器压力评价模块和容器资源分配/监控模块均与所述调度器控制器和所述调度器连接;
容器资源分配/监控模块用于根据所述调度器控制器的控制信号新建调度器;所述保活信号模块用于定时向所述调度器控制器发送保活信号;所述调度器控制器用于根据所述保活信号判断所述调度器的状态;当所述调度器控制器在设定时间段内没有接到所述调度器的保活信号,则判定为所述调度器死亡,此时,所述调度器控制器杀死所述调度器,并通知容器资源分配/监控模块新建一个调度器后,对新建的所述调度器重新分配云工作流;
调度器压力评价模块用于获取调度器压力;当所述调度器压力大于第一设定压力阈值后,所述调度器控制器通知容器资源分配/监控模块新建一个调度器。
优选地,所述云工作流状态数据库模块中存储有redis数据库。
优选地,当***中的调度器的数量为零时,所述调度器控制器还用于存储从用户端接收的所述云工作流,并用于启动和注册第一个调度器后,将缓存的所述云工作流分配给所述第一个调度器。
优选地,当所述分布式云工作流调度模块中的某一所述调度器发生崩溃或所述调度器控制器检测到该调度器死亡时,云工作流调度执行路径为:
当该调度器的压力小于第二设定压力阈值,则所述调度器控制器将待分配的云工作流分配给该调度器;若该调度器的压力大于所述第一设定压力阈值,则所述调度器控制器通知容器资源分配/监控模块新建调度器,并由所述调度器控制器将云工作流分配给新建的调度器。
优选地,当所述分布式云工作流调度模块中的每一调度器的压力均大于所述第一设定压力阈值时,则所述调度器控制器通知容器资源分配/监控模块新建调度器后,所述调度器控制器根据各调度器的压力分配云工作流。
优选地,当所述分布式云工作流调度模块中存在压力小于所述第二设定压力阈值的调度器时,所述调度器控制器将压力小于所述第二设定压力阈值的调度器杀死,并将压力小于所述第二设定压力阈值的调度器调度的云工作流收回并再分配。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明提供的云工作流分布式调度***,通过采用调度器控制器接收用户端发送的云工作流,并将接收的云工作流分配给分布式云工作流调度模块,分布式云工作流调度模块对接收的所述云工作流进行动态调度和分配,以能够在提高云资源共享效率的同时,节约用户成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的云工作流分布式调度***的架构图;
图2为本发明提供的云工作流分布式调度***的内部结构图;
图3为本发明实施例提供的云工作流最优执行路径流程图;
图4为本发明实施例提供的云工作流生命周期示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种云工作流分布式调度***,以能够对云工作流进行动态分配和调整,进而在提高云资源共享效率的同时,节约用户成本。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明提供的云工作流分布式调度***的架构图,2为本发明提供的云工作流分布式调度***的内部结构图。如图1和图2所示,一种云工作流分布式调度***,包括:调度器控制器、分布式云工作流调度模块和云工作流状态数据库模块。
调度器控制器的一端与用户端连接,调度器控制器的另一端与分布式云工作流调度模块的一端连接。分布式云工作流调度模块的另一端与云工作流状态数据库模块连接。调度器控制器用于接收用户端发送的云工作流,并用于将接收的云工作流分配给分布式云工作流调度模块。分布式云工作流调度模块用于对接收的云工作流进行动态调度和分配。
其中,分布式云工作流调度模块是整个云工作流分布式调度***的核心模块,其通过JAVA语言进行实现。本发明提供的分布式云工作流调度模块主要功能包括:接收调度器控制器分配的云工作流、解析云工作流依赖关系、跟踪云工作流任务执行情况、更新可调度任务集合、对可调度任务进行资源分配并为任务生成容器资源进行执行。
为实现上述功能,本发明提供的分布式云工作流调度模块优选包括多个调度器。调度器分别与调度器控制器和云工作流状态数据库模块连接。调度器用于根据云工作流任务间的依赖关系释放已就绪的云工作流任务,并用于为已就绪的云工作流任务分配计算资源。
每一调度器均包括:监听单元、存储单元、云工作流解析单元、资源监控单元、资源分配单元、更新单元和资源计算单元。
监听单元、云工作流解析单元、资源监控单元、资源分配单元和更新单元均与存储单元连接。资源计算单元与资源分配单元连接。资源监控单元与云工作流状态数据库模块连接。存储单元包括:云工作流缓冲区、任务缓冲区、云工作流任务执行状态链表和就绪任务池。
监听单元用于接收调度器控制器发送的云工作流文件,并用于采用雪花算法对接收的云工作流文件中的云工作流进行编号后,将编号后的云工作流存入存储单元的云工作流缓存区中。云工作流解析单元读取云工作流缓存区中的云工作流,并解析云工作流文件后,将解析后的云工作流文件存入任务缓存区。监控单元用于接收调度器控制器反馈的云工作流任务执行结果,并用于将云工作流任务执行结果存入云工作流任务执行状态链表,同时,根据云工作流任务执行结果对云工作流状态数据库模块中存储的信息进行更新。更新单元用于根据云工作流任务执行状态链表中的任务状态,将云工作流缓存区中的可执行任务更新至就绪任务池。资源计算单元用于计算就绪任务池中云工作流任务所需的计算资源总和,并将计算资源总和发送至资源分配单元,并用于接收资源分配单元返回的云平台可提供计算资源总和,根据云工作流任务的优先级给各个云工作流任务分配计算资源后,将分配方案结果传输给资源分配单元。
当用户向云平台中提交的云工作流数量较少时,整个云平台的云工作流调度可以由一个调度器完成,但当云工作流数量剧增或调度器压力较大时,则需要设计调度器。所以,除上述基本功能外,本调度***还优选包括:保活信号模块、调度器压力评价模块和容器资源分配/监控模块。
保活信号模块、调度器压力评价模块和容器资源分配/监控模块均与调度器控制器和调度器连接。
容器资源分配/监控模块用于根据调度器控制器的控制信号新建调度器。保活信号模块用于定时向调度器控制器发送保活信号。调度器控制器用于根据保活信号判断调度器的状态。当调度器控制器在设定时间段内没有接到调度器的保活信号,则判定为调度器死亡,此时,调度器控制器杀死调度器,并通知容器资源分配/监控模块新建一个调度器后,对新建的调度器重新分配云工作流。
调度器压力评价模块用于获取调度器压力。当调度器压力大于第一设定压力阈值后,调度器控制器通知容器资源分配/监控模块新建一个调度器。
本发明提供的云工作流分布式调度***根据用户提交的云工作流数量多少和调度器压力的大小能够进行分布式调度器数量的弹性伸缩。云工作流分布式调度***设计保活信号模块、调度器压力评价模块和云工作流状态数据库配合工作来实现分布式调度器***的弹性伸缩。保活信号模块用于向调度器控制器汇报***中的每个调度器健康程度,使调度器控制器能够判断***中的每一个调度器都处于正常工作或死亡的状态,若调度器死亡,调度器控制器则可以重启一个调度器来替代已经死亡的调度器的工作。调度器压力评价模块用于评价每一个调度器内部容纳的云工作流数量和正在调度的任务数量负荷的大小,并执行以下功能:调度器控制器优先将新到达的云工作流分配给压力较小的调度器。若***中每一个调度器的压力值均处于高位,则调度器控制器可以启动新的调度器以分担集群中现有调度器的压力。若***中某些调度器压力过小,调度器控制器可以按照某种规则杀死调度器,使整个云平台计算资源得以节约。云工作流状态数据库用于保存云工作流的原始信息和执行状态,当调度器死亡或被控制器杀死后,其管理的云工作流再次分配给分布式调度***后,***能够保证在断点处对云工作流进行调度,节约云计算资源和调度成本。
本发明通过采用调度器控制器在大规模云工作流同时到达时,能够快速分配到分布式云工作流调度模块进行调度执行,通过分布式云工作流调度模块能够弹性化调整云工作流的具体调度路径,从而适应不同规模的云工作流调度方式。即当云工作流规模较大时增加调度器使***能够满足同时调度的需要,当云工作流规模较小时,减少调度器使云计算资源得到节约。容器资源分配/监控模块是调度***与容器编排***的接口,通过构建不同的API,使调度***能够快速适用于多种不用的集群容器编排***。云工作流状态数据库模块用于存储云工作流状态,从而保障云工作流执行过程中出现意外时***能够对断点具有记忆性,从断点处重新执行云工作流。
为了实现大规模云工作流在集群中能够进行同步调度,***基于本发明提供的调度器中以上五个功能单元,通过JAVA语言在分布式调度模块的每一个调度器内部设计了五个线程,将接收控制器分配的工作流、解析工作流依赖关系、跟踪云工作流任务执行情况、更新可调度任务集合、对可调度任务进行资源分配并为任务容器资源进行执行。
其中设置云工作流接收缓存区、云工作流任务池,云工作流任务执行状态链表,就绪云工作流任务池四个缓冲区,分别用于存放从控制器接收的待解析云工作流、解析后的具有前后依赖关系的云工作流任务、存储云工作流任务执行情况、前序任务均执行完成的就绪任务。如图2所示,具体为:
线程一:监听调度器控制器,接收调度器控制器发送的云工作流yalm文件至调度器,调度器接收云工作流后,通过雪花算法对云工作流进行编号,并将其存入云工作流接收缓存区,
线程二:云工作流解析单元从云工作流缓存区中取出云工作流,并将云工作流的yalm文件解析成以具有依赖关系的任务存入任务缓存区,
线程三:监听容器资源分配/监控模块,接收调度器控制器反馈的云工作流任务执行结果{succeed,failed},将其存入云工作流任务执行状态链表并将云工作流任务执行情况在云工作流状态数据库中进行更新。
线程四:根据任务执行状态链表中的任务succeed状态,将任务缓存区中的可执行任务更新至就绪任务池。
线程五:计算就绪任务池中云工作流任务所需计算资源总和发送至资源分配单元,接收资源分配单元返回的云平台可提供计算资源总和,并根据云工作流任务的优先级给各个任务分配计算资源,最后将分配方案结果传输给容器资源分配/监控模块。
在此过程中,调度器内五个线程没有优先级区别,根据缓存需要的任务数量或者监听端口数据情况并行执行。
需要注意的是,在上述调度的整个过程中,调度器的作用只是根据云工作流任务的前后依赖关系释放就绪云工作流任务并按照一定的算法给云工作流任务分配计算资源。并不负责集群容器的编排,这部分工作是相应的集群编排***,如kubernetes、swarm或yarn等平台负责。故***能够快速部署到现有的大多数云原生容器服务中,且能够兼容跨集群的云原生服务。对于不同的容器编排***,只需要改变资源分配与监控模块的相应API即可。
本发明提供的云工作流状态数据库模块中存储的云工作流状态数据库优选采用redis数据库。redis数据库是一种具有高速IO但数据量小的数据库模式。当调度器接收云工作流后,采用雪花算法对接收的云工作流进行唯一性编号,并在云工作流状态数据库中建立档案,云工作流状态数据库分为A和B两个部分,A库用于存储云工作流级别的信息,包括{云工作流编号。任务数。执行状态}。B库用于存储云工作流任务级别信息,包括{云工作流编号。任务编号。任务执行状态}。A库通过线程一进行实时更新,B库通过线程三实时更新。通过云工作流状态数据库,能够保证当调度器死亡或被杀死之后,控制器能够将尚未执行完成的云工作流继续分配到某调度器,且调度器能够在断点处继续调度云工作流中任务,直到整个云工作流执行完成。
基于此,本发明提供的云工作流分布式调度***的整体工作原理为:调度器控制器接收用户发送的云工作流后根据一定规则将云工作流分配到分布式云工作流调度模块中的某一个调度器进行任务分解和调度,而调度器通过与容器资源分配/监控模块读取云平台的资源数据决定如何对云工作流任务进行调度,云工作流状态数据库用户存储云工作流信息,容器资源分配/监控模块是本发明提供的云工作流分布式调度***与云平台交互的接口。
下面基于本发明提供的云工作流分布式调度***的工作原理,对每个待执行的云工作流的具体执行路径进行详细说明。
当用户向云平台提交云工作流后,根据调度器压力的不同情况,在云工作流角度将经历以下几种情况的执行路径:
(1)最优情况执行路径,如图3所示:
step1、用户提交云工作流至云平台。
step2、调度器控制器接收云工作流yaml文件按照一定规则将云工作流yaml文件分配至分布式云工作流调度模块中某个调度器。
step3、调度器接收到云工作流yaml文件后,对云工作流进行唯一性编号,并将其存储到云工作流接收缓存区和云工作流状态数据库A{云工作流编号。任务数。执行状态}中。
step4、云工作流解析器从云工作流接收缓存区中取出云工作流并将其解析为带有前后依赖关系的云工作流任务{父节点集合,子节点集合,{当前任务信息}},并将其存入云工作流任务池和云工作流状态数据库B{云工作流编号。任务编号。任务执行状态}中。
step5、任务状态跟踪单元接收云工作流任务执行结果{succeed,failed},并将其存至云工作流任务执行状态链表中,同时,在云工作流状态数据库B中进行状态更新。
step6、根据当前云工作流任务执行状态链表和云工作流任务池情况,更新就绪云工作流任务池。
step7、计算就绪任务池中所需要计算资源总量,向资源分配模块请求资源,资源分配模块通过计算云平台剩余资源总量和未来资源需求,通过某种算法向当前调度器返回分配的计算资源,此时调度器根据任务优先级给云工作流任务分配资源,并发送分配方案至云平台,从而起容器建立任务执行机制。
(2)当分布式云工作流调度模块中的某一调度器发生崩溃或调度器控制器检测到该调度器死亡时,云工作流调度执行路径为:
当该调度器的压力小于第二设定压力阈值,则调度器控制器将待分配的云工作流分配给该调度器。若该调度器的压力大于第一设定压力阈值,则调度器控制器通知容器资源分配/监控模块新建调度器,并由调度器控制器将云工作流分配给新建的调度器。
即当调度器压力过大崩溃或控制器检测到某个调度器死亡时,云工作流执行路径为:评价当前***中所有调度器压力,如果存在压力较小的调度器,则调度器控制器将未完成云工作流分配给现有调度器。若当前***中调度器压力均较大,则重启调度器,并由调度器控制器将云工作流分配给新启动的调度器。在这一执行路径中,在调度器内部的执行路径为:接收云工作流,读取云工作流达到的状态:若状态为1,则直接读取其在云工作流数据库中的执行情况,将未执行的断点任务数据取出并存储于云工作流任务缓冲区,后续执行情况同最优情况执行路径。若状态为0,则直接按照最优情况执行路径情况执行后续解析、调度方案。
(3)当分布式云工作流调度模块中的每一调度器的压力均大于第一设定压力阈值时,则调度器控制器通知容器资源分配/监控模块新建调度器后,调度器控制器根据各调度器的压力分配云工作流。
即当***中每个调度器的压力均较大时,则调度器压力评价模块通知调度器控制器再重新启动新的调度器,以便使每个调度器的压力均衡,后续调度器控制器根据***中所有调度器的压力情况分配云工作流。
(4)当分布式云工作流调度模块中存在压力小于第二设定压力阈值的调度器时,调度器控制器将压力小于第二设定压力阈值的调度器杀死,并将压力小于第二设定压力阈值的调度器调度的云工作流收回并再分配。
即当***中出现某些调度器压力较小时,则调度器压力评价模块通知调度器控制器,调度器控制器按照一定规则将某些调度器杀死,并将原来调度器调度的云工作流收回并再分配,云工作流按照情况(2)被新的调度器调度执行。
(5)当***中的调度器的数量为零时,调度器控制器还用于存储从用户端接收的云工作流,并用于启动和注册第一个调度器后,将缓存的云工作流分配给第一个调度器。
即当***冷启动时,此时***中调度器数量为0:当***接收云工作流后,调度器控制器暂存云工作流,启动并注册***中第一个调度器,然后将暂存在控制器中的云工作流分配至该调度器,按照情况(1)执行后续调度工作。
在本发明中采用的第一设定压力阈值和第二设定压力阈值均依据实际使用场景人为进行设定。
综上,云工作的全生命周期如图4所示。用户提交云工作流后,调度器控制器将云工作流分配至分布式云工作流调度***中某个调度器,在调度器内部,云工作流在云工作流缓存区处于pending状态待分解,在任务缓存区中处于decomposed状态(分解好的云工作流任务等待按照云工作流先后依赖关系被依次执行),若当前已分解好的云工作流任务的前序任务执行完成则进入就绪任务池,处于ready状态,调度器给ready状态的任务分配资源并生成容器执行任务进入running状态,当前任务执行完成后将succeed状态返回给任务执行状态链表,此时任务处于inner-finished状态,根据已完成任务情况和云工作流结构就绪任务池中的ready任务可以不断被更新和执行,直到整个云工作流的所有任务被成功执行,此时云工作流处于finished状态,完成云工作流任务的调度和执行。
综上,本发明提供的云工作流分布式调度***相对于现有技术具有以下优点:
1、能够满足在容器环境下对云工作流进行调度,且能够支持在不同容器编排环境API的云工作流调度。
2、能够在多个用户同时提交大规模云工作流时,根据用户QoS需求和云工作流任务前后依赖关系对云工作流进行调度。
3、能够在大规模云工作流同时到达时,根据调度器的压力,动态调整***内调度器数量,从而保证云工作流及时处理,又能够保证在***压力较小情况下尽可能降低***本身占用云计算资源。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (5)
1.一种云工作流分布式调度***,其特征在于,包括:调度器控制器、分布式云工作流调度模块、云工作流状态数据库模块、保活信号模块、调度器压力评价模块和容器资源分配/监控模块;
所述调度器控制器的一端与用户端连接,所述调度器控制器的另一端与所述分布式云工作流调度模块的一端连接;所述分布式云工作流调度模块的另一端与所述云工作流状态数据库模块连接;
所述调度器控制器用于接收所述用户端发送的云工作流,并用于将接收的所述云工作流分配给所述分布式云工作流调度模块;所述分布式云工作流调度模块用于对接收的所述云工作流进行动态调度和分配;
所述分布式云工作流调度模块包括多个调度器;
所述调度器分别与所述调度器控制器和所述云工作流状态数据库模块连接;
所述调度器用于根据云工作流任务间的依赖关系释放已就绪的云工作流任务,并用于为所述已就绪的云工作流任务分配计算资源;
所述保活信号模块、调度器压力评价模块和容器资源分配/监控模块均与所述调度器控制器和所述调度器连接;
容器资源分配/监控模块用于根据所述调度器控制器的控制信号新建调度器;所述保活信号模块用于定时向所述调度器控制器发送保活信号;所述调度器控制器用于根据所述保活信号判断所述调度器的状态;当所述调度器控制器在设定时间段内没有接到所述调度器的保活信号,则判定为所述调度器死亡,此时,所述调度器控制器杀死所述调度器,并通知容器资源分配/监控模块新建一个调度器后,对新建的所述调度器重新分配云工作流;
调度器压力评价模块用于获取调度器压力;当所述调度器压力大于第一设定压力阈值后,所述调度器控制器通知容器资源分配/监控模块新建一个调度器;
当所述分布式云工作流调度模块中的每一调度器的压力均大于第一设定压力阈值时,则所述调度器控制器通知容器资源分配/监控模块新建调度器后,所述调度器控制器根据各调度器的压力分配云工作流;
当所述分布式云工作流调度模块中存在压力小于第二设定压力阈值的调度器时,所述调度器控制器将压力小于所述第二设定压力阈值的调度器杀死,并将压力小于所述第二设定压力阈值的调度器调度的云工作流收回并再分配。
2.根据权利要求1所述的云工作流分布式调度***,其特征在于,每一所述调度器均包括:监听单元、存储单元、云工作流解析单元、资源监控单元、资源分配单元、更新单元和资源计算单元;
所述监听单元、所述云工作流解析单元、所述资源监控单元、所述资源分配单元和所述更新单元均与所述存储单元连接;所述资源计算单元与所述资源分配单元连接;所述资源监控单元与所述云工作流状态数据库模块连接;所述存储单元包括:云工作流缓冲区、任务缓冲区、云工作流任务执行状态链表和就绪任务池;
所述监听单元用于接收所述调度器控制器发送的云工作流文件,并用于采用雪花算法对接收的云工作流文件中的云工作流进行编号后,将编号后的所述云工作流存入所述存储单元的云工作流缓存区中;所述云工作流解析单元读取所述云工作流缓存区中的云工作流,并解析所述云工作流文件后,将解析后的所述云工作流文件存入所述任务缓冲 区;所述监控单元用于接收所述调度器控制器反馈的云工作流任务执行结果,并用于将所述云工作流任务执行结果存入所述云工作流任务执行状态链表,同时,根据所述云工作流任务执行结果对所述云工作流状态数据库模块中存储的信息进行更新;所述更新单元用于根据所述云工作流任务执行状态链表中的任务状态,将所述云工作流缓存区中的可执行任务更新至所述就绪任务池;所述资源计算单元用于计算所述就绪任务池中云工作流任务所需的计算资源总和,并将所述计算资源总和发送至所述资源分配单元,并用于接收所述资源分配单元返回的云平台可提供计算资源总和,根据云工作流任务的优先级给各个云工作流任务分配计算资源后,将分配方案结果传输给所述资源分配单元。
3.根据权利要求1所述的云工作流分布式调度***,其特征在于,所述云工作流状态数据库模块中存储有redis数据库。
4.根据权利要求1所述的云工作流分布式调度***,其特征在于,当***中的调度器的数量为零时,所述调度器控制器还用于存储从用户端接收的所述云工作流,并用于启动和注册第一个调度器后,将缓存的所述云工作流分配给所述第一个调度器。
5.根据权利要求1所述的云工作流分布式调度***,其特征在于,当所述分布式云工作流调度模块中的某一所述调度器发生崩溃或所述调度器控制器检测到该调度器死亡时,云工作流调度执行路径为:
当该调度器的压力小于第二设定压力阈值,则所述调度器控制器将待分配的云工作流分配给该调度器;若该调度器的压力大于所述第一设定压力阈值,则所述调度器控制器通知容器资源分配/监控模块新建调度器,并由所述调度器控制器将云工作流分配给新建的调度器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110033497.7A CN112698931B (zh) | 2021-01-12 | 2021-01-12 | 一种云工作流分布式调度*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110033497.7A CN112698931B (zh) | 2021-01-12 | 2021-01-12 | 一种云工作流分布式调度*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112698931A CN112698931A (zh) | 2021-04-23 |
CN112698931B true CN112698931B (zh) | 2022-11-11 |
Family
ID=75513942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110033497.7A Active CN112698931B (zh) | 2021-01-12 | 2021-01-12 | 一种云工作流分布式调度*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112698931B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434268A (zh) * | 2021-06-09 | 2021-09-24 | 北方工业大学 | 一种工作流分布式调度管理***和方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271256A (zh) * | 2018-09-27 | 2019-01-25 | 浪潮软件股份有限公司 | 一种基于分布式部署的云资源管理和监控***及方法 |
CN110737485A (zh) * | 2019-09-29 | 2020-01-31 | 武汉海昌信息技术有限公司 | 一种基于云架构的工作流配置***和方法 |
CN111026890A (zh) * | 2019-11-28 | 2020-04-17 | 天脉聚源(杭州)传媒科技有限公司 | 基于索引表的图片数据存储方法、***、装置和存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107547596B (zh) * | 2016-06-27 | 2022-01-25 | 中兴通讯股份有限公司 | 一种基于Docker的云平台控制方法及装置 |
CN106878389B (zh) * | 2017-01-04 | 2020-02-07 | 北京百度网讯科技有限公司 | 用于在云***中进行资源调度的方法和装置 |
CN106850589B (zh) * | 2017-01-11 | 2020-08-18 | 杨立群 | 一种管控云计算终端和云服务器运作的方法 |
-
2021
- 2021-01-12 CN CN202110033497.7A patent/CN112698931B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271256A (zh) * | 2018-09-27 | 2019-01-25 | 浪潮软件股份有限公司 | 一种基于分布式部署的云资源管理和监控***及方法 |
CN110737485A (zh) * | 2019-09-29 | 2020-01-31 | 武汉海昌信息技术有限公司 | 一种基于云架构的工作流配置***和方法 |
CN111026890A (zh) * | 2019-11-28 | 2020-04-17 | 天脉聚源(杭州)传媒科技有限公司 | 基于索引表的图片数据存储方法、***、装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112698931A (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110119311B (zh) | 一种基于fpga的分布式流计算***加速方法 | |
US10545789B2 (en) | Task scheduling for highly concurrent analytical and transaction workloads | |
CN107038069B (zh) | Hadoop平台下动态标签匹配DLMS调度方法 | |
Gu et al. | Liquid: Intelligent resource estimation and network-efficient scheduling for deep learning jobs on distributed GPU clusters | |
CN105808334B (zh) | 一种基于资源重用的MapReduce短作业优化***及方法 | |
Safaei | Real-time processing of streaming big data | |
US8381212B2 (en) | Dynamic allocation and partitioning of compute nodes in hierarchical job scheduling | |
US9239734B2 (en) | Scheduling method and system, computing grid, and corresponding computer-program product | |
CN110347504B (zh) | 众核计算资源调度方法及装置 | |
Chadha et al. | Extending slurm for dynamic resource-aware adaptive batch scheduling | |
Al-Sinayyid et al. | Job scheduler for streaming applications in heterogeneous distributed processing systems | |
CN116010064A (zh) | Dag作业调度和集群管理的方法、***及装置 | |
CN112698931B (zh) | 一种云工作流分布式调度*** | |
Bartolini et al. | Proactive workload dispatching on the EURORA supercomputer | |
Rattihalli et al. | Fine-grained heterogeneous execution framework with energy aware scheduling | |
Xu et al. | Improving utilization and parallelism of hadoop cluster by elastic containers | |
Chiang et al. | DynamoML: Dynamic Resource Management Operators for Machine Learning Workloads. | |
Yang et al. | Elastic executor provisioning for iterative workloads on apache spark | |
Cheng et al. | Dynamic resource provisioning for iterative workloads on Apache Spark | |
Khalil et al. | Survey of Apache Spark optimized job scheduling in Big Data | |
Zhang et al. | SMOSA: Spider monkey optimization‐based scheduling algorithm for heterogeneous Hadoop | |
Ha et al. | Resource management for parallel processing frameworks with load awareness at worker side | |
Goponenko et al. | Towards workload-adaptive scheduling for HPC clusters | |
CN112416538A (zh) | 一种分布式资源管理框架的多层次架构和管理方法 | |
Sandokji et al. | Communication and computation aware task scheduling framework toward exascale computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |