CN108563502B - 一种任务调度方法和装置 - Google Patents
一种任务调度方法和装置 Download PDFInfo
- Publication number
- CN108563502B CN108563502B CN201711342531.9A CN201711342531A CN108563502B CN 108563502 B CN108563502 B CN 108563502B CN 201711342531 A CN201711342531 A CN 201711342531A CN 108563502 B CN108563502 B CN 108563502B
- Authority
- CN
- China
- Prior art keywords
- task
- scheduling node
- generated
- version number
- database
- 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/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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/5083—Techniques for rebalancing the load in a distributed system
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
技术领域
本发明实施例涉及任务调度领域,尤其涉及一种任务调度方法和装置。
背景技术
目前,经常会有许多需要定时处理的任务。定时处理的任务比如:生成周报的任务需要每周执行一次,发送邮件的任务需要每天凌晨3点执行一次、分析日志的任务需要每天凌晨1点执行一次,日志清理的任务需要每天凌晨12点执行一次;信息采集的任务需要每两个小时执行一次等。
这些任务有一些相同点:需要周期性定时执行。对于这类需要周期性定时执行的任务,现有技术中一般有两种常用的方式。第一种方式是:以调度节点生成任务完成后的一个周期后生成下一次任务。第二种方式是:以调度节点生成任务开始后的一个周期后生成下一次任务。对于第一种方式,由于调度节点生成任务开始到生成任务完成的这个过程中会消耗一定的时长,因此,第一次生成任务之后的每次生成任务均会出现延时,这种延时会随着时间的积累不断累加,使得生成任务的时间越来越迟,进而造成周期性定时执行任务的时间不准确的问题。对于第二种方式:在调度节点唤醒后,发现本次开始生成任务的时间距离上一次生成任务的时间不够一个周期时,就不会生成本次任务。这样,会造成漏任务的问题。
发明内容
本发明实施例提供一种任务调度方法和装置,用以解决现有技术中存在处理任务时刻的不准确性及漏任务的问题。
本发明实施例提供一种任务调度方法,包括:调度节点获取任务数据库中待处理任务对应的当前记录;所述当前记录中包括生成任务标识、乐观锁版本号;所述调度节点确定所述生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识;所述调度节点向所述任务数据库发送更新消息;其中,所述更新消息中包括更新后的乐观锁版本号和更新后的生成任务标识;所述更新消息用于使所述任务数据库确定是否更新所述当前记录;所述调度节点接收所述任务数据库发送的更新响应;并根据所述更新响应确定是否触发所述待处理任务。
可选地,所述更新响应中包括所述任务数据库中当前生成任务标识;所述方法还包括:所述调度节点根据接收到的所述更新响应中的所述当前生成任务标识更新本地存储的所述本地生成任务标识。
可选地,所述更新响应包括更新成功或更新失败;所述根据所述更新响应确定是否触发所述待处理任务,包括:当所述调度节点接收到所述任务数据库发送的更新响应为更新成功时,触发所述待处理任务,以使业务节点执行所述待处理任务;当所述调度节点接收到的所述任务数据库发送的更新响应为更新失败时,确定所述待处理任务生成失败。
可选地,所述调度节点获取任务数据库中待处理任务对应的当前记录之前,还包括:所述调度节点首次启动时,获取所述任务数据库的当前时刻和所述当前记录;所述当前记录中还包括生成任务周期以及预定生成任务时刻;所述调度节点根据所述任务数据库的当前时刻以及所述预定生成任务时刻,确定首次唤醒所述调度节点的时刻;根据所述生成任务周期确定后续唤醒所述调度节点的时刻。
本发明实施例提供一种任务调度方法,包括:任务数据库向调度节点发送待处理任务对应的当前记录;所述当前记录中包括生成任务标识、乐观锁版本号;所述任务数据库接收调度节点发送的更新消息;所述更新消息中包括更新后的乐观锁版本号和更新后的生成任务标识;其中,所述更新后的乐观锁版本号和更新后的生成任务标识是所述调度节点确定所述生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识得到的;所述任务数据库根据所述更新后的乐观锁的版本号是否大于所述乐观锁版本号,确定是否更新所述待处理任务对应的当前记录中的乐观锁版本号和生成任务标识;所述任务数据库生成更新响应。
本发明实施例提供一种任务调度装置,包括:获取单元,用于获取任务数据库中待处理任务对应的当前记录;所述当前记录中包括生成任务标识、乐观锁版本号;处理单元,用于确定所述生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识;发送单元,用于向所述任务数据库发送更新消息;其中,所述更新消息中包括更新后的乐观锁版本号和更新后的生成任务标识;所述更新消息用于使所述任务数据库确定是否更新所述当前记录;接收单元,用于接收所述任务数据库发送的更新响应;并根据所述更新响应确定是否触发所述待处理任务。
可选地,所述更新响应中包括所述任务数据库中当前生成任务标识;所述处理单元,还用于:根据接收到的所述更新响应中的所述当前生成任务标识更新本地存储的所述本地生成任务标识。
可选地,所述更新响应包括更新成功或更新失败;所述接收单元,还用于当接收到所述任务数据库发送的更新响应为更新成功时,触发所述待处理任务,以使业务节点执行所述待处理任务;当接收到的所述任务数据库发送的更新响应为更新失败时,确定所述待处理任务生成失败。
可选地,所述获取单元,还用于:首次启动时,获取所述任务数据库的当前时刻和所述当前记录;所述当前记录中还包括生成任务周期以及预定生成任务时刻;所述处理单元,用于:根据所述任务数据库的当前时刻以及所述预定生成任务时刻,确定首次唤醒所述调度节点的时刻;根据所述生成任务周期确定后续唤醒所述调度节点的时刻。
本发明实施例提供一种任务调度装置,包括:发送单元,用于向调度节点发送待处理任务对应的当前记录;所述当前记录中包括生成任务标识、乐观锁版本号;接收单元,用于接收调度节点发送的更新消息;所述更新消息中包括更新后的乐观锁版本号和更新后的生成任务标识;其中,所述更新后的乐观锁版本号和更新后的生成任务标识是所述调度节点确定所述生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识得到的;处理单元,用于根据所述更新后的乐观锁的版本号是否大于所述乐观锁版本号,确定是否更新所述待处理任务对应的当前记录中的乐观锁版本号和生成任务标识;生成更新响应。
本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行上述所述的方法。
本发明实施例提供了一种计算机设备,包括:存储器,用于存储程序指令;处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述所述的方法。
由于本发明实施例中,调度节点获取任务数据库中待处理任务对应的当前记录,在确定所述当前记录中的生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识;所述调度节点向所述任务数据库发送更新消息,所述更新消息用于使所述任务数据库确定是否更新所述当前记录。即本发明实施例中,通过调度节点本地存储的本地生成任务标识与获取到的任务数据库中的当前记录中的生成任务标识是否一致来确定所述待处理任务是否生成,不需要考虑生成任务的时刻,避免了现有技术中使用上次生成任务时刻来确定下一次生成任务时刻造成生成任务时刻的不准确性及漏任务的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种分布式调度系统架构示意图;
图2为本发明实施例提供的一种任务调度方法流程示意图;
图3为本发明实施例提供的另一种任务调度方法流程示意图;
图4为本发明实施例提供的一种任务调度装置的结构示意图;
图5为本发明实施例提供的另一种任务调度装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1示出了应用本发明实施例的一种分布式调度系统的架构示意图。如图1所示,该分布式调度系统架构可以包括任务数据库101、调度集群102以及业务集群103。各集群之间基于自定义协议或基于TCP/IP网络通信协议通信。本发明实施例中,分布式调度系统可以为TSM系统,TSM系统可实现多节点无状态部署,节点无序、具有横向扩展能力;而且调度节点进行调度任务与业务节点执行任务之间的逻辑解耦。只要有一个调度节点正常工作,即可实现任务的处理,且当故障节点恢复后能无缝接入。
任务数据库101用于存储待处理任务对应的记录,比如待处理任务标识、待处理任务状态(初始、生成、触发和查询)、生成任务周期、上次生成任务的时刻、上次任务触发的时刻、触发方式(手动或自动)、乐观锁版本号、生成任务标识、预定生成任务时刻、开关状态等信息。所述待处理任务包括周期性定时任务等。
调度集群102用于对任务数据库101中的待处理任务进行调度;包括获取任务数据库101中的待处理任务对应的记录;周期性监控待处理任务的状态;对生成任务失败或者超时的待处理任务进行告警等。所述调度集群102包括至少两个调度节点,图1以两个调度节点102a和102b为例说明。至少两个调度节点可以部署在同一个服务器也可以部署在不同的服务器,图1以两个调度节点102a和102b部署在不同的服务器上为例说明。调度集群102中的调度节点之间完全解耦,从而方便调度集群的扩展与升级,避免单节点故障影响调度任务,提高工作效率。
业务集群103用于当调度节点触发任务时,调用业务节点中的接口进行任务处理,业务集群也可以通过一个统一的接口接收调度节点发送的任务触发消息,并根据业务集群内的各业务节点的负载情况分配触发的待处理任务,分配到该待处理业务节点执行相应的任务。业务集群103中包括至少一个业务节点,图1中以三个业务节点103a、103b、103c为例说明。
本发明实施例中,业务节点也可以和调度节点部署在同一台服务器中,也可以部署在不同的服务器中。当到达待处理任务的触发时刻时,调度节点向业务节点发送任务触发的消息,以调用业务节点的接口,并有业务节点完成业务的处理,该任务触发消息中包含任务标识。比如:待处理任务的具体内容是在预定时间向某邮箱地址发送内容为“XXX”的邮件,则当达到预定时间时,业务节点在预定时间向预定的邮箱地址发送预设内容的邮件。
基于图1所示的系统架构,图2示例性示出了本发明实施例提供的一种任务调度方法流程示意图,如图2所示,该任务调度方法包括以下步骤:
步骤201,调度节点获取任务数据库中待处理任务对应的当前记录;所述当前记录中包括生成任务标识、乐观锁版本号;
步骤202,任务数据库向调度节点发送待处理任务对应的当前记录;
步骤203,所述调度节点确定所述生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识;
步骤204,所述调度节点向所述任务数据库发送更新消息;其中,所述更新消息中包括更新后的乐观锁版本号和更新后的生成任务标识;所述更新消息用于使所述任务数据库确定是否更新所述当前记录;
步骤205,任务数据库接收调度节点发送的更新消息;
步骤206,所述任务数据库根据所述更新后的乐观锁的版本号是否大于所述乐观锁版本号,确定是否更新所述待处理任务对应的当前记录中的乐观锁版本号和生成任务标识;
步骤207,所述任务数据库向所述调度节点发送更新响应;
步骤208,所述调度节点接收所述任务数据库发送的更新响应;并根据所述更新响应确定是否触发所述待处理任务。
由于本发明实施例中,调度节点获取任务数据库中待处理任务对应的当前记录,在确定所述当前记录中的生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识;所述调度节点向所述任务数据库发送更新消息,所述更新消息用于使所述任务数据库确定是否更新所述当前记录。即本发明实施例中,通过调度节点本地存储的本地生成任务标识与获取到的任务数据库中的当前记录中的生成任务标识是否一致来确定所述待处理任务是否生成,不需要考虑生成任务的时刻,避免了现有技术中使用上次生成任务时刻来确定下一次生成任务时刻造成生成任务时刻的不准确性及漏任务的问题。
本发明实施例中,在步骤201中,生成任务标识是任务维度的,每个待处理任务对应一个生成任务标识。乐观锁版本号与任务数据库中的待处理任务对应的记录中的任务状态对应。生成任务标识可以为生成任务版本号,每生成一次任务,所述生成任务版本号加一;任务数据库中的任务状态每改变一次,乐观锁的版本号加一。可选地,在一个生成任务周期内,生成任务标识仅改变一次,但乐观锁版本号改变多次。乐观锁版本号用于使任务数据库确定是否更新当前记录,生成任务标识用于使调度节点确定是否生成任务。可选地,待处理任务对应的记录中的任务状态包括初始状态、生成状态、执行状态和查询状态。当调度节点启动时,所述任务数据库中待处理任务的状态为初始状态;所述任务数据库接收到的所述更新后的乐观锁的版本号大于当前所述乐观锁版本号,将待处理任务对应的当前记录中的乐观锁版本号更新为更新后的乐观锁版本号,将生成任务标识更新为更新后的生成任务标识;且将任务状态更新为生成状态,此时,乐观锁的版本号再更新后的乐观锁的版本号上再加一;调度节点触发待处理任务后,所述任务状态更新为执行,乐观锁的版本号在生成任务状态对应的乐观锁版本上再加一;调度节点查询任务数据库中待处理任务的信息时,将任务状态更新为查询状态,乐观锁的版本号在执行任务状态对应的乐观锁版本上再加一。
本发明实施例中,调度节点获取任务数据库中待处理任务对应的当前记录,所述当前记录中包括乐观锁版本号,之后更新任务数据库的待处理任务对应的记录时,对此乐观锁版本号加一。此时,任务数据库将接收到的更新后的乐观锁版本号与任务数据库对应当前记录中的当前版号进行比对,如果更新后的乐观锁的版本号大于任务数据库中当前乐观锁的版本号,则予以更新;否则认为是过期更新消息,拒绝更新。通过乐观锁机制可以保证某调度节点从获取任务数据库中待处理任务的当前记录到最终决定向所述任务数据库发送更新消息的过程中,不会出现重复执行任务的问题。可实现多个调度节点之间对同一任务的处理上互斥,保证了多个调度节点竞争任务的独占性,大大提升了大并发量下的分布式调度系统整体性能表现。
本发明实施例中,所述调度节点获取任务数据库中待处理任务对应的当前记录之前,还包括:所述调度节点首次启动时,获取所述任务数据库的当前时刻和所述当前记录;所述当前记录中还包括生成任务周期以及预定生成任务时刻;所述调度节点根据所述任务数据库的当前时刻以及所述预定生成任务时刻,确定首次唤醒所述调度节点的时刻;根据所述生成任务周期确定后续唤醒所述调度节点的时刻。
对于周期定时任务,在调动节点启动后,调度节点根据当前时刻确定唤醒该调度节点的时刻。比如调度节点获取任务数据库的当前时刻为12:00:00,预定生成任务时刻13:00:00,生成任务周期为24小时;则调度节点从调度节点的当前时刻起经过1个小时后唤醒,之后每经过24小时唤醒一次。
本发明实施例中,任务数据库生成任务标识初始值可预设为零,当调度集群中的调度节点启动后,调度节点处于任务初始化状态,从任务数据库中获取待处理任务对应的当前记录中的生成任务标识,并将获取到的生成任务标识存储在调度节点本地的内存中。
本发明实施例中,所述更新响应中包括所述任务数据库中当前生成任务标识;所述方法还包括:所述调度节点根据接收到的所述更新响应中的所述当前生成任务标识更新本地存储的所述本地生成任务标识。
可选地,调度节点接收到任务数据库发送的更新消息中的生成任务标识,更新存储在本地的生成任务标识。如此,可以确保该调度节点在下一次任务调度时可以与其它调度节点有相同的调度待处理任务的几率。
本发明实施例中,所述更新响应包括更新成功或更新失败;所述根据所述更新响应确定是否触发所述待处理任务,包括:当所述调度节点接收到所述任务数据库发送的更新响应为更新成功时,触发所述待处理任务,以使业务节点执行所述待处理任务;当所述调度节点接收到的所述任务数据库发送的更新响应为更新失败时,确定所述待处理任务生成失败。
可选地,不论所述更新响应为更新成功还是更新失败,更新响应中均包括任务数据库中当前生成任务标识,调度节点根据更新响应中的当前生成任务标识更新本地存储的所述本地生成任务标识。
本发明实施例中,调度节点接收业务节点发送的执行任务的结果,调度节点在预设时长内未接收到业务节点发送的执行结果时,确定所述业务节点执行任务超。当所述调度节点确定任务超时或者接收到业务节点为发送的执行结果为任务执行失败时,调度节点会提供手动接口,使得待处理任务重新执行一次。比如待处理任务为每日13:00:00清理日志,某天13:00:00接收到业务节点发送的执行结果为执行失败,则调度节点触发告警,运维人员先排除故障,之后手动执行一次任务。
为了更清楚的介绍上述方法流程,图3示例性示出了本发明实施例提供的另一种任务调度方法。本发明实施例中,调度节点与任务数据库的乐观锁机制结合,通过任务数据库中的乐观锁机制保证处理任务的独占性,在同一时间不会出现多次处理同一个待处理任务。进一步,通过生成任务标识可确保在一个周期内待处理任务只被执行一次;且可避免现有技术中根据上次生成任务的时刻确定下次生成任务的时刻造成生成任务延迟累计或漏任务的问题。可见,该方案很大程度改善了周期性定时任务执行的准确性。任务调度方法的过程见下述内容。
如图3所示,该方法包括:
步骤301,调度节点启动;
步骤302,调度节点获取任务数据库的当前时刻、预定生成任务时刻以及生成任务周期;
步骤303,调度节点根据任务数据库的当前时刻以及预定生成任务时刻,确定首次唤醒调度节点的时刻;根据生成任务周期确定后续唤醒调度节点的时刻;
步骤304,调度节点在预定生成任务时刻,获取任务数据库中待处理任务对应的当前记录;当前记录中包括生成任务标识、乐观锁版本号;
步骤305,调度节点确定生成任务标识与调度节点本地存储的本地生成任务标识是否一致;若一致,则执行步骤306;若不一致,则执行步骤313;
步骤306,调度节点更新乐观锁版本号和生成任务标识;
步骤307,调度节点向任务数据库发送更新消息;其中,更新消息中包括更新后的乐观锁版本号和更新后的生成任务标识;
步骤308,任务数据库确定更新后的乐观锁的版本号是否大于乐观锁版本号;若大于,执行步骤309;若不大于,执行步骤312;
步骤309,任务数据库将待处理任务对应的当前记录中的乐观锁版本号和生成任务标识更新为更新后的乐观锁版本号和更新后的生成任务标识;
步骤310,任务数据库向调度节点发送更新成功的更新响应;
步骤311,调度节点触发待处理任务,以使业务节点执行待处理任务;
步骤312,任务数据库向调度节点发送更新失败的更新响应;
步骤313,调度节点确定待处理任务生成失败;
步骤310和步骤312之间没有先后顺序,择一执行。
从上述内容可以看出:本发明实施例中,由于本发明实施例中,调度节点获取任务数据库中待处理任务对应的当前记录,在确定所述当前记录中的生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识;所述调度节点向所述任务数据库发送更新消息,所述更新消息用于使所述任务数据库确定是否更新所述当前记录。即本发明实施例中,通过调度节点本地存储的本地生成任务标识与获取到的任务数据库中的当前记录中的生成任务标识是否一致来确定所述待处理任务是否生成,不需要考虑生成任务的时刻,避免了现有技术中使用上次生成任务时刻来确定下一次生成任务时刻造成生成任务时刻的不准确性及漏任务的问题。
基于相同的技术构思,本发明实施例提供一种任务调度装置,该任务调度装置可执行上述方法实施例。图4为本发明实施例提供了一种任务调度装置的结构示意图,如图4所示,该一种任务调度装置400包括获取单元401、处理单元402、发送单元403和接收单元404。其中:
获取单元,用于获取任务数据库中待处理任务对应的当前记录;所述当前记录中包括生成任务标识、乐观锁版本号;处理单元,用于确定所述生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识;发送单元,用于向所述任务数据库发送更新消息;其中,所述更新消息中包括更新后的乐观锁版本号和更新后的生成任务标识;所述更新消息用于使所述任务数据库确定是否更新所述当前记录;接收单元,用于接收所述任务数据库发送的更新响应;并根据所述更新响应确定是否触发所述待处理任务。
可选地,所述更新响应中包括所述任务数据库中当前生成任务标识;所述处理单元,还用于:根据接收到的所述更新响应中的所述当前生成任务标识更新本地存储的所述本地生成任务标识。
可选地,所述更新响应包括更新成功或更新失败;所述接收单元,还用于当接收到所述任务数据库发送的更新响应为更新成功时,触发所述待处理任务,以使业务节点执行所述待处理任务;当接收到的所述任务数据库发送的更新响应为更新失败时,确定任务生成失败。
可选地,所述获取单元,还用于:首次启动时,获取所述任务数据库的当前时刻和所述当前记录;所述当前记录中还包括生成任务周期以及预定生成任务时刻;所述处理单元,用于:根据所述任务数据库的当前时刻以及所述预定生成任务时刻,确定首次唤醒所述调度节点的时刻;根据所述生成任务周期确定后续唤醒所述调度节点的时刻。
基于相同的技术构思,本发明实施例提供一种任务调度装置,该任务调度装置可执行上述方法实施例。图5为本发明实施例提供了一种任务调度装置的结构示意图,如图5所示,该一种任务调度装置500包括发送单元501、接收单元502和处理单元503。其中:
发送单元,用于向调度节点发送待处理任务对应的当前记录;所述当前记录中包括生成任务标识、乐观锁版本号;接收单元,用于接收调度节点发送的更新消息;所述更新消息中包括更新后的乐观锁版本号和更新后的生成任务标识;其中,所述更新后的乐观锁版本号和更新后的生成任务标识是所述调度节点确定所述生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识得到的;处理单元,用于根据所述更新后的乐观锁的版本号是否大于所述乐观锁版本号,确定是否更新所述待处理任务对应的当前记录中的乐观锁版本号和生成任务标识;生成更新响应。
本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行上述所述的方法。
本发明实施例提供了一种计算机设备,包括:存储器,用于存储程序指令;处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述所述的方法。
从上述内容可以看出:本发明实施例中,由于本发明实施例中,调度节点获取任务数据库中待处理任务对应的当前记录,在确定所述当前记录中的生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识;所述调度节点向所述任务数据库发送更新消息,所述更新消息用于使所述任务数据库确定是否更新所述当前记录。即本发明实施例中,通过调度节点本地存储的本地生成任务标识与获取到的任务数据库中的当前记录中的生成任务标识是否一致来确定所述待处理任务是否生成,不需要考虑生成任务的时刻,避免了现有技术中使用上次生成任务时刻来确定下一次生成任务时刻造成生成任务时刻的不准确性及漏任务的问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种任务调度方法,其特征在于,包括:
调度节点被唤醒时,获取任务数据库中待处理任务对应的当前记录;所述当前记录中包括生成任务标识、乐观锁版本号;所述调度节点根据所述任务数据库的当前时刻以及预定生成任务时刻,确定首次唤醒所述调度节点的时刻;根据生成任务周期确定后续唤醒所述调度节点的时刻;
所述调度节点确定所述生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识;
所述调度节点向所述任务数据库发送更新消息;其中,所述更新消息中包括更新后的乐观锁版本号和更新后的生成任务标识;所述更新消息用于使所述任务数据库根据所述更新后的乐观锁版本号是否大于所述当前记录中的乐观锁版本号,确定是否更新所述待处理任务对应的当前记录中的乐观锁版本号和生成任务标识;
所述调度节点接收所述任务数据库发送的更新响应;并根据所述更新响应确定是否触发所述待处理任务。
2.如权利要求1所述的方法,其特征在于,所述更新响应中包括所述任务数据库中当前生成任务标识;所述方法还包括:
所述调度节点根据接收到的所述更新响应中的所述当前生成任务标识更新本地存储的所述本地生成任务标识。
3.如权利要求1所述的方法,其特征在于,所述更新响应包括更新成功或更新失败;
所述根据所述更新响应确定是否触发所述待处理任务,包括:
当所述调度节点接收到所述任务数据库发送的更新响应为更新成功时,触发所述待处理任务,以使业务节点执行所述待处理任务;
当所述调度节点接收到的所述任务数据库发送的更新响应为更新失败时,确定所述待处理任务生成失败。
4.如权利要求1至3任一项所述的方法,其特征在于,所述调度节点获取任务数据库中待处理任务对应的当前记录之前,还包括:
所述调度节点首次启动时,获取所述任务数据库的当前时刻和所述当前记录;所述当前记录中还包括所述生成任务周期以及所述预定生成任务时刻。
5.一种任务调度方法,其特征在于,包括:
任务数据库向调度节点发送待处理任务对应的当前记录;所述当前记录中包括生成任务标识、乐观锁版本号,所述当前记录是所述调度节点被唤醒时发送至所述任务数据库的,其中,首次唤醒所述调度节点的时刻是根据所述任务数据库的当前时刻以及预定生成任务时刻确定的,后续唤醒所述调度节点的时刻是根据生成任务周期确定的;
所述任务数据库接收调度节点发送的更新消息;所述更新消息中包括更新后的乐观锁版本号和更新后的生成任务标识;其中,所述更新后的乐观锁版本号和更新后的生成任务标识是所述调度节点确定所述生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识得到的;
所述任务数据库根据所述更新后的乐观锁的版本号是否大于所述乐观锁版本号,确定是否更新所述待处理任务对应的当前记录中的乐观锁版本号和生成任务标识;
所述任务数据库生成更新响应。
6.一种任务调度装置,其特征在于,包括:
获取单元,用于调度节点被唤醒时,获取任务数据库中待处理任务对应的当前记录;所述当前记录中包括生成任务标识、乐观锁版本号;所述调度节点根据所述任务数据库的当前时刻以及预定生成任务时刻,确定首次唤醒所述调度节点的时刻;根据生成任务周期确定后续唤醒所述调度节点的时刻;
处理单元,用于确定所述生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识;
发送单元,用于向所述任务数据库发送更新消息;其中,所述更新消息中包括更新后的乐观锁版本号和更新后的生成任务标识;所述更新消息用于使所述任务数据库根据所述更新后的乐观锁版本号是否大于所述当前记录中的乐观锁版本号,确定是否更新所述待处理任务对应的当前记录中的乐观锁版本号和生成任务标识;
接收单元,用于接收所述任务数据库发送的更新响应;并根据所述更新响应确定是否触发所述待处理任务。
7.如权利要求6所述的装置,其特征在于,所述更新响应中包括所述任务数据库中当前生成任务标识;所述处理单元,还用于:
根据接收到的所述更新响应中的所述当前生成任务标识更新本地存储的所述本地生成任务标识。
8.如权利要求6所述的装置,其特征在于,所述更新响应包括更新成功或更新失败;
所述接收单元,还用于当接收到所述任务数据库发送的更新响应为更新成功时,触发所述待处理任务,以使业务节点执行所述待处理任务;当接收到的所述任务数据库发送的更新响应为更新失败时,确定所述待处理任务生成失败。
9.如权利要求6至8任一项所述的装置,其特征在于,所述获取单元,还用于:
首次启动时,获取所述任务数据库的当前时刻和所述当前记录;所述当前记录中还包括所述生成任务周期以及所述预定生成任务时刻。
10.一种任务调度装置,其特征在于,包括:
发送单元,用于向调度节点发送待处理任务对应的当前记录;所述当前记录中包括生成任务标识、乐观锁版本号,所述当前记录是所述调度节点被唤醒时发送至任务数据库的,其中,首次唤醒所述调度节点的时刻是根据所述任务数据库的当前时刻以及预定生成任务时刻确定的,后续唤醒所述调度节点的时刻是根据生成任务周期确定的;
接收单元,用于接收调度节点发送的更新消息;所述更新消息中包括更新后的乐观锁版本号和更新后的生成任务标识;其中,所述更新后的乐观锁版本号和更新后的生成任务标识是所述调度节点确定所述生成任务标识与所述调度节点本地存储的本地生成任务标识一致时,更新所述乐观锁版本号和所述生成任务标识得到的;
处理单元,用于根据所述更新后的乐观锁的版本号是否大于所述乐观锁版本号,确定是否更新所述待处理任务对应的当前记录中的乐观锁版本号和生成任务标识;生成更新响应。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行权利要求1至5任一权利要求所述的方法。
12.一种计算机设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如权利要求1至5任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711342531.9A CN108563502B (zh) | 2017-12-14 | 2017-12-14 | 一种任务调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711342531.9A CN108563502B (zh) | 2017-12-14 | 2017-12-14 | 一种任务调度方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108563502A CN108563502A (zh) | 2018-09-21 |
CN108563502B true CN108563502B (zh) | 2022-03-08 |
Family
ID=63530282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711342531.9A Active CN108563502B (zh) | 2017-12-14 | 2017-12-14 | 一种任务调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108563502B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109584060A (zh) * | 2018-10-15 | 2019-04-05 | 平安科技(深圳)有限公司 | 定时交易任务的处理方法、装置及计算机设备及存储介质 |
CN109558234B (zh) * | 2018-11-30 | 2021-06-04 | 中国联合网络通信集团有限公司 | 一种定时任务调度方法和装置 |
CN111258726B (zh) * | 2018-11-30 | 2023-09-22 | 北京京东尚科信息技术有限公司 | 任务调度方法和装置 |
CN109739547A (zh) * | 2018-12-28 | 2019-05-10 | 北京小米移动软件有限公司 | 任务调度方法、装置及存储介质 |
CN109922050A (zh) * | 2019-02-03 | 2019-06-21 | 普信恒业科技发展(北京)有限公司 | 一种任务检测方法及装置 |
CN110046039A (zh) * | 2019-03-28 | 2019-07-23 | 厦门网宿有限公司 | 任务调度方法及系统、调度中心服务器和存储介质 |
CN110457342B (zh) * | 2019-07-02 | 2023-01-06 | 网联清算有限公司 | 交易处理方法及装置 |
CN112433868B (zh) * | 2020-11-27 | 2024-07-30 | 深圳前海微众银行股份有限公司 | 一种交易处理方法及装置 |
CN112613845A (zh) * | 2020-12-25 | 2021-04-06 | 中电金信软件有限公司 | 任务分配处理方法、装置及工作流系统 |
CN113283742A (zh) * | 2021-05-21 | 2021-08-20 | 建信金融科技有限责任公司 | 一种任务分配方法和装置 |
CN114510337B (zh) * | 2022-04-15 | 2023-03-21 | 深圳美云集网络科技有限责任公司 | 任务执行方法、系统及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110131448A1 (en) * | 2009-11-30 | 2011-06-02 | Iron Mountain, Incorporated | Performing a workflow having a set of dependancy-related predefined activities on a plurality of task servers |
CN104050029A (zh) * | 2014-05-30 | 2014-09-17 | 北京先进数通信息技术股份公司 | 一种任务调度系统 |
-
2017
- 2017-12-14 CN CN201711342531.9A patent/CN108563502B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110131448A1 (en) * | 2009-11-30 | 2011-06-02 | Iron Mountain, Incorporated | Performing a workflow having a set of dependancy-related predefined activities on a plurality of task servers |
CN104050029A (zh) * | 2014-05-30 | 2014-09-17 | 北京先进数通信息技术股份公司 | 一种任务调度系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108563502A (zh) | 2018-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108563502B (zh) | 一种任务调度方法和装置 | |
CN110222091B (zh) | 一种海量数据实时统计分析方法 | |
CN109766194B (zh) | 基于消息的低耦合计划任务组件的实现方法及其系统 | |
CN111190736A (zh) | 基于微服务的低入侵分布式定时任务调度系统及方法 | |
CN110895488B (zh) | 任务调度方法及装置 | |
CN107197012B (zh) | 一种基于元数据管理系统的服务发布及监管系统及方法 | |
CN110895487B (zh) | 分布式任务调度系统 | |
CN111222089B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN111510469B (zh) | 一种消息处理方法和装置 | |
CN110795264A (zh) | 监控管理方法及系统、智能管理终端 | |
CN111767128A (zh) | 执行定时任务的方法以及装置 | |
CN112148504A (zh) | 目标消息的处理方法及装置、存储介质及电子装置 | |
CN111400104A (zh) | 数据同步方法及装置、电子设备、存储介质 | |
CN110895486A (zh) | 分布式任务调度系统 | |
CN115756783A (zh) | 跨子系统的空间任务依赖调度方法与系统 | |
CN109495528A (zh) | 分布式锁所有权调度方法和装置 | |
CN116820697A (zh) | 定时任务调度方法、装置、设备和存储介质 | |
CN104750849B (zh) | 用于维护基于树形结构的目录关系的方法和系统 | |
CN110895485A (zh) | 任务调度系统 | |
CN115185673B (zh) | 分布式定时任务调度方法、系统、存储介质及程序产品 | |
CN114780217B (zh) | 任务调度方法、装置、计算机设备以及介质 | |
CN113064950B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN115426356A (zh) | 一种分布式定时任务锁更新控制执行方法和装置 | |
CN114328638A (zh) | 一种基于数据库轮询的业务消息推送系统 | |
CN110856040B (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 |