CN114780217B - 任务调度方法、装置、计算机设备以及介质 - Google Patents
任务调度方法、装置、计算机设备以及介质 Download PDFInfo
- Publication number
- CN114780217B CN114780217B CN202210410289.9A CN202210410289A CN114780217B CN 114780217 B CN114780217 B CN 114780217B CN 202210410289 A CN202210410289 A CN 202210410289A CN 114780217 B CN114780217 B CN 114780217B
- Authority
- CN
- China
- Prior art keywords
- task
- execution
- node
- locking
- list
- 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
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
-
- 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/5061—Partitioning or combining of resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请涉及一种任务调度方法、装置、计算机设备、存储介质和计算机程序产品,获取任务列表和节点列表;读取任务列表中执行任务、以及节点列表中执行节点对应标识;对执行任务进行控制加锁抢占,若抢占成功,则表征自身为本次执行任务的目标控制节点,目标控制节点将执行任务广播至执行节点;执行节点会执行加锁抢占,抢占成功的执行节点加执行锁成为目标执行节点,目标执行节点对执行任务进行处理,反馈任务执行结果至目标控制节点,目标控制节点判定属于自身从属执行节点(目标执行节点)反馈的执行结果时,解锁控制锁完成任务调度。整个过程中,通过对自身(控制节点)和执行节点的加锁与解锁,实现任务去中心化的并行调度,提高任务调度效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种任务调度方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
目前市场上任务管理的调度工具较多,开源工具常用的主要有Oozie、Azbanz、xxl-job、elastic-job等。
上述这些调度工具虽然可以实现基本的任务调度功能,支持将多个任务调度到不同的执行节点上来完成。但是这些调度工具一般只有一个主调度流程任务,如果该主调度流程服务下线,则无法继续调度任务。
可见,传统的任务调度工具普遍存在串行调度的缺陷,其支持单个主调度流程任务实现,无法做到任务级并发控制,严重制约任务调度效率。
发明内容
基于此,有必要针对上述技术问题,提供一种高效的任务调度方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种任务调度方法。方法包括:
获取任务列表和节点列表;
读取任务列表中执行任务、以及节点列表中执行节点对应标识;
对执行任务进行控制加锁抢占,若抢占成功,则将执行任务广播至执行节点;
接收反馈的任务执行结果,若任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁;
其中,目标执行节点为执行节点中对执行任务进行执行加锁抢占成功的执行节点。
在其中一个实施例中,对执行任务进行控制加锁抢占包括:
调用redisson对执行任务进行控制加锁抢占。
在其中一个实施例中,调用redisson对执行任务进行控制加锁抢占包括:
提取执行任务的任务标识,并生成分隔符;
组装任务标识、分隔符以及控制加锁标识,生成控制加锁key;
调用redisson加锁方法,基于控制加锁key进行加锁抢占。
在其中一个实施例中,调用redisson加锁方法,基于控制加锁key进行加锁抢占之后,还包括:
若接收到redisson服务器反馈的加锁抢占成功消息,则判定加锁抢占成功;
若接收到redisson服务器反馈的加锁抢占不成功消息,则从任务列表中删除执行任务,返回读取任务列表中执行任务的步骤。
在其中一个实施例中,接收反馈的任务执行结果,若任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁包括:
接收执行节点反馈的任务执行结果;
若任务执行结果为目标执行节点反馈的任务执行结果,则识别任务执行结果;
若任务执行结果表征任务执行失败,则判断任务重试次数是否超过预设重试次数阈值;
若超过,则解锁控制锁,并标识执行任务调度失败;
若未超过,则对执行任务的任务重试次数累加,解锁控制锁、并更新任务列表,返回获取任务列表和节点列表步骤。
在其中一个实施例中,获取任务列表和节点列表之前,还包括:
响应启动操作,读取预设的节点配置参数;
根据节点配置参数进行节点初始化配置、并启动。
第二方面,本申请还提供了一种任务调度装置。装置包括:
列表获取模块,用于获取任务列表和节点列表;
数据读取模块,用于读取任务列表中执行任务、以及节点列表中执行节点对应标识;
控制加锁模块,用于对执行任务进行控制加锁抢占,若抢占成功,则将执行任务广播至执行节点;
解锁模块,用于接收反馈的任务执行结果,若任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁;
其中,目标执行节点为执行节点中对执行任务进行执行加锁抢占成功的执行节点。
第三方面,本申请还提供了一种计算机设备。计算机设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
获取任务列表和节点列表;
读取任务列表中执行任务、以及节点列表中执行节点对应标识;
对执行任务进行控制加锁抢占,若抢占成功,则将执行任务广播至执行节点;
接收反馈的任务执行结果,若任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁;
其中,目标执行节点为执行节点中对执行任务进行执行加锁抢占成功的执行节点。
第四方面,本申请还提供了一种计算机可读存储介质。计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取任务列表和节点列表;
读取任务列表中执行任务、以及节点列表中执行节点对应标识;
对执行任务进行控制加锁抢占,若抢占成功,则将执行任务广播至执行节点;
接收反馈的任务执行结果,若任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁;
其中,目标执行节点为执行节点中对执行任务进行执行加锁抢占成功的执行节点。
第五方面,本申请还提供了一种计算机程序产品。计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取任务列表和节点列表;
读取任务列表中执行任务、以及节点列表中执行节点对应标识;
对执行任务进行控制加锁抢占,若抢占成功,则将执行任务广播至执行节点;
接收反馈的任务执行结果,若任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁;
其中,目标执行节点为执行节点中对执行任务进行执行加锁抢占成功的执行节点。
上述任务调度方法、装置、计算机设备、存储介质和计算机程序产品,获取任务列表和节点列表;读取任务列表中执行任务、以及节点列表中执行节点对应标识;对执行任务进行控制加锁抢占,若抢占成功,则表征自身为本次执行任务的目标控制节点,目标控制节点将执行任务广播至执行节点;执行节点会执行加锁抢占,抢占成功的执行节点加执行锁成为目标执行节点,目标执行节点对执行任务进行处理,反馈任务执行结果至目标控制节点,目标控制节点判定属于自身从属执行节点(目标执行节点)反馈的执行结果时,解锁控制锁完成任务调度。整个过程中,通过对自身(控制节点)和执行节点的加锁与解锁,实现任务去中心化的并行调度,提高任务调度效率。
附图说明
图1为一个实施例中任务调度方法的应用环境图;
图2为一个实施例中任务调度方法的流程示意图;
图3为一个实施例中任务调度方法的流程示意图;
图4为一个具体应用实例中任务调度方法的流程示意图;
图5为一个实施例中任务调度装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的任务调度方法,可以应用于如图1所示的应用环境中。其中,整个组网网络包括多个控制节点,每个控制节点下属有多个执行节点,控制节点执行本申请任务调度方法,具体来说,控制节点获取任务列表和节点列表;读取任务列表中执行任务、以及节点列表中执行节点对应标识;对执行任务进行控制加锁抢占,若抢占成功,则表明自身为该执行任务的目标控制节点,此时将该执行任务广播至自身从属的执行节点;执行节点进行执行加锁抢占,抢占成功的执行节点作为目标执行节点,目标执行节点对该执行任务进行处理,反馈任务执行结果,目标控制节点接收反馈的任务执行结果,若任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁,完成一轮任务调度;返回读取任务列表中执行任务、以及节点列表中执行节点对应标识的步骤。
在一个实施例中,如图2所示,提供了一种任务调度方法,以该方法应用于图1中的控制节点为例进行说明,包括以下步骤:
S200:获取任务列表和节点列表。
控制节点获取任务列表和节点列表,其中任务列表用于记录执行任务以及各个执行任务的状态,状态包括等待状态和停止状态两种;节点列表用于记录控制节点对应从属的执行节点标识,在一个控制节点下,可以从属有多个执行节点,即单个控制节点可以将不同的任务发送至不同的执行节点来执行。具体来说,控制节点响应用户发起的任务调度请求,从数据库表中获取任务列表以及节点列表,以明确需要执行的任务以及自身从属的执行节点。
S400:读取任务列表中执行任务、以及节点列表中执行节点对应标识。
读取任务列表中执行任务,明确本次所需执行的任务,具体来说,是读取任务列表中处于等待状态的任务。另外,还读取节点列表中执行节点对应标识,明确自身从属的执行节点,以在后续处理将执行任务广播至这些执行节点。
S600:对执行任务进行控制加锁抢占,若抢占成功,则将执行任务广播至执行节点。
控制节点对执行任务进行控制加锁抢占,以抢占对该执行任务的“控制权限”。具体来说,针对以执行任务为任务A为例,在组网中可以存在多个控制节点,这些控制节点在侦听到用户发出的启动指令时,同时启动执行上述S200~S400的处理,并且各自针对执行任务进行控制加锁抢占,最终只有一个控制节点可以抢占成功,成为任务A的目标控制节点,若当前控制节点为目标控制节点,则当前控制节点将任务A广播至自身对应的执行节点。在这里进行控制加锁抢占以确保整个组网中针对任务A由一个控制节点来跟进处理,并且采用控制加锁抢占方式避免传统技术中固定指定单个控制节点串行调度导致调度低下的缺陷,实现去中心化调度。
S800:接收反馈的任务执行结果,若任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁;其中,目标执行节点为执行节点中对执行任务进行执行加锁抢占成功的执行节点。
控制节点(目标控制节点)将任务广播至从属的执行节点之后,执行节点同样采取加锁抢占的方式来“争夺”处理权限,执行加锁抢占成功的执行节点成为目标执行节点来执行当前任务,待执行完成后,目标执行节点反馈任务执行结果。由于整个组网中有多个控制节点,并且每个控制节点从属有多个执行节点,在组网中传输的任务执行结果就有多个,针对控制节点(目标控制节点)接收到任务执行结果时,判断任务执行结果是否为自身对应的目标执行节点反馈的任务执行结果,若是,则表明执行任务已经被处理,解除自身控制锁,开始下一轮的任务调度。
上述任务调度方法,获取任务列表和节点列表;读取任务列表中执行任务、以及节点列表中执行节点对应标识;对执行任务进行控制加锁抢占,若抢占成功,则表征自身为本次执行任务的目标控制节点,目标控制节点将执行任务广播至执行节点;执行节点会执行加锁抢占,抢占成功的执行节点加执行锁成为目标执行节点,目标执行节点对执行任务进行处理,反馈任务执行结果至目标控制节点,目标控制节点判定属于自身从属执行节点(目标执行节点)反馈的执行结果时,解锁控制锁完成任务调度。整个过程中,通过对自身(控制节点)和执行节点的加锁与解锁,实现任务去中心化的并行调度,提高任务调度效率。
在实际应用中,整个任务调度过程中组网之间数据可以以消息队列的方式进行交互,整个任务调度主要包括以下步骤:
1、控制节点分发广播任务执行消息A到消息队列。
2、执行节点监听并消费消息A,对任务进行加锁抢占,抢占成功的执行节点,组装消息A和本节点信息成消息B,将消息B发送到消息队列。
3、控制节点监听并消费消息B,记录任务归属的执行节点、执行开始时间并更新到任务列表中。
4、执行节点执行任务,执行结束后对该任务的执行锁进行解锁,并将任务执行结果及输出组装成消息C发送到消息队列。
5、控制节点监听并消费消息C,判断消息C中的控制节点是否本节点,如否则丢弃,如是则更新记录任务执行结果和输出、执行结束时间、任务重试次数,并根据执行结果和任务重试次数判断是否需要重试,更新任务执行状态,对控制锁进行解锁等。
在其中一个实施例中,对执行任务进行控制加锁抢占包括:调用redisson对执行任务进行控制加锁抢占。
在组网中每个服务节点(包括控制节点和执行节点)均挂有redisson客户端,在执行加锁抢占时,各自基于自身数据由redisson客户端运行加锁抢占程序,生成各自对应的加锁结果,加锁结果上传至redisson服务器,由redisson服务器来裁定抢占成功的服务节点,即成为目标服务节点(包括目标控制节点和目标执行节点)。
在其中一个实施例中,调用redisson对执行任务进行控制加锁抢占包括:提取执行任务的任务标识,并生成分隔符;组装任务标识、分隔符以及控制加锁标识,生成控制加锁key;调用redisson加锁方法,基于控制加锁key进行加锁抢占。
任务标识用于区分任务,其可以理解为任务唯一标识码;分隔符是临时生成的,其用于拼接和区分;控制加锁标识可以理解为加锁类型标识,其用于表征这是一次针对控制节点的加锁,另外加锁类型标识还包括执行加锁标识,其用于表征这是一次针对执行节点的加锁。控制节点将任务标识、分隔符以及控制加锁标识拼接组装,生成控制加锁key,控制节点调用redisson加锁方法,对该控制加锁key的加锁对象为自身,执行加锁抢占。具体来说,控制节点可以调用自身外挂的redisson客户端执行加锁抢占处理,再由redisson服务端(器)来裁定具体唯一加锁抢占成功的控制节点,该加锁抢占成功的节点即目标控制节点。同样的,执行节点也可以进行上述类似的处理,在此不再赘述。
在其中一个实施例中,调用redisson加锁方法,基于控制加锁key进行加锁抢占之后,还包括:
若接收到redisson服务器反馈的加锁抢占成功消息,则判定加锁抢占成功;若接收到redisson服务器反馈的加锁抢占不成功消息,则从任务列表中删除执行任务,返回读取任务列表中执行任务的步骤。
在本实施例中,通过redisson客户端和redisson服务端(器)配合来完成服务节点(控制节点和执行节点)的加锁抢占。具体来说,以控制节点为例,控制节点调用外挂的redisson客户端基于控制加锁key,生成加锁结果,不同控制节点外挂的redisson客户端分别将各自对应的控制节点加锁结果上传至redisson服务器,redisson服务器基于这些加锁结果裁定最终抢占成功的控制节点,这个裁定可以是基于接收到加锁结果的时间,即按照接收到加锁结果的时间顺序将各个控制节点排序,选取最先发送加锁结果对应的控制节点作为抢占成功的控制节点,向抢占成功的控制节点发送加锁抢占成功消息,向抢占不成功的控制节点发送加锁抢占不成功消。对应的,在控制节点这边,若接收redisson服务器反馈的加锁抢占成功消息,则判定加锁抢占成功,判定自身为目标控制节点;若接收到redisson服务器反馈的加锁抢占不成功消息,则表明自身不是当前任务的目标控制节点,从任务列表中删除执行任务,返回读取任务列表中执行任务的步骤。
在其中一个实施例中,接收反馈的任务执行结果,若任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁包括:
接收执行节点反馈的任务执行结果;若任务执行结果为目标执行节点反馈的任务执行结果,则识别任务执行结果;若任务执行结果表征任务执行失败,则判断任务重试次数是否超过预设重试次数阈值;若超过,则解锁控制锁,并标识执行任务调度失败;若未超过,则对执行任务的任务重试次数累加,解锁控制锁、并更新任务列表,返回获取任务列表和节点列表步骤。
为详细说明上述加锁抢占的过程,下面将采用具体应用实例,针对所有服务节点(包括控制节点和执行节点)详细说明整个加锁抢占的过程。
1、组装key,由任务标识+特定分隔符+加锁类型(值为节点类型,标识是控制加锁还是执行加锁)拼接而成。
2、调用第三方工具redisson的加锁方法,对该key设置加锁对象为本节点,加锁时长为设定的阈值(通常为任务最大执行时间有余)。该方法返回true或false,true表示加锁成功,false表示加锁失败。该方法为分布式方法,支持仅一个加锁对象加锁成功,其余加锁对象加锁时会返回失败。加锁超过设定的阈值时长后,锁会自动失效,可重新加锁。
3、当调用加锁方法返回true(仅一个节点能取到)时,加锁成功,本服务节点更新该任务的归属控制节点或执行节点,更新任务状态为Running,并开始对该任务进行控制或执行。
4、当调用加锁方法返回false时,加锁失败,本服务节点丢弃该任务,并从本节点的任务列表中删除该任务。
如上述处理过程,多个服务节点同时对一个任务进行加锁,提高了任务处理的并发度,同时实现了一个任务归属一个控制节点控制,一个任务归属一个执行节点执行。
如图3所示,在其中一个实施例中,S200之前,还包括:
S120:响应启动操作,读取预设的节点配置参数;
S140:根据节点配置参数进行节点初始化配置、并启动。
服务节点响应用户发出的启动操作,读取预设的节点配置参数,启动操作具体可以是用户点击操作界面上的启动按钮,或者用户滑动启动的滑块等。预设的节点配置参数包括多个维度的参数,具体可以包括节点类型、心跳间隔、心跳失败最大重试次数等。服务节点基于这些维度的配置参数进行节点初始化配置,待配置完成时,服务节点启动进入后续的处理。
进一步的,服务节点启动后,读取NodeList所有的同类型其它节点信息,判断最近一次更新时间是否在当前时间减去心跳间隔*心跳失败最大重试次数之前及状态为上线,如是则更新状态为下线,更新最近一次更新时间。防止节点因异常退出未执行下线过程导致的状态失灵。服务节点启动后,启动一个定时任务,初始化心跳上报失败次数为0,按照心跳间隔,定时更新数据库表NodeList里的本节点状态为上线,更新最近一次更新时间。如果更新失败,则心跳上报失败次数累加,等待下次心跳上报。当心跳上报次数达到阈值(心跳失败最大重试次数),则启动下线处理。
为详细说明本申请任务调度方法的技术方案,下面将采用具体应用实例,并结合图4详细说明整个处理过程,其具体包括以下步骤:
1、服务节点(控制节点和执行节点)上线,读取预设的配置参数完成初始化配置并启动。
2、所有上线的控制节点循环按一定数量批次读取任务列表TaskList(为其它模块解析生成),筛选出任务状态为等待中Waiting、停止Killed的任务列表,存放为本节点的待控制任务列表L1,并逐个对任务TI进行如下处理:
a)、控制节点读取节点列表,判断当前是否存在可用的执行节点(状态为上线的执行节点数量大于0),如否则执行直接更新整个调度状态为中断并结束。如是则下一步。
b)、对任务TI进行控制加锁,执行上述加锁抢占中的加锁操作。加锁失败则丢弃TI并从L1中删除,并重复循环。加锁成功则本控制节点更新该任务的归属控制节点,更新任务状态为Running,并下一步。
c)、控制节点将该任务下发至从属的执行节点,执行节点进行加锁抢占处理,抢占成功的执行节点“晋级”为目标执行节点。
d)控制节点判断任务结果:
i、当为成功Succ时,则表示任务处理成功,解锁控制锁,重新循环;
ii、当为失败Fail时,判断任务重试次数是否超过阈值,如超过则更新任务状态为Fail,解锁控制锁,并标识整个调度失败并结束;
iii、当为失败Fail时,且任务重试次数未超过阈值,则更新任务状态为重试Retry,解锁控制锁,并对任务的重试次数累加1,重新执行该任务的广播至对应的执行节点以及执行节点加锁抢占的处理。
3、循环结束,完成对任务的调度。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的任务调度方法的任务调度装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个任务调度装置实施例中的具体限定可以参见上文中对于任务调度方法的限定,在此不再赘述。
如图5所示,本申请还提供了一种任务调度装置。装置包括:
列表获取模块200,用于获取任务列表和节点列表;
数据读取模块400,用于读取任务列表中执行任务、以及节点列表中执行节点对应标识;
控制加锁模块600,用于对执行任务进行控制加锁抢占,若抢占成功,则将执行任务广播至执行节点;
解锁模块800,用于接收反馈的任务执行结果,若任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁;其中,目标执行节点为执行节点中对执行任务进行执行加锁抢占成功的执行节点。
上述任务调度装置,获取任务列表和节点列表;读取任务列表中执行任务、以及节点列表中执行节点对应标识;对执行任务进行控制加锁抢占,若抢占成功,则表征自身为本次执行任务的目标控制节点,目标控制节点将执行任务广播至执行节点;执行节点会执行加锁抢占,抢占成功的执行节点加执行锁成为目标执行节点,目标执行节点对执行任务进行处理,反馈任务执行结果至目标控制节点,目标控制节点判定属于自身从属执行节点(目标执行节点)反馈的执行结果时,解锁控制锁完成任务调度。整个过程中,通过对自身(控制节点)和执行节点的加锁与解锁,实现任务去中心化的并行调度,提高任务调度效率。
在其中一个实施例中,控制加锁模块600还用于调用redisson对执行任务进行控制加锁抢占。
在其中一个实施例中,控制加锁模块600还用于提取执行任务的任务标识,并生成分隔符;组装任务标识、分隔符以及控制加锁标识,生成控制加锁key;调用redisson加锁方法,基于控制加锁key进行加锁抢占。
在其中一个实施例中,控制加锁模块600还用于若接收到redisson服务器反馈的加锁抢占成功消息,则判定加锁抢占成功;若接收到redisson服务器反馈的加锁抢占不成功消息,则从任务列表中删除执行任务,控制数据读取模块400重新执行读取任务列表中执行任务的操作。
在其中一个实施例中,解锁模块800还用于接收执行节点反馈的任务执行结果;若任务执行结果为目标执行节点反馈的任务执行结果,则识别任务执行结果;若任务执行结果表征任务执行失败,则判断任务重试次数是否超过预设重试次数阈值;若超过,则解锁控制锁,并标识执行任务调度失败;若未超过,则对执行任务的任务重试次数累加,解锁控制锁、并更新任务列表,并控制列表获取模块200重新执行获取任务列表和节点列表的操作。
在其中一个实施例中,任务调度装置还包括初始化模块,用于响应启动操作,读取预设的节点配置参数;根据节点配置参数进行节点初始化配置、并启动。
上述任务调度装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储预设配置参数等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种任务调度方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取任务列表和节点列表;
读取任务列表中执行任务、以及节点列表中执行节点对应标识;
对执行任务进行控制加锁抢占,若抢占成功,则将执行任务广播至执行节点;
接收反馈的任务执行结果,若任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁;
其中,目标执行节点为执行节点中对执行任务进行执行加锁抢占成功的执行节点。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
调用redisson对执行任务进行控制加锁抢占。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
提取执行任务的任务标识,并生成分隔符;组装任务标识、分隔符以及控制加锁标识,生成控制加锁key;调用redisson加锁方法,基于控制加锁key进行加锁抢占。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若接收到redisson服务器反馈的加锁抢占成功消息,则判定加锁抢占成功;若接收到redisson服务器反馈的加锁抢占不成功消息,则从任务列表中删除执行任务,返回读取任务列表中执行任务的步骤。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
接收执行节点反馈的任务执行结果;若任务执行结果为目标执行节点反馈的任务执行结果,则识别任务执行结果;若任务执行结果表征任务执行失败,则判断任务重试次数是否超过预设重试次数阈值;若超过,则解锁控制锁,并标识执行任务调度失败;若未超过,则对执行任务的任务重试次数累加,解锁控制锁、并更新任务列表,返回获取任务列表和节点列表步骤。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
响应启动操作,读取预设的节点配置参数;根据节点配置参数进行节点初始化配置、并启动。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取任务列表和节点列表;
读取任务列表中执行任务、以及节点列表中执行节点对应标识;
对执行任务进行控制加锁抢占,若抢占成功,则将执行任务广播至执行节点;
接收反馈的任务执行结果,若任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁;
其中,目标执行节点为执行节点中对执行任务进行执行加锁抢占成功的执行节点。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
调用redisson对执行任务进行控制加锁抢占。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
提取执行任务的任务标识,并生成分隔符;组装任务标识、分隔符以及控制加锁标识,生成控制加锁key;调用redisson加锁方法,基于控制加锁key进行加锁抢占。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若接收到redisson服务器反馈的加锁抢占成功消息,则判定加锁抢占成功;若接收到redisson服务器反馈的加锁抢占不成功消息,则从任务列表中删除执行任务,返回读取任务列表中执行任务的步骤。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
接收执行节点反馈的任务执行结果;若任务执行结果为目标执行节点反馈的任务执行结果,则识别任务执行结果;若任务执行结果表征任务执行失败,则判断任务重试次数是否超过预设重试次数阈值;若超过,则解锁控制锁,并标识执行任务调度失败;若未超过,则对执行任务的任务重试次数累加,解锁控制锁、并更新任务列表,返回获取任务列表和节点列表步骤。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
响应启动操作,读取预设的节点配置参数;根据节点配置参数进行节点初始化配置、并启动。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取任务列表和节点列表;
读取任务列表中执行任务、以及节点列表中执行节点对应标识;
对执行任务进行控制加锁抢占,若抢占成功,则将执行任务广播至执行节点;
接收反馈的任务执行结果,若任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁;
其中,目标执行节点为执行节点中对执行任务进行执行加锁抢占成功的执行节点。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
调用redisson对执行任务进行控制加锁抢占。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
提取执行任务的任务标识,并生成分隔符;组装任务标识、分隔符以及控制加锁标识,生成控制加锁key;调用redisson加锁方法,基于控制加锁key进行加锁抢占。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若接收到redisson服务器反馈的加锁抢占成功消息,则判定加锁抢占成功;若接收到redisson服务器反馈的加锁抢占不成功消息,则从任务列表中删除执行任务,返回读取任务列表中执行任务的步骤。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
接收执行节点反馈的任务执行结果;若任务执行结果为目标执行节点反馈的任务执行结果,则识别任务执行结果;若任务执行结果表征任务执行失败,则判断任务重试次数是否超过预设重试次数阈值;若超过,则解锁控制锁,并标识执行任务调度失败;若未超过,则对执行任务的任务重试次数累加,解锁控制锁、并更新任务列表,返回获取任务列表和节点列表步骤。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
响应启动操作,读取预设的节点配置参数;根据节点配置参数进行节点初始化配置、并启动。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种任务调度方法,其特征在于,所述方法包括:
获取任务列表和节点列表;
读取所述任务列表中执行任务,并读取所述节点列表中执行节点对应标识;
对所述执行任务进行控制加锁抢占,若抢占成功,则将所述执行任务广播至所述执行节点;
接收反馈的任务执行结果,若所述任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁;
其中,所述目标执行节点为所述执行节点中对所述执行任务进行执行加锁抢占成功的执行节点。
2.根据权利要求1所述的方法,其特征在于,所述对所述执行任务进行控制加锁抢占包括:
调用redisson对所述执行任务进行控制加锁抢占。
3.根据权利要求2所述的方法,其特征在于,所述调用redisson对所述执行任务进行控制加锁抢占包括:
提取所述执行任务的任务标识,并生成分隔符;
组装所述任务标识、所述分隔符以及控制加锁标识,生成控制加锁key;
调用redisson加锁方法,基于所述控制加锁key进行加锁抢占。
4.根据权利要求3所述的方法,其特征在于,所述调用redisson加锁方法,基于所述控制加锁key进行加锁抢占之后,还包括:
若接收到redisson服务器反馈的加锁抢占成功消息,则判定加锁抢占成功;
若接收到redisson服务器反馈的加锁抢占不成功消息,则从所述任务列表中删除所述执行任务,返回所述读取所述任务列表中执行任务的步骤。
5.根据权利要求1所述的方法,其特征在于,所述接收反馈的任务执行结果,若所述任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁包括:
接收执行节点反馈的任务执行结果;
若所述任务执行结果为目标执行节点反馈的任务执行结果,则识别任务执行结果;
若任务执行结果表征任务执行失败,则判断任务重试次数是否超过预设重试次数阈值;
若超过,则解控制锁,并标识所述执行任务调度失败;
若未超过,则对所述执行任务的任务重试次数累加,解控制锁、并更新任务列表,返回所述获取任务列表和节点列表步骤。
6.根据权利要求1所述的方法,其特征在于,所述获取任务列表和节点列表之前,还包括:
响应启动操作,读取预设的节点配置参数;
根据所述节点配置参数进行节点初始化配置、并启动。
7.一种任务调度装置,其特征在于,所述装置包括:
列表获取模块,用于获取任务列表和节点列表;
数据读取模块,用于读取所述任务列表中执行任务,并读取所述节点列表中执行节点对应标识;
控制加锁模块,用于对所述执行任务进行控制加锁抢占,若抢占成功,则将所述执行任务广播至所述执行节点;
解锁模块,用于接收反馈的任务执行结果,若所述任务执行结果为目标执行节点反馈的任务执行结果,则解控制锁;
其中,所述目标执行节点为所述执行节点中对所述执行任务进行执行加锁抢占成功的执行节点。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210410289.9A CN114780217B (zh) | 2022-04-19 | 2022-04-19 | 任务调度方法、装置、计算机设备以及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210410289.9A CN114780217B (zh) | 2022-04-19 | 2022-04-19 | 任务调度方法、装置、计算机设备以及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114780217A CN114780217A (zh) | 2022-07-22 |
CN114780217B true CN114780217B (zh) | 2023-05-23 |
Family
ID=82431582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210410289.9A Active CN114780217B (zh) | 2022-04-19 | 2022-04-19 | 任务调度方法、装置、计算机设备以及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114780217B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115941485A (zh) * | 2022-11-03 | 2023-04-07 | 中盈优创资讯科技有限公司 | 一种基于网元设备配置下发队列管控的方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871273A (zh) * | 2019-02-03 | 2019-06-11 | 普信恒业科技发展(北京)有限公司 | 一种自适应任务迁移方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229511B (zh) * | 2017-05-11 | 2020-07-03 | 东软集团股份有限公司 | 集群任务均衡调度方法、装置、存储介质及电子设备 |
CN109194538B (zh) * | 2018-08-03 | 2022-03-25 | 平安科技(深圳)有限公司 | 基于分布式协调的测试方法、装置、服务器及存储介质 |
CN111722934B (zh) * | 2020-06-12 | 2022-08-16 | 南京甄视智能科技有限公司 | 分布式定时任务处理方法及系统 |
CN114048265A (zh) * | 2021-11-11 | 2022-02-15 | 北京知道创宇信息技术股份有限公司 | 任务处理方法、装置、电子设备和计算机可读存储介质 |
-
2022
- 2022-04-19 CN CN202210410289.9A patent/CN114780217B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871273A (zh) * | 2019-02-03 | 2019-06-11 | 普信恒业科技发展(北京)有限公司 | 一种自适应任务迁移方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114780217A (zh) | 2022-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108769212B (zh) | 数据同步方法、装置、计算机设备和存储介质 | |
WO2020024405A1 (zh) | 基于分布式协调的测试方法、装置、服务器及存储介质 | |
CN108563502B (zh) | 一种任务调度方法和装置 | |
CN109815291B (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN110457157B (zh) | 分布式事务异常处理方法、装置、计算机设备及存储介质 | |
CN114780217B (zh) | 任务调度方法、装置、计算机设备以及介质 | |
CN113760476B (zh) | 任务依赖处理方法及相关装置 | |
CN112418794A (zh) | 一种业务流转的方法及装置 | |
CN110611707A (zh) | 一种任务调度的方法及装置 | |
CN110727724A (zh) | 数据抽取方法、装置、计算机设备和存储介质 | |
CN108304251B (zh) | 线程同步方法及服务器 | |
CN112817710A (zh) | 定时任务处理方法、系统、计算机设备及计算机存储介质 | |
CN109697112B (zh) | 分布式集约化一站式作业系统和实现方法 | |
CN113946427A (zh) | 用于多操作系统的任务处理方法、处理器及存储介质 | |
CA3134297A1 (en) | Message pushing method and device thereof, computer equipment and storage medium | |
CN116991949A (zh) | 数据同步方法、装置、设备、服务器及可读存储介质 | |
CN108536541B (zh) | 流程引擎对象处理方法及装置 | |
CN113360282A (zh) | 一种任务管理方法、装置、电子设备及存储介质 | |
CN114564286B (zh) | 一种规则引擎告警方法及规则引擎告警系统 | |
CN111625323A (zh) | 分布式任务处理方法、装置、设备及计算机可读存储介质 | |
CN112749142B (zh) | 句柄管理方法和系统 | |
CN113919821A (zh) | 业务的流转方法、装置、计算机设备和存储介质 | |
CN111047187B (zh) | 信息匹配处理方法、装置、计算机设备和存储介质 | |
CN111274208B (zh) | 锁定文件的方法和装置 | |
CN109901933B (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 |