CN114237887A - 一种计划任务执行方法、装置、设备及介质 - Google Patents
一种计划任务执行方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN114237887A CN114237887A CN202111537009.2A CN202111537009A CN114237887A CN 114237887 A CN114237887 A CN 114237887A CN 202111537009 A CN202111537009 A CN 202111537009A CN 114237887 A CN114237887 A CN 114237887A
- Authority
- CN
- China
- Prior art keywords
- task
- executed
- execution
- database
- information
- 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.)
- Pending
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/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/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种计划任务执行方法、装置、设备及介质,该方法包括:检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,如果检测到当前任务数据库中存在待执行任务,则对自身的节点信息与待执行任务的任务信息进行绑定以得到绑定后信息,将绑定后信息添加至任务数据库并对任务数据库中的待执行任务进行上锁以获得待执行任务的执行权,执行待执行任务,并通过自身的守护进程对待执行任务的执行状态进行实时监测,若监测到异常,则将任务数据库中对应的绑定后信息删除,并将待执行任务解锁以释放待执行任务的执行权。这样一来,能够增加计划任务执行与节点安排的合理性与有序性,完善节点的异常保护机制,减少运维成本。
Description
技术领域
本发明涉及计算机管理领域,特别涉及一种计划任务执行方法、装置、设备及介质。
背景技术
在一些复杂的数据计算需要花费大量的时间和成本时,通常需要有定时计划任务在指定的时间进行计算。但是在大部分互联网应用中,部署方式都是分布式的,每个节点内容相同,可根据需求进行动态新增或减少节点数量。每个新增加的节点一般来说都是相同的配置和执行内容,但是根据实际部署环境的资源使用量,或者具体的业务需求,新增加的节点并不需要执行一些共有的、无状态的任务,而仅需要提供基础的服务。
通常在多节点执行计划任务时,会采取饥饿模式的方式来争抢、消耗任务。但是这种任务是有状态的,且执行计划任务时会有先后顺序的区别。并且节点的执行依赖于队列的分发,如果队列执行出现问题,将无法有效的快速恢复;也有一种方式是开启专门执行计划任务的节点,但是这种方式如果执行节点发生异常时,需要有一定的保障机制来维护,并且在启动时,需要对该节点进行特殊的配置,增加了许多运维成本。
在现代大型的应用部署时,在服务器上往往部署着成千上万个工作节点或者容器。这些工作节点不仅对外提供着技术服务,内部之间可能有着更加复杂的数据交换和业务处理。并且一些任务处理的数据是所有节点共享的,每个节点都需要拿到该数据进行处理。因此一套完善的计划任务数据处理机制十分重要,它可以让每个节点都有机会处理资源,且不需要独特的配置,简化上线流程,降低运维成本。
由上可见,在多节点执行计划任务过程中,如何避免出现由于不完善的计划任务处理机制导致节点任务执行效率低下、运维成本高的情况是本领域有待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种计划任务执行方法、装置、设备及介质,能够避免出现由于不完善的计划任务处理机制导致节点任务执行效率低下、运维成本高的情况。其具体方案如下:
第一方面,本申请公开了一种计划任务执行方法,应用于分布式系统中的目标节点,并且,所述分布式系统中的每个节点均设有各自的守护进程;其中,所述方法包括:
检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,如果检测到当前所述任务数据库中存在所述待执行任务,则对自身的节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息;
将绑定后信息添加至所述任务数据库,并对所述任务数据库中的所述待执行任务进行上锁以获得所述待执行任务的执行权;
执行所述待执行任务,并通过自身的守护进程对所述待执行任务的执行状态进行实时监测,若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,以便其他节点通过自身的守护进程在监测到所述待执行任务的执行权被释放后通过竞争方式获取所述待执行任务的执行权。
可选的,所述检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,包括:
从任务数据库中查询与所述目标节点对应的待执行计划任务列表;
若当前所述待执行计划任务列表中存在计划任务,则从所述待执行计划任务列表中的所有计划任务中确定出目标任务;
判断当前所述目标任务是否处于上锁状态;
若当前所述目标任务处于上锁状态,则重新执行所述从所述待执行计划任务列表中的所有计划任务中确定出目标任务的步骤;
若当前所述目标计划任务处于未上锁状态,则将所述目标任务确定为待执行任务。
可选的,所述对自身的节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息,包括:
查询自身的节点信息;所述节点信息包括节点名称、通信地址、节点唯一标识以及开始执行时间;
确定所述待执行任务的任务信息,并将自身的所述节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息。
可选的,所述将绑定后信息添加至所述任务数据库,包括:
通过目标节点将绑定后信息添加至所述任务数据库;
或,通过目标节点自身对应的所述守护进程将绑定后信息添加至所述任务数据库。
可选的,所述执行所述待执行任务之前,还包括:
为所述待执行任务设定预设时长;
相应的,所述通过自身的守护进程对所述待执行任务的执行状态进行实时监测,包括:
通过自身的守护进程对所述待执行任务的执行状态进行实时监测;
若监测到所述预设时长内均未获得所述待执行任务的执行响应结果,则判定当前所述待执行任务的执行状态异常。
可选的,所述对所述任务数据库中的所述待执行任务进行上锁以获得所述待执行任务的执行权,包括:
对所述任务数据库中的所述待执行任务添加悲观锁以获取所述待执行任务的执行权;
相应的,所述若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,包括:
若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务的悲观锁进行解锁以释放所述待执行任务的执行权。
可选的,所述的计划任务执行方法,还包括:
通过预设进程配置工具将自身的守护进程设置为无休眠进程,以对所述目标节点对应的待执行任务的执行状态进行持续监测。
第二方面,本申请公开了一种计划任务执行装置,包括:
任务检测模块:用于检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,
信息绑定模块:用于如果检测到当前所述任务数据库中存在所述待执行任务,则对自身的节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息;
执行权获取模块:用于将绑定后信息添加至所述任务数据库,并对所述任务数据库中的所述待执行任务进行上锁以获得所述待执行任务的执行权;
任务执行模块:用于执行所述待执行任务,并通过自身的守护进程对所述待执行任务的执行状态进行实时监测,若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,以便其他节点通过自身的守护进程在监测到所述待执行任务的执行权被释放后通过竞争方式获取所述待执行任务的执行权。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的计划任务执行方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述公开的计划任务执行方法。
本申请中,先检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,如果检测到当前所述任务数据库中存在所述待执行任务,则对自身的节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息,然后将绑定后信息添加至所述任务数据库,并对所述任务数据库中的所述待执行任务进行上锁以获得所述待执行任务的执行权,接着执行所述待执行任务,并通过自身的守护进程对所述待执行任务的执行状态进行实时监测,若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,以便其他节点通过自身的守护进程在监测到所述待执行任务的执行权被释放后通过竞争方式获取所述待执行任务的执行权。这样一来,本申请在节点任务执行时使用对所述待执行任务上锁的方法,并利用节点所对应的单独设立的守护进程对当前所有的计划任务状态与当前节点的任务执行状态进行监测,增加计划任务执行与节点安排的合理性与有序性,解决任务内容冲突问题,且完善了节点出现异常时的保护机制,无需特殊配置便可方便进行横向扩展,进而减少运维成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种计划任务执行方法流程图;
图2为本申请提供的一种具体的计划任务执行方法流程图;
图3为本申请提供的一种节点执行状态异常时的操作流程图
图4为本申请提供的一种计划任务执行装置结构示意图;
图5为本申请提供的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中,由于不完善的计划任务处理机制导致节点任务执行效率低下、运维成本高。在本申请中,公开了一种较完善的计划任务执行方法,能够增加计划任务执行与节点安排的合理性与有序性,完善节点出现异常时的保护机制,且可以减少运维成本。
本发明实施例公开了一种计划任务执行方法,应用于分布式系统中的目标节点,并且,所述分布式系统中的每个节点均设有各自的守护进程,参见图1所述,该方法包括:
步骤S11:检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,如果检测到当前所述任务数据库中存在所述待执行任务,则对自身的节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息。
在本发明中,分布式系统中的所述目标节点指具有相同功能的,本身业务为无状态的执行器,所述计划任务指任务在指定的时间计划执行的任务,所述计划任务有多个,且会被分配到分布式系统的各节点进行执行。可以理解的是,本实施例中所述的任务数据库中存放着全部任务信息与各节点对应的计划任务,各节点对应的计划任务有多个且各节点均可以在所述任务数据库中查询自身对应的计划任务。
本实施例中,所述检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,可以包括:从任务数据库中查询与所述目标节点对应的待执行计划任务列表;若当前所述待执行计划任务列表中存在计划任务,则从所述待执行计划任务列表中的所有计划任务中确定出目标任务;判断当前所述目标任务是否处于上锁状态;若当前所述目标任务处于上锁状态,则重新执行所述从所述待执行计划任务列表中的所有计划任务中确定出目标任务的步骤;若当前所述目标计划任务处于未上锁状态,则将所述目标任务确定为待执行任务。
可以理解的是,当所述目标节点从所述任务数据库中查询自身对应的需要执行并且未被其他节点占用的计划任务时,由于当前节点对应的计划任务不止一个,则将会在任务数据库中形成与当前节点所对应的待执行计划任务列表,若此待执行计划任务列表中存在计划任务,则表示当前节点存在需要执行的计划任务,但由于所述待执行计划任务列表中的部分任务可能存在已经被上锁的情况,即为部分任务已经被其他节点占用了执行权而导致当前节点无法执行此计划任务。为避免这种情况,此时当前节点会先确定出目标任务,判断所述目标任务是否被其他节点上锁而占用执行权,若当前目标任务处于上锁状态,则重新确定目标任务;若当前目标计划任务处于未上锁状态,则将所述目标任务确定为待执行任务,则也表明此待执行任务为自身需要执行并且未被其他节点占用的任务。
本实施例中,所述对自身的节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息,可以包括:查询自身的节点信息;所述节点信息包括节点名称、通信地址、节点唯一标识以及开始执行时间;确定所述待执行任务的任务信息,并将自身的所述节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息。
可以理解的是,本实施例中所述的对自身的节点信息与所述待执行任务的任务信息进行绑定,此步骤可以理解为记录所述待执行任务的执行信息的过程,若节点将某一计划任务确定为待执行任务,则表明此节点将会对所述计划任务进行执行,此时会将所述待执行任务的任务信息与自身的节点信息进行绑定进而记录计划任务的执行时间与执行节点。
步骤S12:将绑定后信息添加至所述任务数据库,并对所述任务数据库中的所述待执行任务进行上锁以获得所述待执行任务的执行权。
在本实施例中,本步骤执行的是将绑定信息添加至任务数据库中,并获取所述待执行任务的执行权的过程,可以理解的是,当节点将某一计划任务确定为当前的待执行任务时,则会对当前待执行任务进行上锁,以占用所述待执行任务的执行权进而达到对所述待执行任务进行执行的目的。
本实施例中,所述将绑定后信息添加至所述任务数据库,可以包括:通过目标节点将绑定后信息添加至所述任务数据库;或,通过目标节点自身对应的所述守护进程将绑定后信息添加至所述任务数据库。可以理解的是,所述绑定后的信息可以通过当前节点或当前节点对应的守护进程进行任务数据库的信息添加操作。
本实施例中,所述对所述任务数据库中的所述待执行任务进行上锁以获得所述待执行任务的执行权,可以包括:对所述任务数据库中的所述待执行任务添加悲观锁以获取所述待执行任务的执行权;相应的,所述若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,包括:若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务的悲观锁进行解锁以释放所述待执行任务的执行权。可以理解的是,本实施例中所述上锁方式可以选择悲观锁,在任务执行中操作数据时把任务锁住,直到任务中的相关操作完成后才会释放锁,上锁期间其他人不能修改数据。当分布式系统中各节点对计划任务的竞争激烈或出现并发冲突的概率大时,可发挥悲观锁的优势,减少因使用乐观锁时导致存在较多资源消耗的问题。
步骤S13:执行所述待执行任务,并通过自身的守护进程对所述待执行任务的执行状态进行实时监测,若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,以便其他节点通过自身的守护进程在监测到所述待执行任务的执行权被释放后通过竞争方式获取所述待执行任务的执行权。
通过预设进程配置工具将自身的守护进程设置为无休眠进程,以对所述目标节点对应的待执行任务的执行状态进行持续监测。
可以理解的是,本实施例中所述的守护进程为与节点一一对应的,每个节点均存在相应的守护进程,且该守护进程都是一致的,可以对公共信息进行修改。所述守护进程实时监测任务数据库中全部计划任务的状态,当发现某一计划任务未上锁时,则采用饥饿模式为各自节点争抢各计划任务,并把所述计划任务添加至当前节点的待执行计划任务列表,在节点启动后,节点只需从任务数据库中检测与自身对应的待执行计划任务列表中的待执行计划任务并执行即可,在其他技术方案中,本守护进程所做的工作都是与业务程序合并,增加了许多资源消耗。本申请利用单独设立的守护进程对计划任务的各方面进行监测,增强了运行的保障机制,减少了运维成本,无需使节点将部分资源消耗在任务争抢上。当节点开始执行任务时,守护进程则一直持续监测当前节点的待执行任务的执行状态,若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,以便其他节点通过自身的守护进程在监测到所述待执行任务的执行权被释放后通过竞争方式获取所述待执行任务的执行权。
本实施例中所述的守护进程可以是位于相应目标节点内部,也可以是位于节点外部的某一具有管理功能的管理节点或第三方系统中。所述预设进程配置工具则为相应的节点中或第三方系统中的某一进程配置软件。
进一步的,因本发明每个节点的部署和内容完全一致,在启动时不需要额外的其他配置,且为节点设立独立的守护进程以分担节点的业务消耗,则在根据需求对分布式系统的节点进行动态的新增或减少时,可以不需其他特殊配置就可以很方便地进行横向扩展。
本申请中,先检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,如果检测到当前所述任务数据库中存在所述待执行任务,则对自身的节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息,然后将绑定后信息添加至所述任务数据库,并对所述任务数据库中的所述待执行任务进行上锁以获得所述待执行任务的执行权,接着执行所述待执行任务,并通过自身的守护进程对所述待执行任务的执行状态进行实时监测,若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,以便其他节点通过自身的守护进程在监测到所述待执行任务的执行权被释放后通过竞争方式获取所述待执行任务的执行权。这样一来,本申请利用对待执行任务使用悲观锁进行上锁,并利用节点所对应的单独设立的守护进程对当前所有的计划任务状态与当前节点的任务执行状态进行监测,增加计划任务执行与节点安排的合理性与有序性,减少了节点对锁的资源消耗,解决任务内容冲突问题,且完善了节点出现异常时的保护机制,无需特殊配置便可方便进行横向扩展,进而减少运维成本。
图2为本申请实施例提供的一种具体的计划任务执行方法流程图,应用于分布式系统中的目标节点,并且,所述分布式系统中的每个节点均设有各自的守护进程。参见图2所示,该方法包括:
步骤S21:检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,如果检测到当前所述任务数据库中存在所述待执行任务,则对自身的节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息。
步骤S22:将绑定后信息添加至所述任务数据库,并对所述任务数据库中的所述待执行任务进行上锁以获得所述待执行任务的执行权。
步骤S23:为所述待执行任务设定预设时长。
可以理解的是,节点在任务执行过程中,可能会出现节点本身异常或任务执行异常导致任务的执行响应没有正常返回的情况,则本申请为防止这种情况的发生而设定了各任务的预设时间,也即预设执行时长或预设响应时长。
步骤S24:通过自身的守护进程对所述待执行任务的执行状态进行实时监测。
步骤S25:若监测到所述预设时长内均未获得所述待执行任务的执行响应结果,则判定当前所述待执行任务的执行状态异常。
步骤S23中设置预设时长的目的对应至本步骤中的守护进程基于所述预设时长对所述待执行任务的执行状态进行实时监测,其目的在于针对各任务的正常响应返回时间对个任务进行时长监控,进而当当前待执行任务未在预设时长内返回执行响应时判定当前任务的执行状态为异常。
步骤S26:若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,以便其他节点通过自身的守护进程在监测到所述待执行任务的执行权被释放后通过竞争方式获取所述待执行任务的执行权。
如图3所示展示了节点A在任务执行过程中出现数据库信息写入异常时的操作流程图,图中的守护进程A为节点A的守护进程,节点B为除A之外的另一节点。当节点A在任务执行过程中出现数据库信息写入异常时,守护进程A会马上监测到此异常状态,并执行将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权的操作,此时节点B通过自身的守护进程在监测到所述待执行任务的执行权被释放后,通过与其他节点进行争抢的方式获取到此任务的执行权并将节点B的节点信息与此任务信息的绑定信息写入数据库。
本实施例中为待执行任务设定预设时长,当当前待执行任务未在预设时长内返回执行响应时判定当前任务的执行状态为异常,目的在于针对各任务的正常响应返回时间对个任务进行时长监控,进而监测各执行中的计划任务的执行情况,避免因为节点执行状态的异常导致任务执行的停滞而降低任务执行的效率。
参见图4所示,本申请实施例还相应公开的一种计划任务执行装置,包括:
任务检测模块11:用于检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,
信息绑定模块12:用于如果检测到当前所述任务数据库中存在所述待执行任务,则对自身的节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息;
执行权获取模块13:用于将绑定后信息添加至所述任务数据库,并对所述任务数据库中的所述待执行任务进行上锁以获得所述待执行任务的执行权;
任务执行模块14:用于执行所述待执行任务,并通过自身的守护进程对所述待执行任务的执行状态进行实时监测,若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,以便其他节点通过自身的守护进程在监测到所述待执行任务的执行权被释放后通过竞争方式获取所述待执行任务的执行权。
本申请中,先检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,如果检测到当前所述任务数据库中存在所述待执行任务,则对自身的节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息,然后将绑定后信息添加至所述任务数据库,并对所述任务数据库中的所述待执行任务进行上锁以获得所述待执行任务的执行权,接着执行所述待执行任务,并通过自身的守护进程对所述待执行任务的执行状态进行实时监测,若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,以便其他节点通过自身的守护进程在监测到所述待执行任务的执行权被释放后通过竞争方式获取所述待执行任务的执行权。这样一来,本申请在节点任务执行时使用悲观锁,并利用节点所对应的守护进程对当前所有的计划任务状态与当前节点的任务执行状态进行监测,减少了每个节点对锁的资源消耗,增加计划任务执行与节点安排的合理性与有序性,完善节点出现异常时的保护机制,且方便进行横向扩展而无需特殊配置,进而减少运维成本。
在一些具体实施例中,所述任务检测模块11,具体包括:
列表查询单元,用于从任务数据库中查询与所述目标节点对应的待执行计划任务列表;
第一目标任务确定单元,用于若当前所述待执行计划任务列表中存在计划任务,则从所述待执行计划任务列表中的所有计划任务中确定出目标任务;
状态判断单元,用于判断当前所述目标任务是否处于上锁状态;
第二目标任务确定单元,用于若当前所述目标任务处于上锁状态,则重新执行所述从所述待执行计划任务列表中的所有计划任务中确定出目标任务的步骤;
任务确定单元,用于若当前所述目标计划任务为处于未上锁状态,则将所述目标任务确定为待执行任务。
在一些具体实施例中,所述信息绑定模块12,具体包括:
信息查询单元,用于查询自身的节点信息;所述节点信息包括节点名称、通信地址、节点唯一标识以及开始执行时间;
信息确定单元,用于确定所述待执行任务的任务信息,并将自身的所述节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息。
在一些具体实施例中,所述任务执行模块14,具体包括:
节点执行单元,用于通过目标节点将绑定后信息添加至所述任务数据库;
或,进程执行单元,用于通过目标节点自身对应的所述守护进程将绑定后信息添加至所述任务数据库。
在一些具体实施例中,所述任务执行模块14之前,具体可以包括:
时长设定单元,用于为所述待执行任务设定预设时长;
相应的,所述通过自身的守护进程对所述待执行任务的执行状态进行实时监测,包括:
实时监测单元,用于通过自身的守护进程对所述待执行任务的执行状态进行实时监测;
执行异常单元,用于若监测到所述预设时长内均未获得所述待执行任务的执行响应结果,则判定当前所述待执行任务的执行状态异常。
在一些具体实施例中,所述执行权获取模块13,具体包括:
悲观锁上锁单元,用于对所述任务数据库中的所述待执行任务添加悲观锁以获取所述待执行任务的执行权;
相应的,所述若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,包括:
执行权释放单元,用于若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务的悲观锁进行解锁以释放所述待执行任务的执行权。
在一些具体实施例中,所述计划任务执行装置,包括:
进程配置单元,用于通过预设进程配置工具将自身的守护进程设置为无休眠进程,以对所述目标节点对应的待执行任务的执行状态进行持续监测。
进一步的,本申请实施例还公开了一种电子设备,图5是根据示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图5为本申请实施例提供的一种电子设备20的结构示意图。该电子设备 20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的计划任务执行方法中的相关步骤。另外,本实施例中的电子设备20 具体可以为电子计算机。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222 等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的计划任务执行方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的计划任务执行方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种计划任务执行方法、装置、设备、存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种计划任务执行方法,其特征在于,应用于分布式系统中的目标节点,并且,所述分布式系统中的每个节点均设有各自的守护进程;其中,所述方法包括:
检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,如果检测到当前所述任务数据库中存在所述待执行任务,则对自身的节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息;
将绑定后信息添加至所述任务数据库,并对所述任务数据库中的所述待执行任务进行上锁以获得所述待执行任务的执行权;
执行所述待执行任务,并通过自身的守护进程对所述待执行任务的执行状态进行实时监测,若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,以便其他节点通过自身的守护进程在监测到所述待执行任务的执行权被释放后通过竞争方式获取所述待执行任务的执行权。
2.根据权利要求1所述的计划任务执行方法,其特征在于,所述检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,包括:
从任务数据库中查询与所述目标节点对应的待执行计划任务列表;
若当前所述待执行计划任务列表中存在计划任务,则从所述待执行计划任务列表中的所有计划任务中确定出目标任务;
判断当前所述目标任务是否处于上锁状态;
若当前所述目标任务处于上锁状态,则重新执行所述从所述待执行计划任务列表中的所有计划任务中确定出目标任务的步骤;
若当前所述目标计划任务处于未上锁状态,则将所述目标任务确定为待执行任务。
3.根据权利要求1所述的计划任务执行方法,其特征在于,所述对自身的节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息,包括:
查询自身的节点信息;所述节点信息包括节点名称、通信地址、节点唯一标识以及开始执行时间;
确定所述待执行任务的任务信息,并将自身的所述节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息。
4.根据权利要求1所述的计划任务执行方法,其特征在于,所述将绑定后信息添加至所述任务数据库,包括:
通过目标节点将绑定后信息添加至所述任务数据库;
或,通过目标节点自身对应的所述守护进程将绑定后信息添加至所述任务数据库。
5.根据权利要求1所述的计划任务执行方法,其特征在于,所述执行所述待执行任务之前,还包括:
为所述待执行任务设定预设时长;
相应的,所述通过自身的守护进程对所述待执行任务的执行状态进行实时监测,包括:
通过自身的守护进程对所述待执行任务的执行状态进行实时监测;
若监测到所述预设时长内均未获得所述待执行任务的执行响应结果,则判定当前所述待执行任务的执行状态异常。
6.根据权利要求1所述的计划任务执行方法,其特征在于,所述对所述任务数据库中的所述待执行任务进行上锁以获得所述待执行任务的执行权,包括:
对所述任务数据库中的所述待执行任务添加悲观锁以获取所述待执行任务的执行权;
相应的,所述若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,包括:
若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务的悲观锁进行解锁以释放所述待执行任务的执行权。
7.根据权利要求1至6任一项所述的计划任务执行方法,其特征在于,还包括:
通过预设进程配置工具将自身的守护进程设置为无休眠进程,以对所述目标节点对应的待执行任务的执行状态进行持续监测。
8.一种计划任务执行装置,其特征在于,包括:
任务检测模块:用于检测当前任务数据库中是否存在自身需要执行并且未被其他节点占用的待执行任务,
信息绑定模块:用于如果检测到当前所述任务数据库中存在所述待执行任务,则对自身的节点信息与所述待执行任务的任务信息进行绑定以得到绑定后信息;
执行权获取模块:用于将绑定后信息添加至所述任务数据库,并对所述任务数据库中的所述待执行任务进行上锁以获得所述待执行任务的执行权;
任务执行模块:用于执行所述待执行任务,并通过自身的守护进程对所述待执行任务的执行状态进行实时监测,若监测到所述待执行任务的执行状态异常,则将所述任务数据库中对应的所述绑定后信息删除,并将所述待执行任务解锁以释放所述待执行任务的执行权,以便其他节点通过自身的守护进程在监测到所述待执行任务的执行权被释放后通过竞争方式获取所述待执行任务的执行权。
9.一种电子设备,其特征在于,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的计算机程序时实现如权利要求1至10任一项所述的计划任务执行方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至10任一项所述的计划任务执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111537009.2A CN114237887A (zh) | 2021-12-13 | 2021-12-13 | 一种计划任务执行方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111537009.2A CN114237887A (zh) | 2021-12-13 | 2021-12-13 | 一种计划任务执行方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114237887A true CN114237887A (zh) | 2022-03-25 |
Family
ID=80756526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111537009.2A Pending CN114237887A (zh) | 2021-12-13 | 2021-12-13 | 一种计划任务执行方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114237887A (zh) |
-
2021
- 2021-12-13 CN CN202111537009.2A patent/CN114237887A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109101341B (zh) | 分布式锁的分配方法及设备 | |
CN112769652B (zh) | 一种节点服务监控方法、装置、设备及介质 | |
US11119911B2 (en) | Garbage collection method and device | |
CN110716793B (zh) | 一种分布式事务的执行方法、装置、设备及存储介质 | |
JP5705871B2 (ja) | 分散された永続性インスタンスに対するロックの解決 | |
US20140337303A1 (en) | Bandwidth optimized two-phase commit protocol for distributed transactions | |
CN112039970B (zh) | 一种分布式业务锁服务方法、服务端、系统及存储介质 | |
CN108446172B (zh) | 数据调取方法、装置、计算机设备和存储介质 | |
CN109918187B (zh) | 任务调度方法、装置、设备和存储介质 | |
CN106789308B (zh) | 一种微服务架构可自动伸缩的gis服务装置及其控制方法 | |
CN109697112B (zh) | 分布式集约化一站式作业系统和实现方法 | |
CN113342893B (zh) | 基于区块链的节点同步方法、装置、存储介质及服务器 | |
CN109495528B (zh) | 分布式锁所有权调度方法和装置 | |
CN104917813A (zh) | 请求资源的方法及装置 | |
CN116701063B (zh) | 数联网数据语用内存状态数据的持久化方法、装置及系统 | |
CN117193974A (zh) | 基于多进程/线程的配置请求处理方法及装置 | |
CN114237887A (zh) | 一种计划任务执行方法、装置、设备及介质 | |
CN115454606B (zh) | 异地多活架构下的任务调度方法、装置、介质及相关设备 | |
CN113485828B (zh) | 基于quartz的分布式任务调度系统及方法 | |
CN114817134A (zh) | 一种快照任务监控方法、装置、设备及介质 | |
CN114567664A (zh) | 消息处理结果监控方法、装置、计算机设备和存储介质 | |
CN114172903A (zh) | slurm调度系统的节点扩容方法、装置、设备和介质 | |
CN113342511A (zh) | 一种分布式任务管理系统及方法 | |
CN111475306A (zh) | 微服务节点、异步任务处理方法、系统和存储介质 | |
CN113032188A (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 |