CN110928653B - 跨集群任务的执行方法、装置、计算机设备和存储介质 - Google Patents
跨集群任务的执行方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110928653B CN110928653B CN201911016099.3A CN201911016099A CN110928653B CN 110928653 B CN110928653 B CN 110928653B CN 201911016099 A CN201911016099 A CN 201911016099A CN 110928653 B CN110928653 B CN 110928653B
- Authority
- CN
- China
- Prior art keywords
- task
- tasks
- parent
- level
- remote
- 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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. 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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
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)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种跨集群任务的执行方法、装置、计算机设备和存储介质。方法包括:获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的依赖关系进行拓扑排序,得到依赖关系结构数据;根据启动时间触发最底层的子级任务,根据依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态;并在所有父级任务执行成功后,预提交子级任务;利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查;在本地的父级任务和/或远程的父级任务执行成功后,提交当前的子级任务进行执行。采用本方法能够准确预估关联任务是否执行完毕,减少跨集群任务的执行错误,提高资源利用率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种跨集群任务的执行方法、装置、计算机设备和存储介质。
背景技术
集群是通过网络互联的、一组相互之间独立的计算机,并可以以统一的方式进行管理的计算机组。集群,具有很高的运算速度,能够完成大运算量的计算;具有较高的响应能力,能够降低整体运维成本。因此,集群得到了越来越多的应用。但是集群之间的任务执行一直是需要重点解决的问题。
由于多个集群之间不能直接设置任务之间的依赖,那么就需要定时去访问关联任务是否已执行完毕。例如,A集群下面的A1任务需要在B集群下面的B1任务执行完毕后才可以开始执行。那么A1任务的执行就需要预估时间,去访问B1任务是否已经执行完毕。由于会存在无法准确预估B1任务的执行完毕时间,如果A1任务在B1任务没有执行完毕的情况下开始执行,就会导致A1任务及其子任务执行错误,造成资源浪费。
发明内容
基于此,有必要针对上述技术问题,提供一种跨集群任务的执行方法、装置、计算机设备和存储介质。
一种跨集群任务的执行方法,所述方法包括:
获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的所述依赖关系进行拓扑排序,得到依赖关系结构数据;
根据所述启动时间触发最底层的子级任务,根据所述依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态;并在所有父级任务执行成功后,预提交子级任务;
利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查;在本地的父级任务和/或远程的父级任务执行成功后,提交当前的子级任务进行执行。
在其中一个实施例中,所述获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的所述依赖关系进行拓扑排序,得到依赖关系结构数据包括:
获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,并将所述依赖关系和启动时间加载进内存,在内存中对各任务所述依赖关系进行拓扑排序,得到依赖关系结构数据。
在其中一个实施例中,所述方法还包括:
在根据所述依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态之后,若存在父级任务未执行,则根据所述依赖关系结构数据中对应的子级任务触发其父级任务。
在其中一个实施例中,所述方法还包括:
在预提交子级任务之前,对各任务的执行状态进行定时检查,并在所有父级任务执行成功后,预提交子级任务。
在其中一个实施例中,所述利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查,包括:
根据所述依赖关系结构数据,判断当前任务的依赖对象;
若当前任务依赖于本地任务,则启动父子依赖检查线程,将当前任务放入本地待检查队列,对本地待检查队列中当前任务的父级任务的执行状态进行检查;
若当前任务依赖于远程任务,则启动远程依赖检查线程,将当前任务放入远程依赖检查队列,对远程依赖检查队列中当前任务的父级任务的执行状态进行检查。
在其中一个实施例中,所述对本地待检查队列中当前任务的父级任务的执行状态进行检查,包括:
遍历本地待检查队列,对每个当前任务的父级任务的执行状态进行检查;
若该任务的所有父级任务都执行成功,提交当前的子级任务进行执行,并从本地待检查队列中移除该任务;
若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息。
在其中一个实施例中,所述对远程依赖检查队列中当前任务的父级任务的执行状态进行检查,包括:
定时读取远程待检查队列中的任务信息;所述任务信息包括远程服务地址和远程服务中的任务名;并根据所述任务名和远程服务地址请求远程服务API,获取远程服务中当前任务的所有父级任务的执行状态;
若所有父级任务执行成功,提交当前的子级任务进行执行,并从远程待检查队列中移除该任务;
若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息。
相应的,本发明还提供一种跨集群任务的执行装置,所述装置包括获取模块、预提交模块以及执行模块;
所述获取模块,用于获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的所述依赖关系进行拓扑排序,得到依赖关系结构数据;
所述预提交模块,用于根据所述启动时间触发最底层的子级任务,根据所述依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态;并在所有父级任务执行成功后,预提交子级任务;
所述执行模块,用于利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查;在本地的父级任务和/或远程的父级任务执行成功后,提交当前的子级任务进行执行。
在其中一个实施例中,所述获取模块还用于:
获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,并将所述依赖关系和启动时间加载进内存,在内存中对各任务之间的所述依赖关系进行拓扑排序,得到依赖关系结构数据。
在其中一个实施例中,所述装置还包括触发模块;
所述触发模块,用于在根据所述依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态之后,若存在父级任务未执行,则根据所述依赖关系结构数据中对应的子级任务触发其父级任务。
在其中一个实施例中,所述装置还包括定时检查模块;
所述定时检查模块,用于在预提交子级任务之前,对各任务的执行状态进行定时检查,并在所有父级任务执行成功后,预提交子级任务。
在其中一个实施例中,所述执行模块包括判断单元、本地检查单元以及远程检查单元:
所述判断单元,用于根据所述依赖关系结构数据,判断当前任务的依赖对象;
所述本地检查单元,用于若当前任务依赖于本地任务,则启动父子依赖检查线程,将当前任务放入本地待检查队列,对本地待检查队列中当前任务的父级任务的执行状态进行检查;
所述远程检查单元,用于若当前任务依赖于远程任务,则启动远程依赖检查线程,将当前任务放入远程依赖检查队列,对远程依赖检查队列中当前任务的父级任务的执行状态进行检查。
在其中一个实施例中,所述本地检查单元,还用于:
遍历本地待检查队列,对每个当前任务的父级任务的执行状态进行检查;
若该任务的所有父级任务都执行成功,提交当前的子级任务进行执行,并从本地待检查队列中移除该任务;
若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息。
在其中一个实施例中,所述远程检查单元,还用于:
定时读取远程待检查队列中的任务信息;所述任务信息包括远程服务地址和远程服务中的任务名;并根据所述任务名和远程服务地址请求远程服务API,获取远程服务中当前任务的所有父级任务的执行状态;
若所有父级任务执行成功,提交当前的子级任务进行执行,并从远程待检查队列中移除该任务;
若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息。
相应的,本发明还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的所述依赖关系进行拓扑排序,得到依赖关系结构数据;
根据所述启动时间触发最底层的子级任务,根据所述依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态;并在所有父级任务执行成功后,预提交子级任务;
利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查;在本地的父级任务和/或远程的父级任务执行成功后,提交当前的子级任务进行执行。
相应的本发明还提供一种计算机可读存储介质,所述计算机程序被处理器执行时实现以下步骤:
获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的所述依赖关系进行拓扑排序,得到依赖关系结构数据;
根据所述启动时间触发最底层的子级任务,根据所述依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态;并在所有父级任务执行成功后,预提交子级任务;
利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查;在本地的父级任务和/或远程的父级任务执行成功后,提交当前的子级任务进行执行。
上述跨集群任务的执行方法、装置、计算机设备和存储介质,利用不同集群各任务之间的依赖关系和最底层的子级任务的启动时间建立依赖关系结构数据,并结合本地调度服务和远程调度服务的检查机制,以准确关联不同集群中所依赖的任务的执行状态,从而能够准确预估关联任务是否执行完毕,减少跨集群任务的执行错误,提高资源利用率。
附图说明
图1为一个实施例中跨集群任务的执行方法的应用环境图;
图2为一个实施例中跨集群任务的执行方法的流程示意图;
图3为图2步骤S300中执行状态检查的流程示意图;
图4为一个实施例中跨集群任务的执行装置的结构框图;
图5为图4中执行模块的结构框图;
图6为一个实施例中计算机设备的内部结构图。
图中:100、获取模块;200、预提交模块;300、执行模块;310、判断单元;320、本地检查单元;330、远程检查单元;400、定时检查模块。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的跨集群任务的执行方法,可以应用于如图1所示的应用环境中。其中,终端1与服务器2通过网络进行通信。集群设置在终端中,不同集群之间的远程通讯可以通过服务器实现。其中,终端1可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑等便携式可穿戴设备,服务器2可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种跨集群任务的执行方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
S100、获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的依赖关系进行拓扑排序,得到依赖关系结构数据;
在本实施例中,集群的数量为两个或两个以上,每个集群中均有各自的任务之间的依赖关系并且设置了最底层的子级任务的启动时间;不同集群或同个集群中的各任务之间具有依赖关系,依赖关系也可以理解为父子关系。比如:任务b(子级任务)依赖于任务a(父级任务),在那么任务b的执行需要任务a执行完毕;在执行任务b时,如果发现任务a未执行,那么会尝试去执行任务a。每个任务在执行中和执行完成后,都会在集群的内存中存储任务的状态信息,状态信息包括不限于等待状态、成功状态以及失败状态。这里需要说明的是,虽然任务b会触发任务a的执行,但是任务a是否执行或什么时候执行完毕还是难以准确估量的。
依赖关系和启动时间的获取方式可以是通过读取各任务的配置,从配置中获取依赖关系和启动时间。为了提高运行效率可以直接在集群的内存中生成依赖关系结构数据。具体为:获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,并将依赖关系和启动时间加载进内存,在内存中对各任务依赖关系进行拓扑排序,得到依赖关系结构数据。在本实施例中,依赖关系结构数据包括不限于有向无环图、树状图以及字典结构数据。依赖关系结构数据能够保证任务不会出现循环依赖的情况发生。
S200、根据启动时间触发最底层的子级任务,根据依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态;并在所有父级任务执行成功后,预提交子级任务;
在本实施例中,每个最底层的子级任务均设置启动时间,在启动时间到的时候会触发最底层的子级任务执行,而父级任务是依赖子级任务,在执行子级任务时,需要父级任务执行完毕。由于在集群的内存(数据库)中存储各任务的状态信息,那么只要查询内存中对应任务的状态信息即可知道父级任务的执行状态。如果所有父级任务执行成功,说明子级任务可以被执行,那么预提交子级任务再次进行本地以及远程(跨集群)的检查,以准确预估关联任务是否执行完毕。
S300、利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查;在本地的父级任务和/或远程的父级任务执行成功后,提交当前的子级任务进行执行。
在本实施例中,本地调度服务是利用父子依赖检查线程,远程调度服务是利用远程依赖检查线程,这两个线程管理的任务都是预先设置分配好的。利于这两个线程从本地和远程对预提交的子级任务的所依赖任务的执行状态进行全面检查,以准确预估关联任务是否执行完毕。
上述跨集群任务的执行方法,利用不同集群各任务之间的依赖关系和最底层的子级任务的启动时间建立依赖关系结构数据,并结合本地调度服务和远程调度服务的检查机制,以准确关联不同集群中依赖任务的执行状态,从而能够准确预估关联任务是否执行完毕,减少跨集群任务的执行错误,提高资源利用率。
在一个实施例中,在根据依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态之后还包括:若存在父级任务未执行,则根据依赖关系结构数据中对应的子级任务触发其父级任务。
在依赖关系结构数据中罗列了各任务之间的依赖关系,根据依赖关系查询数据库中对应的父级任务执行状态,如果返回的状态信息为等待状态,那么说明父级任务未执行,则根据子级任务触发父级任务。
子级任务会触发父级任务的执行,那么说明父级任务是执行了;但是子级任务自身可能执行也可能没执行。子级任务自身没执行的原因可以是因为父级任务的部署本身是成功状态引起的。那么就需要在预提交子级任务之前,利用任务依赖检查线程对各任务的执行状态进行定时检查,并在所有父级任务执行成功后,预提交子级任务。上述的定时检查也是预设时间,根据预设时间进行检查,比如每小时1次、30分钟1次、5分钟1次以及0.2秒钟1次等。在步骤S200中是触发对应父级任务执行的时候,父级任务已经执行成功,这里是一个区别。
在一个实施例中,如图3所示,步骤S300中利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查,包括以下步骤:
S310、根据依赖关系结构数据,判断当前任务的依赖对象;
S320、若当前任务依赖于本地任务,则启动父子依赖检查线程,将当前任务放入本地待检查队列,对本地待检查队列中当前任务的父级任务的执行状态进行检查;
S330、若当前任务依赖于远程任务,则启动远程依赖检查线程,将当前任务放入远程依赖检查队列,对远程依赖检查队列中当前任务的父级任务的执行状态进行检查。
在一个实施例中,一个任务的依赖关系分为两种情况,第一种情况为依赖于本地的任务,那么就可以通过本地调度服务来关联。另外一种情况为依赖于远程的任务,那么可以通过远程调度服务来关联。对于各任务依赖的具体情况,可以根据依赖关系结构数据中任务配置来确定。如果是依赖于本地任务,则启动父子依赖检查线程,将当前任务放入本地待检查队列;如果是依赖于远程任务,则启动远程依赖检查线程,将当前任务放入远程依赖检查队列。下面对着两种情况的具体实现进行详细说明。
检查本地调度服务:启动父子依赖检查线程,将当前任务放入本地待检查队列;遍历本地待检查队列,对每个当前任务的父级任务的执行状态进行检查;若该任务的所有父级任务都执行成功,提交当前的子级任务进行执行,并从本地待检查队列中移除该任务;若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息;重复上述步骤。
检查远程调度服务:启动远程依赖检查线程获取API服务,将当前任务放入远程依赖检查队列;定时读取远程待检查队列中的任务信息;任务信息包括远程服务地址和远程服务中的任务名;并根据任务名和远程服务地址请求远程服务API,获取远程服务中当前任务的所有父级任务的执行状态;若所有父级任务执行成功,提交当前的子级任务进行执行,并从远程待检查队列中移除该任务;若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息;重复上述步骤。
上述步骤使得本地检查和远程检查相关联,将本地调度服务以及远程调度服务中所依赖的任务执行状态准确关联,避免任务执行出错。
应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种跨集群任务的执行装置,装置包括获取模块100、预提交模块200以及执行模块300;获取模块100,用于获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的依赖关系进行拓扑排序,得到依赖关系结构数据;预提交模块200,用于根据启动时间触发最底层的子级任务,根据依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态;并在所有父级任务执行成功后,预提交子级任务;执行模块300,用于利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查;在本地的父级任务和/或远程的父级任务执行成功后,提交当前的子级任务进行执行。
上述跨集群任务的执行装置能够准确预估关联任务是否执行完毕,减少跨集群任务的执行错误,提高资源利用率。
在一个实施例中,获取模块100还用于:获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,并将依赖关系和启动时间加载进内存,在内存中对各任务之间的依赖关系进行拓扑排序,得到依赖关系结构数据。
在一个实施例中,装置还包括触发模块;触发模块,用于在根据依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态之后,若存在父级任务未执行,则根据依赖关系结构数据中对应的子级任务触发其父级任务。
在一个实施例中,装置还包括定时检查模块400;定时检查模块400,用于在预提交子级任务之前,对各任务的执行状态进行定时检查,并在所有父级任务执行成功后,预提交子级任务。
在一个实施例中,如图5所示,执行模块300包括判断单元310、本地检查单元320以及远程检查单元330:判断单元310,用于根据依赖关系结构数据,判断当前任务的依赖对象;本地检查单元320,用于若当前任务依赖于本地任务,则启动父子依赖检查线程,将当前任务放入本地待检查队列,对本地待检查队列中当前任务的父级任务的执行状态进行检查;远程检查单元330,用于若当前任务依赖于远程任务,则启动远程依赖检查线程,将当前任务放入远程依赖检查队列,对远程依赖检查队列中当前任务的父级任务的执行状态进行检查。
在一个实施例中,本地检查单元320,还用于:遍历本地待检查队列,对每个当前任务的父级任务的执行状态进行检查;
若该任务的所有父级任务都执行成功,提交当前的子级任务进行执行,并从本地待检查队列中移除该任务;
若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息。
在一个实施例中,远程检查单元330,还用于:定时读取远程待检查队列中的任务信息;任务信息包括远程服务地址和远程服务中的任务名;并根据任务名和远程服务地址请求远程服务API,获取远程服务中当前任务的所有父级任务的执行状态;
若所有父级任务执行成功,提交当前的子级任务进行执行,并从远程待检查队列中移除该任务;
若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息。
关于跨集群任务的执行装置的具体限定可以参见上文中对于跨集群任务的执行方法的限定,在此不再赘述。上述跨集群任务的执行装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的执行提供环境。该计算机设备的数据库用于存储跨集群任务的执行数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种跨集群任务的执行方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的依赖关系进行拓扑排序,得到依赖关系结构数据;
根据启动时间触发最底层的子级任务,根据依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态;并在所有父级任务执行成功后,预提交子级任务;
利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查;在本地的父级任务和/或远程的父级任务执行成功后,提交当前的子级任务进行执行。
在一个实施例中,处理器执行计算机程序时,实现获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的依赖关系进行拓扑排序,得到依赖关系结构数据,包括以下步骤:
获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,并将依赖关系和启动时间加载进内存,在内存中对各任务之间的依赖关系进行拓扑排序,得到依赖关系结构数据。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在根据依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态之后,若存在父级任务未执行,则根据依赖关系结构数据中对应的子级任务触发其父级任务。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在预提交子级任务之前,对各任务的执行状态进行定时检查,并在所有父级任务执行成功后,预提交子级任务。
在一个实施例中,处理器执行计算机程序时实现利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查,包括以下步骤:
根据依赖关系结构数据,判断当前任务的依赖对象;
若当前任务依赖于本地任务,则启动父子依赖检查线程,将当前任务放入本地待检查队列,对本地待检查队列中当前任务的父级任务的执行状态进行检查;
若当前任务依赖于远程任务,则启动远程依赖检查线程,将当前任务放入远程依赖检查队列,对远程依赖检查队列中当前任务的父级任务的执行状态进行检查。
在一个实施例中,处理器执行计算机程序时实现对本地待检查队列中当前任务的父级任务的执行状态进行检查,包括以下步骤:
遍历本地待检查队列,对每个当前任务的父级任务的执行状态进行检查;
若该任务的所有父级任务都执行成功,提交当前的子级任务进行执行,并从本地待检查队列中移除该任务;
若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息。
在一个实施例中,处理器执行计算机程序时实现对远程依赖检查队列中当前任务的父级任务的执行状态进行检查,包括以下步骤:
定时读取远程待检查队列中的任务信息;任务信息包括远程服务地址和远程服务中的任务名;并根据任务名和远程服务地址请求远程服务API,获取远程服务中当前任务的所有父级任务的执行状态;
若所有父级任务执行成功,提交当前的子级任务进行执行,并从远程待检查队列中移除该任务;
若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的依赖关系进行拓扑排序,得到依赖关系结构数据;
根据启动时间触发最底层的子级任务,根据依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态;并在所有父级任务执行成功后,预提交子级任务;
利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查;在本地的父级任务和/或远程的父级任务执行成功后,提交当前的子级任务进行执行。
在一个实施例中,计算机程序被处理器执行时,实现获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的依赖关系进行拓扑排序,得到依赖关系结构数据,包括以下步骤:
获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,并将依赖关系和启动时间加载进内存,在内存中对各任务之间的依赖关系进行拓扑排序,得到依赖关系结构数据。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在根据依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态之后,若存在父级任务未执行,则根据依赖关系结构数据中对应的子级任务触发其父级任务。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在预提交子级任务之前,对各任务的执行状态进行定时检查,并在所有父级任务执行成功后,预提交子级任务。
在一个实施例中,计算机程序被处理器执行时实现利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查,包括以下步骤:
根据依赖关系结构数据,判断当前任务的依赖对象;
若当前任务依赖于本地任务,则启动父子依赖检查线程,将当前任务放入本地待检查队列,对本地待检查队列中当前任务的父级任务的执行状态进行检查;
若当前任务依赖于远程任务,则启动远程依赖检查线程,将当前任务放入远程依赖检查队列,对远程依赖检查队列中当前任务的父级任务的执行状态进行检查。
在一个实施例中,计算机程序被处理器执行时实现对本地待检查队列中当前任务的父级任务的执行状态进行检查,包括以下步骤:
遍历本地待检查队列,对每个当前任务的父级任务的执行状态进行检查;
若该任务的所有父级任务都执行成功,提交当前的子级任务进行执行,并从本地待检查队列中移除该任务;
若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息。
在一个实施例中,计算机程序被处理器执行时实现对远程依赖检查队列中当前任务的父级任务的执行状态进行检查,包括以下步骤:
定时读取远程待检查队列中的任务信息;任务信息包括远程服务地址和远程服务中的任务名;并根据任务名和远程服务地址请求远程服务API,获取远程服务中当前任务的所有父级任务的执行状态;
若所有父级任务执行成功,提交当前的子级任务进行执行,并从远程待检查队列中移除该任务;
若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种跨集群任务的执行方法,其特征在于,所述方法包括:
获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的所述依赖关系进行拓扑排序,得到依赖关系结构数据;
根据所述启动时间触发最底层的子级任务,根据所述依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态;若存在父级任务未执行,则根据所述依赖关系结构数据中对应的子级任务触发其父级任务;并在所有父级任务执行成功后,预提交子级任务;
利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查;在本地的父级任务和/或远程的父级任务执行成功后,提交当前的子级任务进行执行。
2.根据权利要求1所述的方法,其特征在于,所述获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务之间的所述依赖关系进行拓扑排序,得到依赖关系结构数据包括:
获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,并将所述依赖关系和启动时间加载进内存,在内存中对各任务之间的所述依赖关系进行拓扑排序,得到依赖关系结构数据。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
本地调度服务利用父子依赖检查线程,远程调度服务利用远程依赖检查线程。
4.根据权利要求1至3任意一项所述的方法,其特征在于,所述方法还包括:
在预提交子级任务之前,对各任务的执行状态进行定时检查,并在所有父级任务执行成功后,预提交子级任务。
5.根据权利要求4所述的方法,其特征在于,所述利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查,包括:
根据所述依赖关系结构数据,判断当前任务的依赖对象;
若当前任务依赖于本地任务,则启动父子依赖检查线程,将当前任务放入本地待检查队列,对本地待检查队列中当前任务的父级任务的执行状态进行检查;
若当前任务依赖于远程任务,则启动远程依赖检查线程,将当前任务放入远程依赖检查队列,对远程依赖检查队列中当前任务的父级任务的执行状态进行检查。
6.根据权利要求5所述的方法,其特征在于,所述对本地待检查队列中当前任务的父级任务的执行状态进行检查,包括:
遍历本地待检查队列,对每个当前任务的父级任务的执行状态进行检查;
若该任务的所有父级任务都执行成功,提交当前的子级任务进行执行,并从本地待检查队列中移除该任务;
若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息。
7.根据权利要求5所述的方法,其特征在于,所述对远程依赖检查队列中当前任务的父级任务的执行状态进行检查,包括:
定时读取远程待检查队列中的任务信息;所述任务信息包括远程服务地址和远程服务中的任务名;并根据所述任务名和远程服务地址请求远程服务API,获取远程服务中当前任务的所有父级任务的执行状态;
若所有父级任务执行成功,提交当前的子级任务进行执行,并从远程待检查队列中移除该任务;
若当前任务的父级任务存在未执行或者执行失败,则反馈错误信息。
8.一种跨集群任务的执行装置,其特征在于,所述装置包括获取模块、预提交模块以及执行模块;
所述获取模块,用于获取至少两个集群中各任务之间的依赖关系和最底层的子级任务的启动时间,对各任务所述依赖关系进行拓扑排序,得到依赖关系结构数据;
所述预提交模块,用于根据所述启动时间触发最底层的子级任务,根据所述依赖关系结构数据检查最底层的子级任务对应的父级任务执行状态;若存在父级任务未执行,则根据所述依赖关系结构数据中对应的子级任务触发其父级任务;并在所有父级任务执行成功后,预提交子级任务;
所述执行模块,用于利用本地调度服务和远程调度服务,对预提交的子级任务所依赖任务的执行状态进行检查;在本地的父级任务和/或远程的父级任务执行成功后,提交当前的子级任务进行执行。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911016099.3A CN110928653B (zh) | 2019-10-24 | 2019-10-24 | 跨集群任务的执行方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911016099.3A CN110928653B (zh) | 2019-10-24 | 2019-10-24 | 跨集群任务的执行方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110928653A CN110928653A (zh) | 2020-03-27 |
CN110928653B true CN110928653B (zh) | 2022-10-21 |
Family
ID=69849350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911016099.3A Active CN110928653B (zh) | 2019-10-24 | 2019-10-24 | 跨集群任务的执行方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110928653B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113534750B (zh) * | 2020-04-15 | 2022-12-02 | 北京旷视机器人技术有限公司 | 密集存储下的作业调度方法、装置、系统、设备及介质 |
CN111679899B (zh) * | 2020-06-09 | 2023-05-23 | 微医云(杭州)控股有限公司 | 任务调度方法、装置、平台设备及存储介质 |
CN112114950A (zh) * | 2020-09-21 | 2020-12-22 | 中国建设银行股份有限公司 | 任务调度方法和装置、以及集群管理系统 |
CN112612584A (zh) * | 2020-12-16 | 2021-04-06 | 远光软件股份有限公司 | 任务调度方法、装置、存储介质和电子设备 |
CN112948072A (zh) * | 2021-01-28 | 2021-06-11 | 中电健康云科技有限公司 | 一种基于时间与依赖关系的大数据任务调度系统及方法 |
CN112925997B (zh) * | 2021-02-25 | 2023-02-03 | 平安普惠企业管理有限公司 | 适用于Azkaban的任务依赖图展示方法及相关设备 |
CN113656155B (zh) * | 2021-07-21 | 2024-04-12 | 广州三七互娱科技有限公司 | 任务处理方法、装置、计算机设备和存储介质 |
CN117311950B (zh) * | 2023-11-28 | 2024-04-26 | 宁德时代新能源科技股份有限公司 | 任务处理方法、任务处理装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445929A (zh) * | 2018-11-16 | 2019-03-08 | 杭州数澜科技有限公司 | 一种调度任务的方法和系统 |
CN109783158A (zh) * | 2019-01-14 | 2019-05-21 | 深圳市脸萌科技有限公司 | 应用启动任务处理方法及装置 |
CN109788043A (zh) * | 2018-12-28 | 2019-05-21 | 亚信科技(中国)有限公司 | 任务处理方法、装置、计算机设备和存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6988139B1 (en) * | 2002-04-26 | 2006-01-17 | Microsoft Corporation | Distributed computing of a job corresponding to a plurality of predefined tasks |
US9928109B2 (en) * | 2012-05-09 | 2018-03-27 | Nvidia Corporation | Method and system for processing nested stream events |
CN106293971A (zh) * | 2016-08-15 | 2017-01-04 | 张家林 | 一种分布式任务调度的方法和装置 |
CN108287756A (zh) * | 2018-01-25 | 2018-07-17 | 联动优势科技有限公司 | 一种处理任务的方法及装置 |
CN109062680A (zh) * | 2018-08-15 | 2018-12-21 | 腾讯科技(深圳)有限公司 | 一种数据加载方法、装置和存储介质 |
CN110119269B (zh) * | 2019-04-19 | 2023-07-21 | 北京大米科技有限公司 | 控制任务对象的方法、装置、服务器及存储介质 |
CN110134505A (zh) * | 2019-05-15 | 2019-08-16 | 湖南麒麟信安科技有限公司 | 一种集群系统的分布式计算方法、系统及介质 |
-
2019
- 2019-10-24 CN CN201911016099.3A patent/CN110928653B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445929A (zh) * | 2018-11-16 | 2019-03-08 | 杭州数澜科技有限公司 | 一种调度任务的方法和系统 |
CN109788043A (zh) * | 2018-12-28 | 2019-05-21 | 亚信科技(中国)有限公司 | 任务处理方法、装置、计算机设备和存储介质 |
CN109783158A (zh) * | 2019-01-14 | 2019-05-21 | 深圳市脸萌科技有限公司 | 应用启动任务处理方法及装置 |
Non-Patent Citations (3)
Title |
---|
Maximizing reliability with energy conservation for parallel task scheduling in a heterogeneous cluster;LongxinZhang等;《Information Sciences》;elsevier;20151031;第319卷;第113-131页 * |
任务间相互依赖的并行作业调度算法研究;马丹;《中国博士学位论文全文数据库 信息科技辑》;20090515(第05期);I138-10 * |
基于数据依赖和触发器的简单子任务调度算法;孙伟东等;《辽宁大学学报(自然科学版)》;20090515(第02期);第56-60页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110928653A (zh) | 2020-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110928653B (zh) | 跨集群任务的执行方法、装置、计算机设备和存储介质 | |
CN110399241B (zh) | 任务异常处理方法、装置、计算机设备和可读存储介质 | |
CN109634730B (zh) | 任务调度方法、装置、计算机设备和存储介质 | |
CN108845869B (zh) | 并发请求控制方法、装置、计算机设备和存储介质 | |
CN111651285A (zh) | 批量业务数据处理方法、装置、计算机设备和存储介质 | |
CN110765026A (zh) | 自动化测试方法、装置、存储介质及设备 | |
CN110597695A (zh) | 报警方法、装置、计算机设备和可读存储介质 | |
CN110633208A (zh) | 增量代码覆盖率测试方法及系统 | |
CN111752822A (zh) | 一种容器化压测调度方法、计算机设备及可读存储介质 | |
CN110837956A (zh) | 地下电缆巡检任务分配方法和装置 | |
CN109901998B (zh) | 资源回收方法、装置、系统、计算机设备和存储介质 | |
CN114237852A (zh) | 一种任务调度方法、装置、服务器及存储介质 | |
CN105635231A (zh) | 一种分布式系统的调用方法和装置 | |
CN112379913B (zh) | 基于风险识别的软件优化方法、装置、设备及存储介质 | |
CN113377669A (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
CN112148420B (zh) | 基于容器技术的异常任务处理方法、服务器及云平台 | |
CN112506791A (zh) | 应用程序测试方法、装置、计算机设备和存储介质 | |
CN111259299A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN111241594A (zh) | 交易信息的加签方法、装置、计算机设备和存储介质 | |
CN115757172A (zh) | 测试执行方法、装置、存储介质及计算机设备 | |
CN110555017A (zh) | 区块链数据清理方法、装置、计算机设备和存储介质 | |
CN112559248B (zh) | 预处理服务恢复方法、装置、设备及存储介质 | |
CN110969430B (zh) | 可疑用户的识别方法、装置、计算机设备和存储介质 | |
CN114567664A (zh) | 消息处理结果监控方法、装置、计算机设备和存储介质 | |
CN111190725B (zh) | 任务处理方法、装置、存储介质及服务器 |
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 |