CN105630588B - 一种分布式作业调度方法和系统 - Google Patents

一种分布式作业调度方法和系统 Download PDF

Info

Publication number
CN105630588B
CN105630588B CN201410621515.3A CN201410621515A CN105630588B CN 105630588 B CN105630588 B CN 105630588B CN 201410621515 A CN201410621515 A CN 201410621515A CN 105630588 B CN105630588 B CN 105630588B
Authority
CN
China
Prior art keywords
scheduling
job
dependence
execution
queue
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
Application number
CN201410621515.3A
Other languages
English (en)
Other versions
CN105630588A (zh
Inventor
李升林
黄玉标
任恒军
傅平达
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Aspire Digital Technologies Shenzhen Co Ltd
Original Assignee
Aspire Digital Technologies Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Aspire Digital Technologies Shenzhen Co Ltd filed Critical Aspire Digital Technologies Shenzhen Co Ltd
Priority to CN201410621515.3A priority Critical patent/CN105630588B/zh
Publication of CN105630588A publication Critical patent/CN105630588A/zh
Application granted granted Critical
Publication of CN105630588B publication Critical patent/CN105630588B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Multi Processors (AREA)

Abstract

本发明提供了一种分布式作业调度方法和系统,解决了现有ETL的调度流程中由于不同作业间的依赖关系导致调度过程复杂的缺陷。系统包括作业加载单元、作业调度及执行单元和状态发布单元。方法包括:作业以分布式方式提交到不同的作业执行程序中加载;作业执行程序根据作业的依赖关系向消息队列订阅加载的作业的依赖作业完成通知,根据消息队列发送的依赖作业完成通知判断加载的作业的依赖作业是否完成,并在加载的作业达到执行时间点且其依赖作业完成时执行加载的作业;作业执行程序向消息队列发布执行成功的作业的完成状态。保证了周期性ETL作业的及时高效执行,并通过消息队列机制同步依赖作业状态,保证按照作业间的依赖顺序执行作业。

Description

一种分布式作业调度方法和系统
技术领域
本发明涉及数据分析技术,更具体地说,涉及一种分布式作业调度方法和系统。
背景技术
ETL(Extract-Transform-Load)用来描述将数据从来源端经过摘取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)至目的端的过程。其为构建数据仓库的重要一环,用户从数据源摘取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
Quarz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是一个完全由java编写的开源作业调度框架。
Job是ETL的一个处理步骤,可能是清洗、加载或者转换,也可能是PI加工。作业是ETL的一个处理过程,由一组存在并行或串行执行顺序的Job组成。
ETL主要用于数据分析类项目,一般处理周期性(按小时、天、周、月、年等周期)作业。ETL的调度流程非常复杂,不仅需要考虑各个处理步骤的先后顺序、依赖关系等,还需要不同作业间的先后顺序、依赖关系。
在应用系统(特别是数据分析类系统)中经常需要周期性(按小时、天、周、月、年等周期)批量处理作业,因此对作业执行需要一个较好的时间调度系统。
针对时间调度的需求,经常使用的是Linux/unix系统的crontab命令,crontab命令可以让使用者在固定时间或固定时间间隔执行程序,crontab命令的时间调度策略比较完善,可以配置为每分钟/小时/天/周/月/年的某个时刻,也可以配置每隔多长时间执行。
在流行的kettle(开源的ETL工具)中,用户可以可视化设置时间周期或定点执行作业。
在Java应用中,一般会使用Quarz来解决,Quarz也可以实现定时作业调度。
以上几种方案不能解决以下问题:
1、只能控制单个作业的时间调度,不能处理存在依赖关系的作业,包括同机和跨机部署执行的作业,而随着系统复杂性和数据量的增加,不可避免地需要将作业拆分,并按不同周期执行,导致作业间存在先后顺序和依赖关系;
2、作业是无状态的,只能机械的按照预定周期进行执行,不能适用这类场景:按周期执行的任务只能分析前段周期段的数据,且某个周期执行失败后在后续周期重复执行时能按照顺序从失败周期开始逐段分析不同周期段的数据;
本发明所要解决的技术问题是提供一种相互依赖的ETL周期性作业的分布式调度方法和系统,以解决在依赖的ETL周期性作业执行过程中的依赖问题,以及作业重做问题。
发明内容
本发明针对现有ETL的调度流程中由于不同作业间的依赖关系导致调度过程复杂的缺陷,提供一种分布式作业调度方法和系统,以解决在依赖的ETL周期性作业执行过程中的依赖问题,以及作业重做问题。
本发明解决其技术问题采用的技术方案是:提供一种分布式作业调度方法,包括以下步骤:
S1、作业以分布式方式提交到不同的作业执行程序中进行加载;
S2、所述作业执行程序根据作业的依赖关系向消息队列订阅加载的作业的依赖作业完成通知,根据消息队列发送的依赖作业完成通知判断加载的作业的依赖作业是否完成,并在加载的作业达到执行时间点且其依赖作业完成时执行加载的作业;
S3、所述作业执行程序向所述消息队列发布执行成功的作业的完成状态。
优选地,步骤S2包括以下子步骤:
S21、所述作业执行程序的调度线程根据作业的作业状态将加载的作业置于调度队列或者依赖队列;
S22、所述调度线程检查所述依赖队列中作业的依赖关系,并根据所述依赖关系向所述消息队列订阅依赖作业完成通知;
S23、当接收到所述消息队列返回的依赖作业完成通知时,所述调度线程检查所述依赖队列中依赖于此完成作业的作业,并判断检查出的作业是否还存在其他未完成的依赖作业,若存在则继续等待其他依赖作业的完成通知,若不存在则提交所述作业执行程序的执行线程执行;
S24、所述调度线程定期检查所述调度队列中是否有作业达到执行时间点,若有则进一步判断达到执行时间点的作业是否存在依赖作业,若存在则检查其依赖作业是否均已完成,所述调度线程将达到执行时间点且无依赖作业或者所有依赖作业均已完成的作业提交所述执行线程执行,将达到执行时间点且存在未完成的依赖作业的作业转入所述依赖队列等待其依赖作业完成。
优选地,步骤S3包括以下子步骤:
S31、若作业执行成功,所述执行线程根据作业执行的周期计算作业的下一个执行时间点,然后将作业返回所述调度队列,同时向所述消息队列发布作业完成通知;
S32、若作业执行失败,所述执行线程根据预设的重做周期计算作业的下一个执行时间点,然后将作业返回所述调度队列。
优选地,所述作业执行程序加载的作业包括作业执行包以及作业状态。
优选地,置于所述调度队列的作业的作业状态为等待调度状态,置于所述依赖队列的作业的作业状态为等待依赖作业状态。
提供一种分布式作业调度系统,包括:
作业加载单元,用于加载以分布式方式提交的作业;
作业调度及执行单元,用于根据作业的依赖关系向消息队列订阅加载的作业的依赖作业完成通知,以及根据所述消息队列发送的依赖作业完成通知判断加载的作业的依赖作业是否完成,并在加载的作业达到执行时间点且其依赖作业完成时执行加载的作业;
状态发布单元,用于向所述消息队列发布执行成功的作业的完成状态。
优选地,所述作业调度及执行单元包括:
作业归类模块,用于通过调度线程根据作业的作业状态将加载的作业置于调度队列或者依赖队列;
订阅模块,用于通过所述调度线程检查所述依赖队列中作业的依赖关系,并根据所述依赖关系向所述消息队列订阅依赖作业完成通知;
第一判断及执行模块,用于在接收到所述消息队列返回的依赖作业完成通知时,通过所述调度线程检查所述依赖队列中依赖于此完成作业的作业,并判断检查出的作业是否还存在其他未完成的依赖作业,若存在则继续等待其他依赖作业的完成通知,若不存在则提交执行线程执行;
第二判断及执行模块,用于通过所述调度线程定期检查所述调度队列中是否有作业达到执行时间点,若有则进一步判断达到执行时间点的作业是否存在依赖作业,若存在则检查其依赖作业是否均已完成,通过所述调度线程将达到执行时间点且无依赖作业或者所有依赖作业均已完成的作业提交所述执行线程执行,将达到执行时间点且存在未完成的依赖作业的作业转入所述依赖队列等待其依赖作业完成。
优选地,状态发布单元包括:
发布模块,用于在作业执行成功时,通过所述执行线程根据作业执行的周期计算作业的下一个执行时间点,然后将作业返回所述调度队列,同时向所述消息队列发布作业完成通知;
计算模块,用于在作业执行失败时,通过所述执行线程根据预设的重做周期计算作业的下一个执行时间点,然后将作业返回所述调度队列。
优选地,加载的作业包括作业执行包以及作业状态。
优选地,置于所述调度队列的作业的作业状态为等待调度状态,置于所述依赖队列的作业的作业状态为等待依赖作业状态。
本发明的分布式作业调度方法和系统具有以下有益效果:保证了周期性ETL作业的及时高效执行,并通过消息队列机制同步依赖作业状态,保证按照作业间的依赖顺序执行作业。
附图说明
图1为本发明的分布式作业调度方法第一实施例的流程图;
图2为应用了本发明的分布式作业调度方法第一实施例的系统的结构示意图;
图3为本发明的分布式作业调度方法第一实施例中作业状态的迁移图;
图4为本发明的分布式作业调度系统第一实施例的功能框图;
图5为本发明的分布式作业调度系统第一实施例的工作流程图。
具体实施方式
本申请实施例通过提供一种分布式作业调度方法和系统,解决了现有ETL的调度流程中由于不同作业间的依赖关系导致调度过程复杂的缺陷,减少了ETL调度流程中作业的重做现象,简化了ETL调度流程的复杂度。
以下结合附图和实施例对本发明作进一步的解释说明。
图1为本发明的分布式作业调度方法第一实施例的流程图,如图1所示,在本实施例中,调度方法包括以下步骤:
S1、作业以分布式方式提交到不同的作业执行程序中进行加载;
S2、作业执行程序根据作业的依赖关系向消息队列订阅加载的作业的依赖作业完成通知,根据消息队列发送的依赖作业完成通知判断加载的作业的依赖作业是否完成,并在加载的作业达到执行时间点且其依赖作业完成时执行加载的作业;
S3、作业执行程序向消息队列发布执行成功的作业的完成状态。
参见图1-2,在本实施例的步骤S1中,ETL作业以分布式的方式提交到不同的作业执行程序中,作业执行程序的调度线程从文件中加载作业,加载的作业包括作业执行包以及作业状态。之后,作业执行程序将使用线程池技术并行地执行加载的作业。
本实施例的步骤S2包括以下子步骤:
S21、作业执行程序的调度线程根据作业的作业状态将加载的作业置于调度队列或者依赖队列,具体的,调度线程将作业状态为等待调度的作业置于调度队列中,将作业状态为等待依赖作业的作业置于依赖队列中。
S22、调度线程检查依赖队列中作业的依赖关系,并根据依赖关系向消息队列订阅依赖作业完成通知,消息队列在接收到订阅消息后,将保存订阅关系,并且将本地保存的依赖作业完成状态通知回调度线程(即将依赖作业完成通知返回调度线程)。
S23、当调度线程接收到通知后,检查依赖队列中有哪些作业依赖于该通知中已经完成的作业,对于依赖队列中依赖于此完成作业的作业,调度线程进一步判断其是否还存在其他未完成的依赖作业(即判断这些作业知否等待其他作业),若存在则继续等待该作业的其他依赖作业的完成通知(即继续等待其他作业完成),若不存在则将依赖队列中的该作业提交执行线程执行。执行线程将按照处理逻辑处理该作业的执行包。
S24、除了处理依赖队列中的作业外,调度线程还会定期检查调度队列中是否有作业达到执行时间点(当前时间晚于作业下次执行时间点,支持按照分钟/小时/天/周/月/年等不同周期),若有调度线程则将达到执行时间点的作业从调度队列中取出,并进一步判断达到执行时间点的作业是否存在依赖作业(即判断其是否依赖于其他作业),若存在则再次检查其依赖作业是否均已完成。对于频率跟当前作业一致的依赖作业,调度线程检查这些依赖作业的当前周期是否完成,若是则表示依赖作业完成,若否则表示未完成。对于频率低于当前作业的依赖作业,调度线程检查当前作业的当前周期内这些依赖作业的所有处理周期是否均已完成,若是则表示这些依赖作业完成,若否则表示这些依赖作业未完成,例如,当前作业为每天0点5分执行,依赖作业为每小时5分执行,当前时间为0点5分,则需要依赖作业完成前一天所有24小时的处理任务。如果当前作业无依赖作业或者所有依赖作业均已完成,调度线程将调度队列中的这些作业提交执行线程执行。对于达到执行时间点且存在未完成的依赖作业的作业,调度线程则将其转入依赖队列等待这些作业的依赖作业完成。
在本实施例的步骤S3中,步骤S3包括以下子步骤:
S31、执行线程执行作业完成后,如果作业执行成功,则根据作业执行的周期计算作业的下一个执行时间点,然后将作业返回调度队列,同时向消息队列发布作业完成通知。例如,若作业的执行周期为每小时5分钟,按照自然时,每天0点5分为下一天的0点5分钟(即一天的第一个执行时间点)。
S32、如果作业执行失败,执行线程根据预设的重做周期计算作业的下一个执行时间点,然后将作业返回调度队列。一般,重做周期设置为一个较短的时间,例如5分钟,执行失败的作业的下一个执行时间点为当前时间加上重做周期。例如当前时间加上5分钟。作业在某个周期执行失败后,依赖其的作业会一直等待本作业完成执行,因此本作业会以较短间隔不停重试,避免了大量重复执行作业的工作。另外,考虑到进入死循环的风险,可以设置一个重试阈值,重试次数超过该阈值则不再重新执行此任务,继续执行其他任务或者退出任务执行。
如图3所示,在本实施例中,作业在被处理过程中作业状态的变化过程为:
调度队列中的作业处于“等待调度”状态,当达到执行时间点且没有依赖作业或依赖作业均已完成时,则被提交到执行线程执行,状态转换为“执行中”状态;如果依赖作业未完成,则转入依赖队列,状态为“等待依赖作业”状态,处于“等待依赖作业”状态中的作业在接收到依赖作业完成通知后,也被提交到执行线程执行,状态转换为“执行中”状态;作业执行成功后,需要向消息队列发布作业完成通知,并根据作业执行周期重新计算执行时间点返回调度队列;作业执行失败后,则直接根据重做周期重新计算执行时间点返回调度队列。
在本发明的分布式作业调度方法第一实施例中,ETL作业提交到分布式作业执行程序,作业执行程序内部使用线程池并行执行ELT作业;由统一的调度线程根据不同作业周期判断是否达到执行时间点,支持按分钟/小时/天/周/月/年等不同周期;作业执行程序根据作业依赖关系向消息队列订阅和发布作业完成状态,调度线程判断依赖作业未完成,则进入等待状态,消息队列会主动将依赖作业状态同步给调度线程,调度线程接收到作业完成状态后,会及时调度处于等待依赖作业状态的作业进行执行,在保证按照作业间的依赖顺序执行之外还简化了存在依赖的不同作业之间调度的难度;再者,当作业执行失败时,会自动按照配置的重做周期进行重试,如果累积多个周期执行失败,按照周期的顺序依次重做,减少了作业的重做量。保证了周期性ETL作业的及时高效执行。
图4为本发明的分布式作业调度系统100第一实施例的功能框图,参见图2和图4,在本实施例中,调度系统100包括:
作业加载单元110,用于加载以分布式方式提交的作业;
作业调度及执行单元120,用于根据作业的依赖关系向消息队列订阅加载的作业的依赖作业完成通知,以及根据所述消息队列发送的依赖作业完成通知判断加载的作业的依赖作业是否完成,并在加载的作业达到执行时间点且其依赖作业完成时执行加载的作业;
状态发布单元130,用于向消息队列发布执行成功的作业的完成状态。
在本实施例中,作业调度及执行单元120包括:
作业归类模块121,用于通过调度线程根据作业的作业状态将加载的作业置于调度队列或者依赖队列;
订阅模块122,用于通过调度线程检查依赖队列中作业的依赖关系,并根据依赖关系向所述消息队列订阅依赖作业完成通知;
第一判断及执行模块123,用于在接收到消息队列返回的依赖作业完成通知时,通过调度线程检查所述依赖队列中依赖于此完成作业的作业,并判断检查出的作业是否还存在其他未完成的依赖作业,若存在则继续等待其他依赖作业的完成通知,若不存在则提交执行线程执行;
第二判断及执行模块124,用于通过调度线程定期检查所述调度队列中是否有作业达到执行时间点,若有则进一步判断达到执行时间点的作业是否存在依赖作业,若存在则检查其依赖作业是否均已完成,通过所述调度线程将达到执行时间点且无依赖作业或者所有依赖作业均已完成的作业提交所述执行线程执行,将达到执行时间点且存在未完成的依赖作业的作业转入所述依赖队列等待其依赖作业完成。
状态发布单元130包括:
发布模块131,用于在作业执行成功时,通过执行线程根据作业执行的周期计算作业的下一个执行时间点,然后将作业返回所述调度队列,同时向消息队列发布作业完成通知;
计算模块132,用于在作业执行失败时,通过执行线程根据预设的重做周期计算作业的下一个执行时间点,然后将作业返回调度队列。
本实施例的调度系统100的工作流程如图5所示,调度线程装载(加载)以分布式的方式提交的作业,加载的作业包括作业执行包以及作业状态。
然后,调度线程根据作业的作业状态将加载的作业置于调度队列或者依赖队列,具体的,调度线程将作业状态为等待调度的作业置于调度队列中,将作业状态为等待依赖作业的作业置于依赖队列中。然后,调度线程检查依赖队列中作业的依赖关系,并根据依赖关系向消息队列订阅依赖作业完成通知,消息队列在接收到订阅消息后,记录并保存订阅关系,并且将本地保存的依赖作业完成状态通知回调度线程(即将依赖作业完成通知返回调度线程)。
调度线程接收消息队列返回的通知,然后检查依赖队列中有哪些作业依赖于该通知中已经完成的作业,对于依赖队列中依赖于此完成作业的作业,调度线程进一步判断其是否还存在其他未完成的依赖作业(即判断这些作业知否等待其他作业),若存在则继续等待该作业的其他依赖作业的完成通知(即继续等待其他作业完成),若不存在则将依赖队列中的该作业提交执行线程执行。执行线程将按照处理逻辑处理该作业的执行包。
执行线程判断作业是否执行成功,若是则发布作业完成通知到消息队列并且按照作业周期计算作业下次执行时间点,之后将作业放回调度队列。消息队列接收到发布消息后进行存储,然后判断是否有该完成的作业的订阅关系,若有则通知订阅者(具体为向调度线程发送依赖作业完成通知)。若作业执行失败,执行线程则按照预设的重做周期计算下次执行时间点,将作业放回调度队列等待重新处理。
除了处理依赖队列中的作业外,调度线程还会定期检查调度队列中是否有作业达到执行时间点,若有调度线程则将达到执行时间点的作业从调度队列中取出,并进一步判断达到执行时间点的作业是否存在依赖作业(即判断其是否依赖于其他作业),若存在则再次检查其依赖作业是否均已完成。对于频率跟当前作业一致的依赖作业,调度线程检查这些依赖作业的当前周期是否完成,若是则表示依赖作业完成,若否则表示未完成。对于频率低于当前作业的依赖作业,调度线程检查当前作业的当前周期内这些依赖作业的所有处理周期是否均已完成,若是则表示这些依赖作业完成,若否则表示这些依赖作业未完成,例如,当前作业为每天0点5分执行,依赖作业为每小时5分执行,当前时间为0点5分,则需要依赖作业完成前一天所有24小时的处理任务。如果当前作业无依赖作业或者所有依赖作业均已完成,调度线程将调度队列中的这些作业提交执行线程执行。对于达到执行时间点且存在未完成的依赖作业的作业,调度线程则将其转入依赖队列等待这些作业的依赖作业完成,之后继续检测调度队列中是否有作业达到执行时间点。
在本发明的分布式作业调度系统100第一实施例中,ETL作业提交到分布式作业执行程序,作业执行程序内部使用线程池并行执行ELT作业;由统一的调度线程根据不同作业周期判断是否达到执行时间点,支持按分钟/小时/天/周/月/年等不同周期;作业执行程序根据作业依赖关系向消息队列订阅和发布作业完成状态,调度线程判断依赖作业未完成,则进入等待状态,消息队列会主动将依赖作业状态同步给调度线程,调度线程接收到作业完成状态后,会及时调度处于等待依赖作业状态的作业进行执行,在保证按照作业间的依赖顺序执行之外还简化了存在依赖的不同作业之间调度的难度;再者,当作业执行失败时,会自动按照配置的重做周期进行重试,如果累积多个周期执行失败,按照周期的顺序依次重做,减少了作业的重做量。保证了周期性ETL作业的及时高效执行。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

Claims (8)

1.一种分布式作业调度方法,其特征在于,包括以下步骤:
S1、作业以分布式方式提交到不同的作业执行程序中进行加载;
S2、所述作业执行程序根据作业的依赖关系向消息队列订阅加载的作业的依赖作业完成通知,根据消息队列发送的依赖作业完成通知判断加载的作业的依赖作业是否完成,并在加载的作业达到执行时间点且其依赖作业完成时执行加载的作业;
S3、所述作业执行程序向所述消息队列发布执行成功的作业的完成状态;
其中,步骤S2包括以下子步骤:
S21、所述作业执行程序的调度线程根据作业的作业状态将加载的作业置于调度队列或者依赖队列;
S22、所述调度线程检查所述依赖队列中作业的依赖关系,并根据所述依赖关系向所述消息队列订阅依赖作业完成通知;
S23、当接收到所述消息队列返回的依赖作业完成通知时,所述调度线程检查所述依赖队列中依赖于此完成作业的作业,并判断检查出的作业是否还存在其他未完成的依赖作业,若存在则继续等待其他依赖作业的完成通知,若不存在则提交所述作业执行程序的执行线程执行;
S24、所述调度线程定期检查所述调度队列中是否有作业达到执行时间点,若有则进一步判断达到执行时间点的作业是否存在依赖作业,若存在则检查其依赖作业是否均已完成,所述调度线程将达到执行时间点且无依赖作业或者所有依赖作业均已完成的作业提交所述执行线程执行,将达到执行时间点且存在未完成的依赖作业的作业转入所述依赖队列等待其依赖作业完成。
2.根据权利要求1所述的分布式作业调度方法,其特征在于,步骤S3包括以下子步骤:
S31、若作业执行成功,所述执行线程根据作业执行的周期计算作业的下一个执行时间点,然后将作业返回所述调度队列,同时向所述消息队列发布作业完成通知;
S32、若作业执行失败,所述执行线程根据预设的重做周期计算作业的下一个执行时间点,然后将作业返回所述调度队列。
3.根据权利要求1所述的分布式作业调度方法,其特征在于,所述作业执行程序加载的作业包括作业执行包以及作业状态。
4.根据权利要求3所述的分布式作业调度方法,其特征在于,置于所述调度队列的作业的作业状态为等待调度状态,置于所述依赖队列的作业的作业状态为等待依赖作业状态。
5.一种分布式作业调度系统,其特征在于,包括:
作业加载单元(110),用于加载以分布式方式提交的作业;
作业调度及执行单元(120),用于根据作业的依赖关系向消息队列订阅加载的作业的依赖作业完成通知,以及根据所述消息队列发送的依赖作业完成通知判断加载的作业的依赖作业是否完成,并在加载的作业达到执行时间点且其依赖作业完成时执行加载的作业;
状态发布单元(130),用于向所述消息队列发布执行成功的作业的完成状态;
其中,所述作业调度及执行单元(120)包括:
作业归类模块(121),用于通过调度线程根据作业的作业状态将加载的作业置于调度队列或者依赖队列;
订阅模块(122),用于通过所述调度线程检查所述依赖队列中作业的依赖关系,并根据所述依赖关系向所述消息队列订阅依赖作业完成通知;
第一判断及执行模块(123),用于在接收到所述消息队列返回的依赖作业完成通知时,通过所述调度线程检查所述依赖队列中依赖于此完成作业的作业,并判断检查出的作业是否还存在其他未完成的依赖作业,若存在则继续等待其他依赖作业的完成通知,若不存在则提交执行线程执行;
第二判断及执行模块(124),用于通过所述调度线程定期检查所述调度队列中是否有作业达到执行时间点,若有则进一步判断达到执行时间点的作业是否存在依赖作业,若存在则检查其依赖作业是否均已完成,通过所述调度线程将达到执行时间点且无依赖作业或者所有依赖作业均已完成的作业提交所述执行线程执行,将达到执行时间点且存在未完成的依赖作业的作业转入所述依赖队列等待其依赖作业完成。
6.根据权利要求5所述的分布式作业调度系统,其特征在于,状态发布单元(130)包括:
发布模块(131),用于在作业执行成功时,通过所述执行线程根据作业执行的周期计算作业的下一个执行时间点,然后将作业返回所述调度队列,同时向所述消息队列发布作业完成通知;
计算模块(132),用于在作业执行失败时,通过所述执行线程根据预设的重做周期计算作业的下一个执行时间点,然后将作业返回所述调度队列。
7.根据权利要求5所述的分布式作业调度系统,其特征在于,加载的作业包括作业执行包以及作业状态。
8.根据权利要求7所述的分布式作业调度系统,其特征在于,置于所述调度队列的作业的作业状态为等待调度状态,置于所述依赖队列的作业的作业状态为等待依赖作业状态。
CN201410621515.3A 2014-11-06 2014-11-06 一种分布式作业调度方法和系统 Active CN105630588B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410621515.3A CN105630588B (zh) 2014-11-06 2014-11-06 一种分布式作业调度方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410621515.3A CN105630588B (zh) 2014-11-06 2014-11-06 一种分布式作业调度方法和系统

Publications (2)

Publication Number Publication Date
CN105630588A CN105630588A (zh) 2016-06-01
CN105630588B true CN105630588B (zh) 2019-03-01

Family

ID=56045566

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410621515.3A Active CN105630588B (zh) 2014-11-06 2014-11-06 一种分布式作业调度方法和系统

Country Status (1)

Country Link
CN (1) CN105630588B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111597018A (zh) * 2020-04-21 2020-08-28 清华大学 一种机器人作业调度方法及装置

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107066339A (zh) * 2016-12-14 2017-08-18 中国航空结算有限责任公司 分布式作业管理器及分布式作业管理方法
CN106775985A (zh) * 2016-12-26 2017-05-31 中国建设银行股份有限公司 一种批处理任务调度方法及装置
CN107967150B (zh) * 2017-12-19 2021-10-15 郑州云海信息技术有限公司 一种线程执行顺序确定方法、装置、设备及存储介质
CN109785042A (zh) * 2018-12-13 2019-05-21 深圳平安财富宝投资咨询有限公司 分布式部署的异常处理方法、服务器、存储介质及装置
CN110109740B (zh) * 2019-05-08 2021-08-10 宜人恒业科技发展(北京)有限公司 一种Crontab命令的执行方法及装置
CN110443587A (zh) * 2019-08-12 2019-11-12 北京神舟航天软件技术有限公司 一种工作流调度方法
CN110688211B (zh) * 2019-09-24 2023-06-06 四川新网银行股份有限公司 一种分布式作业调度方法
CN110968371A (zh) * 2020-02-28 2020-04-07 北京搜狐新媒体信息技术有限公司 一种数据仓库中工作流的配置方法及系统
CN111400053B (zh) * 2020-03-17 2023-12-15 畅捷通信息技术股份有限公司 数据库访问系统、方法、装置和计算机可读存储介质
CN112286661B (zh) * 2020-10-30 2021-10-15 海通证券股份有限公司 任务调度方法及装置、存储介质、终端
CN112596873A (zh) * 2020-12-16 2021-04-02 平安普惠企业管理有限公司 工作流依赖管理方法、装置、计算机设备及存储介质
CN115408157A (zh) * 2022-08-31 2022-11-29 北京中科睿信科技有限公司 一种基于线程池的模型并行化数据仿真方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101236513A (zh) * 2007-01-30 2008-08-06 阿里巴巴公司 一种分布式任务系统和分布式任务管理方法
CN101963921A (zh) * 2010-09-21 2011-02-02 卓望数码技术(深圳)有限公司 一种作业调度方法和系统
CN102630316A (zh) * 2011-12-22 2012-08-08 华为技术有限公司 并发任务的处理方法及装置
CN103197969A (zh) * 2013-03-27 2013-07-10 百度在线网络技术(北京)有限公司 一种分布式定时任务控制装置及方法
CN103294533A (zh) * 2012-10-30 2013-09-11 北京安天电子设备有限公司 任务流控制方法及系统
CN103514028A (zh) * 2012-06-14 2014-01-15 北京新媒传信科技有限公司 一种处理分布式事务的方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101236513A (zh) * 2007-01-30 2008-08-06 阿里巴巴公司 一种分布式任务系统和分布式任务管理方法
CN101963921A (zh) * 2010-09-21 2011-02-02 卓望数码技术(深圳)有限公司 一种作业调度方法和系统
CN102630316A (zh) * 2011-12-22 2012-08-08 华为技术有限公司 并发任务的处理方法及装置
CN103514028A (zh) * 2012-06-14 2014-01-15 北京新媒传信科技有限公司 一种处理分布式事务的方法和装置
CN103294533A (zh) * 2012-10-30 2013-09-11 北京安天电子设备有限公司 任务流控制方法及系统
CN103197969A (zh) * 2013-03-27 2013-07-10 百度在线网络技术(北京)有限公司 一种分布式定时任务控制装置及方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111597018A (zh) * 2020-04-21 2020-08-28 清华大学 一种机器人作业调度方法及装置
CN111597018B (zh) * 2020-04-21 2021-04-13 清华大学 一种机器人作业调度方法及装置

Also Published As

Publication number Publication date
CN105630588A (zh) 2016-06-01

Similar Documents

Publication Publication Date Title
CN105630588B (zh) 一种分布式作业调度方法和系统
CN104536811B (zh) 基于hive任务的任务调度方法及装置
CN106547613B (zh) 任务处理流程的调度及故障恢复方法
CN105893531B (zh) PostgreSQL数据库海量数据管理方法及系统
CN103034554B (zh) 一种纠错重启以及自动判断启动的etl调度系统及方法
US20180004568A1 (en) Distributed task system and service processing method based on internet of things
CN104216785B (zh) 通用策略任务系统及其实现方法
CN105260248B (zh) 一种可动态调整的任务调度系统和调度方法
CN107316124B (zh) 大数据环境下大规模事务型作业调度与处理通用系统
CN108958915A (zh) 定时任务执行方法及装置
CN103593232B (zh) 一种数据仓库的任务调度方法及装置
CN106951315A (zh) 一种基于etl的数据任务调度方法及系统
CN104601668B (zh) 基于状态管理的数据推送方法、装置和系统
CN106959895A (zh) 快速释放线程的资源调度方法和系统
CN112379884A (zh) 基于Spark和并行内存计算的流程引擎实现方法及系统
CN107506906A (zh) 一种基于数据处理的任务智能调度引擎设计方法
CN110032444A (zh) 一种分布式系统及分布式任务处理方法
CN117290103A (zh) 一种支持多进程和多线程的任务调度实现方法
US20140359635A1 (en) Processing data by using simultaneous multithreading
CN109656692B (zh) 一种大数据任务管理方法、装置、设备及存储介质
CN103853607B (zh) 一种任务调度互备方法
CN110287006A (zh) 一种数据调度方法及系统
CN101551811B (zh) 用于实时数据etl系统的记忆式调度方法
CN109375996A (zh) 一种支持依赖关系管理的任务调度系统
CN112346842A (zh) 一种基于有向无环图的工作流任务调度方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant