CN113238862B - 一种分布式任务调度方法和装置 - Google Patents
一种分布式任务调度方法和装置 Download PDFInfo
- Publication number
- CN113238862B CN113238862B CN202110522999.6A CN202110522999A CN113238862B CN 113238862 B CN113238862 B CN 113238862B CN 202110522999 A CN202110522999 A CN 202110522999A CN 113238862 B CN113238862 B CN 113238862B
- Authority
- CN
- China
- Prior art keywords
- task
- target service
- storage area
- shared storage
- lock
- 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
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000004590 computer program Methods 0.000 claims description 8
- 238000004458 analytical method Methods 0.000 claims description 6
- 230000001960 triggered effect Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- 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/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种分布式任务调度方法和装置,其中,所述方法包括:在接收到定时触发指令的情况下,触发集群中的多个本地服务并发访问共享存储区域,以获取任务锁;通过多个所述本地服务分别对比任务锁中的过期时间点和本地服务的当前时间点,确定所述当前时间点晚于过期时间点的本地服务为第一目标服务;通过至少一个所述第一目标服务分别更新任务锁,将更新后的任务锁分别发送至共享存储区域,以将其中一个更新后的任务锁写入共享存储区域;通过至少一个第一目标服务再次访问共享存储区域,确定与写入共享存储区域的更新后的任务锁对应的第一目标服务为最终目标服务,通过最终目标服务执行定时任务,实现了高容错性的分布式任务的执行。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种分布式任务调度方法和装置。
背景技术
分布式定时任务,指的是把分散的、可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。调度系统经常以分布式的方式实现,即形成分布式调度系统,主要用于在计算机集群之间执行定时或者被事件触发的任务。
现有技术中,对于单机定时任务的执行,有很多成熟的方案,比如SpringScheduled、Quartz Worker、Java Scheduled Thread Pool等,但是如果处在集群环境中,如何解决如下问题成为关键:同一时刻只有一个本地服务执行定时任务。如果集群中的本地服务出现宕机,需要选择其他机器执行定时任务。
目前现有技术中的分布式定时任务执行,存在以下技术缺陷:
多个本地服务发起分布式锁竞争,并由其中一个本地服务竞争成功,执行定时任务,其他本地服务失败并返回。在该本地服务执行定时任务的过程中,由于网络故障、服务宕机、程序崩溃,不仅无法执行定时任务,还导致分布式锁设置过期时间失败,最终导致定时任务无法继续执行。
发明内容
本发明提供一种分布式任务调度方法和装置、电子设备和存储介质,用以解决现有技术中存在的技术缺陷。
本发明提供一种分布式任务调度方法,包括:
在接收到定时触发指令的情况下,触发集群中的多个本地服务并发访问共享存储区域,以获取任务锁;其中,所述任务锁包括过期时间点;
通过多个所述本地服务分别对比所述任务锁中的过期时间点和本地服务的当前时间点,确定所述当前时间点晚于所述过期时间点的本地服务为第一目标服务;
通过至少一个所述第一目标服务分别更新任务锁,将更新后的任务锁分别发送至共享存储区域,以将其中一个更新后的任务锁写入共享存储区域;其中,所述更新后的任务锁包括下一个过期时间点;
通过至少一个所述第一目标服务再次访问所述共享存储区域,确定与写入所述共享存储区域的更新后的任务锁对应的第一目标服务为最终目标服务,通过所述最终目标服务执行所述定时任务。
根据本发明提供的一种分布式任务调度方法,所述方法还包括:若确定所述本地服务的当前时间点不晚于所述任务锁中的过期时间点,所述本地服务放弃执行定时任务。
根据本发明提供的一种分布式任务调度方法,通过至少一个所述第一目标服务分别更新任务锁,包括:
通过每个所述第一目标服务分别将获取到的任务锁中的过期时间点更新为下一个过期时间点,将所述任务锁中执行所述定时任务的本地服务标识更新为对应的所述第一目标服务标识。
根据本发明提供的一种分布式任务调度方法,通过至少一个所述第一目标服务将更新后的任务锁分别发送至共享存储区域,以将其中一个更新后的任务锁写入共享存储区域,包括:
通过至少一个所述第一目标服务将更新后的任务锁分别发送至共享存储区域,随机选择一个更新后的任务锁写入共享存储区域,或者将发送时间最快的任务锁写入共享存储区域。
根据本发明提供的一种分布式任务调度方法,通过至少一个所述第一目标服务再次访问所述共享存储区域,确定与写入所述共享存储区域的更细后的任务锁对应的第一目标服务为最终目标服务,包括:
通过至少一个所述第一目标服务再次访问所述共享存储区域,分别获取写入所述共享存储区域的更新后的任务锁;
通过至少一个所述第一目标服务解析所述更新后的任务锁,得到所述任务锁中的第一目标服务标识;
通过至少一个所述第一目标服务分别与解析得到的所述第一目标服务标识进行对比,将对比一致的第一目标服务作为所述最终目标服务。
本发明提供一种分布式任务调度装置,包括:
触发模块,用于在接收到定时触发指令的情况下,触发集群中的多个本地服务并发访问共享存储区域,以获取任务锁;其中,所述任务锁包括过期时间点;
第一确定模块,用于通过多个所述本地服务分别对比所述任务锁中的过期时间点和本地服务的当前时间点,确定所述当前时间点晚于所述过期时间点的本地服务为第一目标服务;
任务锁更新模块,用于通过至少一个所述第一目标服务分别更新任务锁,将更新后的任务锁分别发送至共享存储区域,以将其中一个更新后的任务锁写入共享存储区域;其中,所述更新后的任务锁包括下一个过期时间点;
任务执行模块,用于通过至少一个所述第一目标服务再次访问所述共享存储区域,确定与写入所述共享存储区域的更新后的任务锁对应的第一目标服务为最终目标服务,通过所述最终目标服务执行定时任务。
根据本发明提供的一种分布式任务调度装置,还包括:第二确定模块,用于若确定所述本地服务的当前时间点不晚于所述任务锁中的过期时间点,所述本地服务放弃执行所述定时任务。
根据本发明提供的一种分布式任务调度装置,所述任务锁更新模块,具体用于:通过每个所述第一目标服务分别将获取到的任务锁中的过期时间点更新为下一个过期时间点,将所述任务锁中执行所述定时任务的本地服务标识更新为对应的所述第一目标服务标识。
根据本发明提供的一种分布式任务调度装置,所述任务执行模块,具体用于:通过至少一个所述第一目标服务将更新后的任务锁分别发送至共享存储区域,随机选择一个更新后的任务锁写入共享存储区域,或者将发送时间最快的任务锁写入共享存储区域。
根据本发明提供的一种分布式任务调度装置,所述任务执行模块,具体用于:
通过至少一个所述第一目标服务再次访问所述共享存储区域,分别获取写入所述共享存储区域的更新后的任务锁;
通过至少一个所述第一目标服务解析所述更新后的任务锁,得到所述任务锁中的第一目标服务标识;
通过至少一个所述第一目标服务分别与解析得到的所述第一目标服务标识进行对比,将对比一致的第一目标服务作为所述最终目标服务。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述分布式任务调度方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述分布式任务调度方法的步骤。
本发明提供的分布式任务调度方法和装置,通过定时触发多个本地服务并发访问共享存储区域获取任务锁,在确定任务锁中的过期时间点晚于本地服务的当前时间点的情况下,则意味着当前的任务执行周期结束,需要重新触发本地服务更新任务锁并发送至共享存储区域,并由成功将任务锁写入共享存储区域的本地服务执行任务,即使在当前时间周期内执行任务失败,会在下一个时间周期内由其他本地服务继续执行任务,从而不会导致分布式锁设置过期时间失败的情况发生,实现了高容错性的分布式任务的执行。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的分布式任务调度方法的流程示意图之一;
图2是本发明提供的分布式任务调度方法的流程示意图之二;
图3是本发明提供的分布式任务调度装置的结构示意图;
图4是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1-图4描述本发明的分布式任务调度方法和装置、电子设备以及存储介质进行示意性的说明。
本发明实施例公开了一种分布式任务调度方法,参见图1,包括:
步骤101、在接收到定时触发指令的情况下,触发集群中的多个本地服务并发访问共享存储区域,以获取任务锁。
需要解释的是,所述任务锁包括过期时间点和执行任务的本地服务标识。其中,本地服务标识可以为本地服务的IP地址。
本地服务,可以为本地终端,每个本地终端设置有对应的本地服务。多个本地服务构成了分布式集群。每次选择分布式集群中的一个本地服务执行定时任务。
其中,定时触发指令可以为调度程序Scheduler启动之后,按照预设的触发时间间隔而触发。其中,时间间隔可以为1小时、1秒、5毫秒等。
另外,共享存储区域用于存储任务锁,用于成功获取到任务锁的本地服务执行任务。本实施例中,共享存储区域可以为Redis缓存,Redis缓存的每个命令均为原子性,可以保证只有一个任务锁的存储。
本实施例中,在每次获取任务锁的过程中,集群中的多个本地服务均可以获取任务锁。这样可以保证多个本地服务获取的任务锁彼此一致。
步骤102、通过多个所述本地服务分别对比所述任务锁中的过期时间点和本地服务的当前时间点,确定所述当前时间点晚于所述过期时间点的本地服务为第一目标服务。
其中,本地服务的当前时间点,可以通过本地服务自身设置的时间来确定。
若当前时间点不晚于任务锁中的过期时间点,则说明当前周期内的定时任务还未被执行完毕,则不进行任务锁的更新。
若当前时间点晚于任务锁中的过期时间点,则说明当前周期内的定时任务已经被执行完毕,则需要进行任务锁的更新。
在实际应用时,以集群中包括10个本地服务为例,若其中3个本地服务确定当前时间点为2021年3月9日23:59:01:12,其中2个本地服务确定当前时间点为2021年3月9日23:59:01:22,其中4个本地服务确定当前时间点为2021年3月9日23:58:01:32,其中1个本地服务确定当前时间点为2021年3月9日23:58:26:32,任务锁中的过期时间点2021年3月9日23:59:01:01,则确定其中5个本地服务晚于任务锁中的过期时间点,将该5个本地服务作为第一目标服务。
步骤103、通过至少一个所述第一目标服务分别更新任务锁,将更新后的任务锁分别发送至共享存储区域,以将其中一个更新后的任务锁写入共享存储区域;其中,所述更新后的任务锁包括下一个过期时间点。
具体地,更新任务锁的步骤包括:
通过每个所述第一目标服务分别将获取到的任务锁中的过期时间点更新为下一个过期时间点,将所述任务锁中执行所述定时任务的本地服务标识更新为对应的所述第一目标服务标识。
例如,集群中包括5个第一目标服务,该5个第一目标服务分别将任务锁中的过期时间点设置为2021年3月10日23:59:01:01,并将本地服务标识分别设置为对应的第一目标服务标识。
其中,第一目标服务标识可以为第一目标服务的IP地址。
需要说明的是,在更新任务锁后,至少一个第一目标服务发送至共享存储区域的任务锁中的第一目标服务标识彼此不同,以区分每个第一目标服务发送的任务锁。
本步骤103中,由于共享存储区域为Redis缓存,其每次存储的任务锁只有一个。任务锁以键值对的形式存储,键值为当前过期时间点+执行任务的第一目标服务IP。
所以,在多个第一目标服务将更新后的任务锁发送至共享存储区域的情况下,只会有其中一个更新后的任务锁写入共享存储区域。
具体地,该其中一个更新后的任务锁可以为随机选择的一个第一目标服务的任务锁,也可以为发送时间最快的第一目标服务的任务锁。
步骤104、通过至少一个所述第一目标服务再次访问所述共享存储区域,确定与写入所述共享存储区域的更新后的任务锁对应的第一目标服务为最终目标服务,通过所述最终目标服务执行定时任务。
通过步骤104,可以确定最终为哪个第一目标服务写入共享存储区域的更新后的任务锁,那么就将该第一目标服务作为最终目标服务执行定时任务。
该第一目标服务会在当前时间至设置的下一个过期时间的时间段内执行定时任务,并在该时间段内继续通过定时触发指令触发集群中的多个本地服务访问共享存储区域,并在到达下一个过期时间的情况下重新执行选择第一目标服务的步骤。
通过本实施例的方法,即使当前时间段内的第一目标服务因为宕机、网络故障等原因无法继续执行定时任务,也会在下个时间段内继续重新选择其他的本地服务执行任务。
本发明实施例提供的分布式任务调度方法,通过定时触发多个本地服务并发访问共享存储区域获取任务锁,在确定任务锁中的过期时间点晚于本地服务的当前时间点的情况下,则意味着当前的任务执行周期结束,需要重新触发本地服务更新任务锁并发送至共享存储区域,并由成功将任务锁写入共享存储区域的本地服务执行任务,即使在当前周期内执行任务失败,会在下一个周期内由其他本地服务继续执行任务,从而不会导致分布式锁设置过期时间失败的情况发生,实现了高容错性的分布式任务的执行。
为了进一步地对本发明实施例的方法进行说明,本发明实施例还公开了一种分布式任务调度方法,以集群中包括5个本地服务为例进行说明。参见图2,所述方法包括:
步骤201、在接收到定时触发指令的情况下,触发集群中的5个本地服务并发访问共享存储区域,以获取任务锁。
本地服务,可以为本地终端,每个本地终端设置有对应的本地服务。多个本地服务构成了分布式集群。
其中,定时触发指令可以为调度程序Scheduler启动之后,按照预设的触发时间间隔而触发。其中,时间间隔可以为5毫秒等。
步骤202、通过5个本地服务分别对比所述任务锁中的过期时间点和本地服务的当前时间点,分别执行步骤203和204。
步骤203、若确定所述本地服务的当前时间点不晚于所述任务锁中的过期时间点,所述本地服务放弃执行所述定时任务。
步骤204、若当前时间点晚于所述过期时间点,确定所述当前时间点晚于所述过期时间点的本地服务为第一目标服务。
本实施例中,每个本地服务的当前时间点和过期时间点如下表1所示。
表1
则确定本地服务2、3、4的当前时间点晚于过期时间点,将本地服务2、3、4确定为第一目标服务。
步骤205、通过3个第一目标服务分别将获取到的任务锁中的过期时间点更新为下一个过期时间点,将所述任务锁中执行所述定时任务的本地服务标识更新为对应的所述第一目标服务标识。
其中,下一个过期时间点为2020/5/3 23:00:11:30,则:
本地服务2更新后的任务锁为下一个过期时间点+本地服务2的IP;
本地服务3更新后的任务锁为下一个过期时间点+本地服务3的IP;
本地服务4更新后的任务锁为下一个过期时间点+本地服务4的IP。
步骤206、通过3个第一目标服务分别将更新后的任务锁分别发送至共享存储区域,以将其中一个更新后的任务锁写入共享存储区域。
其中,所述更新后的任务锁包括下一个过期时间点。
在Redis缓存接收到该3个更新后的任务锁的情况下,若本地服务3发送的任务锁速度最快,则将本地服务3的任务锁写入Redis缓存。
步骤207、通过3个第一目标服务再次访问所述共享存储区域,分别获取写入所述共享存储区域的更新后的任务锁。
本步骤中,3个第一目标服务获取的更新后的任务锁均一致,以判断其中哪一个第一目标服务作为最终目标服务。
步骤208、通过3个第一目标服务解析所述更新后的任务锁,得到所述任务锁中的第一目标服务标识。
步骤209、通过3个所述第一目标服务分别与解析得到的所述第一目标服务标识进行对比,将对比一致的第一目标服务作为所述最终目标服务,通过所述最终目标服务执行定时任务。
具体地,3个第一目标服务获取的任务锁均为本地服务3的任务锁。在获取到更新后的任务锁后,3个第一目标服务分别对任务锁进行解析得到本地服务3的IP标识。然后通过对比,确定目标服务3为最终的目标服务,通过目标服务3执行定时任务。
通过本实施例的方法,通过定时触发多个本地服务并发访问共享存储区域获取任务锁,在确定任务锁中的过期时间点晚于本地服务的当前时间点的情况下,则意味着当前的任务执行周期结束,需要重新触发本地服务更新任务锁并发送至共享存储区域,并由成功将任务锁写入共享存储区域的本地服务执行任务,即使在当前时间周期内执行任务失败,会在下一个时间周期内由其他本地服务继续执行任务,从而不会导致分布式锁设置过期时间失败的情况发生,实现了高容错性的分布式任务的执行。
另外,本实施例的方法通过定时触发集群中的多个本地服务并发访问共享存储区域以获取任务锁,判断任务锁中的过期时间点是否晚于本地服务的当前时间点,从而保证定时任务的周期性执行。
本实施例中,利用Redis所有单个命令的执行都是原子性的特点,通过Redis的GET命令获取Redis缓存中的任务锁、SET命令获取对任务锁进行更新,GETSET命令来重新获取更新后的任务锁,并最终继续通过SET命令确定最终目标服务,通过JDK的ScheduledThreadPoolExecutor作为调度工具,实现本实施例的任务调度方法。
下面对本发明提供的分布式任务调度装置进行描述,下文描述的分布式任务调度装置与上文描述的分布式任务调度方法可相互对应参照。
本实施例公开了一种分布式任务调度装置,参见图3,包括:
触发模块301,用于在接收到定时触发指令的情况下,触发集群中的多个本地服务并发访问共享存储区域,以获取任务锁;其中,所述任务锁包括过期时间点;
第一确定模块302,用于通过多个所述本地服务分别对比所述任务锁中的过期时间点和本地服务的当前时间点,确定所述当前时间点晚于所述过期时间点的本地服务为第一目标服务;
任务锁更新模块303,用于通过至少一个所述第一目标服务分别更新任务锁,将更新后的任务锁分别发送至共享存储区域,以将其中一个更新后的任务锁写入共享存储区域;其中,所述更新后的任务锁包括下一个过期时间点;
任务执行模块304,用于通过至少一个所述第一目标服务再次访问所述共享存储区域,确定与写入所述共享存储区域的更新后的任务锁对应的第一目标服务为最终目标服务,通过所述最终目标服务执行所述定时任务。
可选地,分布式任务调度装置还包括:第二确定模块,用于若确定所述本地服务的当前时间点不晚于所述任务锁中的过期时间点,所述本地服务放弃执行定时任务。
可选地,所述任务锁更新模块303,具体用于:通过每个所述第一目标服务分别将获取到的任务锁中的过期时间点更新为下一个过期时间点,将所述任务锁中执行所述定时任务的本地服务标识更新为对应的所述第一目标服务标识。
可选地,所述任务执行模块304,具体用于:通过至少一个所述第一目标服务将更新后的任务锁分别发送至共享存储区域,随机选择一个更新后的任务锁写入共享存储区域,或者将发送时间最快的任务锁写入共享存储区域。
可选地,所述任务执行模块304,具体用于:
通过至少一个所述第一目标服务再次访问所述共享存储区域,分别获取写入所述共享存储区域的更新后的任务锁;
通过至少一个所述第一目标服务解析所述更新后的任务锁,得到所述任务锁中的第一目标服务标识;
通过至少一个所述第一目标服务分别与解析得到的所述第一目标服务标识进行对比,将对比一致的第一目标服务作为所述最终目标服务。
本发明实施例提供的分布式任务调度装置,通过定时触发多个本地服务并发访问共享存储区域获取任务锁,在确定任务锁中的过期时间点晚于本地服务的当前时间点的情况下,则意味着当前的任务执行周期结束,需要重新触发本地服务更新任务锁并发送至共享存储区域,并由成功将任务锁写入共享存储区域的本地服务执行任务,即使在当前周期内执行任务失败,会在下一个周期内由其他本地服务继续执行任务,从而不会导致分布式锁设置过期时间失败的情况发生,实现了高容错性的分布式任务的执行。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行分布式任务调度方法,该方法包括:
在接收到定时触发指令的情况下,触发集群中的多个本地服务并发访问共享存储区域,以获取任务锁;其中,所述任务锁包括过期时间点;
通过多个所述本地服务分别对比所述任务锁中的过期时间点和本地服务的当前时间点,确定所述当前时间点晚于所述过期时间点的本地服务为第一目标服务;
通过至少一个所述第一目标服务分别更新任务锁,将更新后的任务锁分别发送至共享存储区域,以将其中一个更新后的任务锁写入共享存储区域;其中,所述更新后的任务锁包括下一个过期时间点;
通过至少一个所述第一目标服务再次访问所述共享存储区域,确定与写入所述共享存储区域的更新后的任务锁对应的第一目标服务为最终目标服务,通过所述最终目标服务执行所述定时任务。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的分布式任务调度方法,该方法包括:
在接收到定时触发指令的情况下,触发集群中的多个本地服务并发访问共享存储区域,以获取任务锁;其中,所述任务锁包括过期时间点;
通过多个所述本地服务分别对比所述任务锁中的过期时间点和本地服务的当前时间点,确定所述当前时间点晚于所述过期时间点的本地服务为第一目标服务;
通过至少一个所述第一目标服务分别更新任务锁,将更新后的任务锁分别发送至共享存储区域,以将其中一个更新后的任务锁写入共享存储区域;其中,所述更新后的任务锁包括下一个过期时间点;
通过至少一个所述第一目标服务再次访问所述共享存储区域,确定与写入所述共享存储区域的更新后的任务锁对应的第一目标服务为最终目标服务,通过所述最终目标服务执行定时任务。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的分布式任务调度方法,该方法包括:
在接收到定时触发指令的情况下,触发集群中的多个本地服务并发访问共享存储区域,以获取任务锁;其中,所述任务锁包括过期时间点;
通过多个所述本地服务分别对比所述任务锁中的过期时间点和本地服务的当前时间点,确定所述当前时间点晚于所述过期时间点的本地服务为第一目标服务;
通过至少一个所述第一目标服务分别更新任务锁,将更新后的任务锁分别发送至共享存储区域,以将其中一个更新后的任务锁写入共享存储区域;其中,所述更新后的任务锁包括下一个过期时间点;
通过至少一个所述第一目标服务再次访问所述共享存储区域,确定与写入所述共享存储区域的更新后的任务锁对应的第一目标服务为最终目标服务,通过所述最终目标服务执行定时任务。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种分布式任务调度方法,其特征在于,包括:
在接收到定时触发指令的情况下,触发集群中的多个本地服务并发访问共享存储区域,以获取任务锁;其中,所述任务锁包括过期时间点;
通过多个所述本地服务分别对比所述任务锁中的过期时间点和本地服务的当前时间点,确定所述当前时间点晚于所述过期时间点的本地服务为第一目标服务;
通过至少一个所述第一目标服务分别更新任务锁,将更新后的任务锁分别发送至共享存储区域,以将其中一个更新后的任务锁写入共享存储区域;其中,所述更新后的任务锁包括下一个过期时间点;
通过至少一个所述第一目标服务再次访问所述共享存储区域,确定与写入所述共享存储区域的更新后的任务锁对应的第一目标服务为最终目标服务,通过所述最终目标服务执行定时任务;
其中,通过至少一个所述第一目标服务分别更新任务锁,包括:通过每个所述第一目标服务分别将获取到的任务锁中的过期时间点更新为下一个过期时间点,将所述任务锁中执行所述定时任务的本地服务标识更新为对应的所述第一目标服务标识;
通过至少一个所述第一目标服务再次访问所述共享存储区域,确定与写入所述共享存储区域的更新后的任务锁对应的第一目标服务为最终目标服务,包括:通过至少一个所述第一目标服务再次访问所述共享存储区域,分别获取写入所述共享存储区域的更新后的任务锁;通过至少一个所述第一目标服务解析所述更新后的任务锁,得到所述任务锁中的第一目标服务标识;通过至少一个所述第一目标服务分别与解析得到的所述第一目标服务标识进行对比,将对比一致的第一目标服务作为所述最终目标服务。
2.根据权利要求1所述的分布式任务调度方法,其特征在于,所述方法还包括:若确定所述本地服务的当前时间点不晚于所述任务锁中的过期时间点,所述本地服务放弃执行所述定时任务。
3.根据权利要求1所述的分布式任务调度方法,其特征在于,通过至少一个所述第一目标服务将更新后的任务锁分别发送至共享存储区域,以将其中一个更新后的任务锁写入共享存储区域,包括:
通过至少一个所述第一目标服务将更新后的任务锁分别发送至共享存储区域,随机选择一个更新后的任务锁写入共享存储区域,或者将发送时间最快的任务锁写入共享存储区域。
4.一种分布式任务调度装置,其特征在于,包括:
触发模块,用于在接收到定时触发指令的情况下,触发集群中的多个本地服务并发访问共享存储区域,以获取任务锁;其中,所述任务锁包括过期时间点;
第一确定模块,用于通过多个所述本地服务分别对比所述任务锁中的过期时间点和本地服务的当前时间点,确定所述当前时间点晚于所述过期时间点的本地服务为第一目标服务;
任务锁更新模块,用于通过至少一个所述第一目标服务分别更新任务锁,将更新后的任务锁分别发送至共享存储区域,以将其中一个更新后的任务锁写入共享存储区域;其中,所述更新后的任务锁包括下一个过期时间点;
任务执行模块,用于通过至少一个所述第一目标服务再次访问所述共享存储区域,确定与写入所述共享存储区域的更新后的任务锁对应的第一目标服务为最终目标服务,通过所述最终目标服务执行定时任务;
其中,所述任务锁更新模块,具体用于通过每个所述第一目标服务分别将获取到的任务锁中的过期时间点更新为下一个过期时间点,将所述任务锁中执行所述定时任务的本地服务标识更新为对应的所述第一目标服务标识;
所述任务执行模块,具体用于:通过至少一个所述第一目标服务再次访问所述共享存储区域,分别获取写入所述共享存储区域的更新后的任务锁;通过至少一个所述第一目标服务解析所述更新后的任务锁,得到所述任务锁中的第一目标服务标识;通过至少一个所述第一目标服务分别与解析得到的所述第一目标服务标识进行对比,将对比一致的第一目标服务作为所述最终目标服务。
5.根据权利要求4所述的分布式任务调度装置,其特征在于,还包括:第二确定模块,用于若确定所述本地服务的当前时间点不晚于所述任务锁中的过期时间点,所述本地服务放弃执行所述定时任务。
6.根据权利要求4所述的分布式任务调度装置,其特征在于,所述任务执行模块,具体用于:通过至少一个所述第一目标服务将更新后的任务锁分别发送至共享存储区域,随机选择一个更新后的任务锁写入共享存储区域,或者将发送时间最快的任务锁写入共享存储区域。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至3任一项所述分布式任务调度方法的步骤。
8.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至3任一项所述分布式任务调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110522999.6A CN113238862B (zh) | 2021-05-13 | 2021-05-13 | 一种分布式任务调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110522999.6A CN113238862B (zh) | 2021-05-13 | 2021-05-13 | 一种分布式任务调度方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113238862A CN113238862A (zh) | 2021-08-10 |
CN113238862B true CN113238862B (zh) | 2024-04-16 |
Family
ID=77134037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110522999.6A Active CN113238862B (zh) | 2021-05-13 | 2021-05-13 | 一种分布式任务调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113238862B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9817703B1 (en) * | 2013-12-04 | 2017-11-14 | Amazon Technologies, Inc. | Distributed lock management using conditional updates to a distributed key value data store |
CN107688500A (zh) * | 2017-07-26 | 2018-02-13 | 阿里巴巴集团控股有限公司 | 一种分布式任务处理方法、装置、系统及设备 |
CN107943594A (zh) * | 2016-10-13 | 2018-04-20 | 北京京东尚科信息技术有限公司 | 数据获取方法和装置 |
WO2020211382A1 (zh) * | 2019-04-19 | 2020-10-22 | 深圳壹账通智能科技有限公司 | 基于Redis分布式锁的超时时间动态调整方法及系统 |
CN111813507A (zh) * | 2020-07-22 | 2020-10-23 | 山东超越数控电子股份有限公司 | 一种基于sanlock的虚拟机高可用的方法、系统、设备及介质 |
CN112463318A (zh) * | 2020-11-17 | 2021-03-09 | 深圳市优必选科技股份有限公司 | 一种定时任务处理方法、装置及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109120678B (zh) * | 2018-07-26 | 2021-05-14 | 北京百度网讯科技有限公司 | 用于分布式存储系统的服务托管的方法和装置 |
US10860387B2 (en) * | 2019-03-15 | 2020-12-08 | Red Hat, Inc. | Dynamic distributed work allocation |
-
2021
- 2021-05-13 CN CN202110522999.6A patent/CN113238862B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9817703B1 (en) * | 2013-12-04 | 2017-11-14 | Amazon Technologies, Inc. | Distributed lock management using conditional updates to a distributed key value data store |
CN107943594A (zh) * | 2016-10-13 | 2018-04-20 | 北京京东尚科信息技术有限公司 | 数据获取方法和装置 |
CN107688500A (zh) * | 2017-07-26 | 2018-02-13 | 阿里巴巴集团控股有限公司 | 一种分布式任务处理方法、装置、系统及设备 |
WO2020211382A1 (zh) * | 2019-04-19 | 2020-10-22 | 深圳壹账通智能科技有限公司 | 基于Redis分布式锁的超时时间动态调整方法及系统 |
CN111813507A (zh) * | 2020-07-22 | 2020-10-23 | 山东超越数控电子股份有限公司 | 一种基于sanlock的虚拟机高可用的方法、系统、设备及介质 |
CN112463318A (zh) * | 2020-11-17 | 2021-03-09 | 深圳市优必选科技股份有限公司 | 一种定时任务处理方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113238862A (zh) | 2021-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2749339C1 (ru) | Способ управления оборудованием, кластерная система, электронное устройство и читаемый носитель данных | |
CN106936622A (zh) | 一种分布式存储系统升级方法和装置 | |
CN109918187B (zh) | 任务调度方法、装置、设备和存储介质 | |
CN111258591B (zh) | 程序部署任务执行方法、装置、计算机设备和存储介质 | |
CN111352943A (zh) | 实现数据一致性的方法和装置、服务器和终端 | |
CN112631686A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN111371599A (zh) | 一种基于etcd的集群容灾管理系统 | |
CN111092865A (zh) | 一种安全事件分析方法及系统 | |
CN109257396B (zh) | 一种分布式锁调度方法及装置 | |
CN110704172B (zh) | 集群系统定时任务调度方法及集群系统 | |
CN111708793A (zh) | 一种分布式应用锁实现方法及装置 | |
US20070039000A1 (en) | Lock order determination method and system | |
CN113238862B (zh) | 一种分布式任务调度方法和装置 | |
JP2016157399A (ja) | 情報処理装置、情報処理システム及び排他制御プログラム | |
CN112564980A (zh) | 一种基于微服务架构的服务监控方法及系统 | |
CN109951518A (zh) | 一种离线数据同步方法及装置 | |
CN113342499B (zh) | 分布式任务调用方法、装置、设备、存储介质、程序产品 | |
CN107885593B (zh) | 用户认证方法和装置 | |
CN115220891A (zh) | 一种处理高并发批量任务的方法及相关产品 | |
CN111381932B (zh) | 触发应用程序更改的方法、装置、电子设备及存储介质 | |
CN112395119B (zh) | 异常数据处理方法、装置、服务器及存储介质 | |
CN113254482A (zh) | 一种业务数据异步存储的方法、系统及介质 | |
CN111143177A (zh) | Ibm主机的rmf iii数据的收集方法、系统、装置及存储介质 | |
CN108804214B (zh) | 一种异步任务的调度方法、装置以及电子设备 | |
CN116089044A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 221, 2nd floor, Block C, 18 Kechuang 11th Street, Daxing Economic and Technological Development Zone, Beijing, 100176 Applicant after: Jingdong Technology Holding Co.,Ltd. Address before: Room 221, 2nd floor, Block C, 18 Kechuang 11th Street, Daxing Economic and Technological Development Zone, Beijing, 100176 Applicant before: Jingdong Digital Technology Holding Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |