CN110888723A - 定时任务处理方法及装置 - Google Patents
定时任务处理方法及装置 Download PDFInfo
- Publication number
- CN110888723A CN110888723A CN201911127723.7A CN201911127723A CN110888723A CN 110888723 A CN110888723 A CN 110888723A CN 201911127723 A CN201911127723 A CN 201911127723A CN 110888723 A CN110888723 A CN 110888723A
- Authority
- CN
- China
- Prior art keywords
- lock
- service data
- identifier
- target
- relational 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.)
- 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/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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种定时任务处理方法及装置,所述方法包括:接收当前定时任务;获取预先在关系型数据库中建立的锁表,所述预先在关系型数据库中建立的锁表中记录有多个锁;确定所述预先在关系型数据库中建立的锁表中记录的锁的数量;从所述预先在关系型数据库中建立的锁表中确定目标锁;根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据;对所述目标业务数据进行处理,完成所述当前定时任务。上述方案中,由于预先在关系型数据库中建立包含多个锁的锁表,同一时刻分布式系统的各个节点可以分别占用不同的锁处理不同的业务数据,提高了处理效率。
Description
技术领域
本发明涉及计算机信息技术领域,更具体的说,是涉及一种定时任务处理方法及装置。
背景技术
随着计算机信息技术的发展,分布式系统的应用越来越广泛。分布式系统是由一组通过网络进行通信,为了完成共同任务而协调工作的计算机节点组成的系统。在分布式系统中,有的业务场景(例如银行的财务系统需要定时进行对账等操作)下需要定时任务不断地定时地处理业务数据,在这种情况下,同一条业务数据在同一时刻只能并且一定会被分布式系统中的某一个计算机节点的定时任务处理。
现有技术中,为了避免同一条业务数据在同一时刻由多个计算机节点同时处理,基于关系型数据库,创建了一张“锁”表,将某次定时任务需要操作某条业务数据时,就需要锁住该条业务数据,就在“锁”表中增加一条记录,即增加一个“锁”,当该定时任务到来时,分布式系统中的一个计算机节点先获取该“锁”再处理该定时任务,在该定时任务处理结束后释放该“锁”,即删除“锁”表中的该条记录,然后,其他定时任务才能够继续执行。
由以上内容可知,现有技术中,同一时刻总是只有一个定时任务可以执行,效率低下。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的定时任务处理方法及装置。具体方案如下:
一种定时任务处理方法,所述方法包括:
接收当前定时任务;
获取预先在关系型数据库中建立的锁表,所述预先在关系型数据库中建立的锁表中记录有多个锁;
确定所述预先在关系型数据库中建立的锁表中记录的锁的数量;
从所述预先在关系型数据库中建立的锁表中确定目标锁;
根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据;
对所述目标业务数据进行处理,完成所述当前定时任务。
可选地,所述预先在关系型数据库中建立的锁表中记录有每个锁的状态标识,以及每个锁的更新时间,则所述从所述预先在关系型数据库中建立的锁表中确定目标锁,包括:
从所述预先在关系型数据库中建立的锁表中确定状态标识为第一标识的锁为待选锁;所述第一标识用于指示锁的状态为空闲状态;
从所述待选锁中确定更新时间最早的锁为所述目标锁。
可选地,在所述从所述预先在关系型数据库中建立的锁表中确定目标锁之后,所述方法还包括:
将所述预先在关系型数据库中建立的锁表中记录的所述目标锁的状态标识更改为第二标识,所述第二标识用于指示锁的状态为占用状态;
则,在对所述目标业务数据进行处理,以完成所述当前定时任务之前,所述方法还包括:
将所述预先在关系型数据库中建立的锁表中记录的所述目标锁的状态标识更改为所述第一标识,并将所述目标锁的更新时间更改为当前时间。
可选地,所述业务数据表中记录有至少一条业务数据以及各条业务数据的状态标识,所述根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据,包括:
获取所述目标锁的编号;
从所述业务数据表中确定出状态标识为第三标识的业务数据为待选业务数据;所述第三标识用于指示业务数据的状态为待处理状态;
将每个所述待选业务数据的编号与所述锁的数量取模运算,获得运算结果;
当所述运算结果与所述目标锁的编号一致时,确定所述每个待选业务数据为所述目标业务数据。
可选地,在所述从业务数据表中确定目标业务数据之后,所述方法还包括:
将所述业务数据表中记录的所述目标业务数据的状态标识更改为第四标识,所述第四标识用于指示业务数据的状态为处理中状态;
则,在对所述目标业务数据进行处理,完成所述当前定时任务之后,所述方法还包括:
将所述业务数据表中记录的所述目标业务数据的状态标识更改为第五标识,所述第五标识用于指示业务数据的状态为处理结束状态。
可选地,所述方法还包括:
按照预设时间周期对所述预先在关系型数据库中建立的锁表中记录的多个锁的状态进行监控,确定所述预先在关系型数据库中建立的锁表中记录的多个锁中是否存在死锁,所述死锁为锁的状态标识为第二标识,且更新时间与当前时间之间的时间差超出预设时间阈值的锁;
当确定所述预先在关系型数据库中建立的锁表中记录的多个锁中存在死锁时,将所述死锁的状态标识更改为第一标识,所述第一标识用于指示锁的状态为空闲状态。
一种定时任务处理装置,所述装置包括:
接收单元,用于接收当前定时任务;
锁表获取单元,用于获取预先在关系型数据库中建立的锁表,所述预先在关系型数据库中建立的锁表中记录有多个锁;
锁的数量确定单元,用于确定所述预先在关系型数据库中建立的锁表中记录的锁的数量;
目标锁确定单元,用于从所述预先在关系型数据库中建立的锁表中确定目标锁;
目标业务数据确定单元,用于根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据;
定时任务处理单元,用于对所述目标业务数据进行处理,完成所述当前定时任务。
可选地,所述预先在关系型数据库中建立的锁表中记录有每个锁的状态标识,以及每个锁的更新时间,则所述目标锁确定单元,具体用于:
从所述预先在关系型数据库中建立的锁表中确定状态标识为第一标识的锁为待选锁;所述第一标识用于指示锁的状态为空闲状态;
从所述待选锁中确定更新时间最早的锁为所述目标锁。
可选地,所述业务数据表中记录有至少一条业务数据以及各条业务数据的状态标识,所述目标业务数据确定单元,具体用于:
获取所述目标锁的编号;
从所述业务数据表中确定出状态标识为第三标识的业务数据为待选业务数据;所述第三标识用于指示业务数据的状态为待处理状态;
将每个所述待选业务数据的编号与所述锁的数量取模运算,获得运算结果;
当所述运算结果与所述目标锁的编号一致时,确定所述每个待选业务数据为所述目标业务数据。
可选地,所述装置还包括:
监控单元,用于按照预设时间周期对所述预先在关系型数据库中建立的锁表中记录的多个锁的状态进行监控,确定所述预先在关系型数据库中建立的锁表中记录的多个锁中是否存在死锁,所述死锁为锁的状态标识为第二标识,且更新时间与当前时间之间的时间差超出预设时间阈值的锁;当确定所述预先在关系型数据库中建立的锁表中记录的多个锁中存在死锁时,将所述死锁的状态标识更改为第一标识,所述第一标识用于指示锁的状态为空闲状态。
借由上述技术方案,本发明提供的定时任务处理方法及装置,所述方法包括:接收当前定时任务;获取预先在关系型数据库中建立的锁表,所述预先在关系型数据库中建立的锁表中记录有多个锁;确定所述预先在关系型数据库中建立的锁表中记录的锁的数量;从所述预先在关系型数据库中建立的锁表中确定目标锁;根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据;对所述目标业务数据进行处理,完成所述当前定时任务。上述方案中,由于预先在关系型数据库中建立包含多个锁的锁表,同一时刻分布式系统的各个节点可以分别占用不同的锁处理不同的业务数据,提高了处理效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例公开的一种定时任务处理方法的流程示意图;
图2为本发明实施例公开的一种定时任务处理装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
请参阅附图1,图1为本发明实施例公开的一种定时任务处理方法的流程示意图,该方法包括:
步骤S101:接收当前定时任务。
在本实施例中,当前定时任务具体可以为需要分布式系统处理的任一定时任务,对此,本申请不进行任何限定。
步骤S102:获取预先在关系型数据库中建立的锁表,所述预先在关系型数据库中建立的锁表中记录有多个锁。
在本实施例中,预先在关系型数据库(如MySQL)中建立锁表,与现有技术不同的是,本实施例中,锁表中记录有多个锁。作为一种可实施方式,锁表中记录的锁的数量可与分布式系统中包括的计算机节点的数量一致,使得处理效率最高,这种情况下,如果要保证处理效率一直最高,则可在分布式系统中包括的计算机节点数量发生改变时,对锁表中的锁进行相应调整即可。例如,分布式系统从4个计算机节点扩展一倍到8个节点,则只需要在锁表中增加对应数量的锁即可。
步骤S103:确定所述预先在关系型数据库中建立的锁表中记录的锁的数量。
步骤S104:从所述预先在关系型数据库中建立的锁表中确定目标锁。
在本实施例中,目标锁可以为所述预先在关系型数据库中建立的锁表中记录的锁中的任意一个锁,也可以为满足预设条件的锁,对此,本申请实施例不做任何限定。
步骤S105:根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据。
本实施例中,目标业务数据可以为一条也可以为多条。
步骤S106:对所述目标业务数据进行处理,完成所述当前定时任务。
本实施例提供的定时任务处理方法,所述方法包括:接收当前定时任务;获取预先在关系型数据库中建立的锁表,所述预先在关系型数据库中建立的锁表中记录有多个锁;确定所述预先在关系型数据库中建立的锁表中记录的锁的数量;从所述预先在关系型数据库中建立的锁表中确定目标锁;根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据;对所述目标业务数据进行处理,完成所述当前定时任务。上述方法中,由于预先在关系型数据库中建立包含多个锁的锁表,同一时刻分布式系统的各个节点可以分别占用不同的锁处理不同的业务数据,提高了处理效率。
作为一种可实施方式,所述预先在关系型数据库中建立的锁表中记录有每个锁的状态标识,以及每个锁的更新时间,则所述从所述预先在关系型数据库中建立的锁表中确定目标锁,包括:
从所述预先在关系型数据库中建立的锁表中确定状态标识为第一标识的锁为待选锁;所述第一标识用于指示锁的状态为空闲状态;
从所述待选锁中确定更新时间最早的锁为所述目标锁。
作为一种可实施方式,在所述从所述预先在关系型数据库中建立的锁表中确定目标锁之后,所述方法还包括:
将所述预先在关系型数据库中建立的锁表中记录的所述目标锁的状态标识更改为第二标识,所述第二标识用于指示锁的状态为占用状态;
则,在对所述目标业务数据进行处理,以完成所述当前定时任务之前,所述方法还包括:
将所述预先在关系型数据库中建立的锁表中记录的所述目标锁的状态标识更改为所述第一标识,并将所述目标锁的更新时间更改为当前时间。
作为一种可实施方式,所述业务数据表中记录有至少一条业务数据以及各条业务数据的状态标识,所述根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据,包括:
获取所述目标锁的编号;
从所述业务数据表中确定出状态标识为第三标识的业务数据为待选业务数据;所述第三标识用于指示业务数据的状态为待处理状态;
将每个所述待选业务数据的编号与所述锁的数量取模运算,获得运算结果;
当所述运算结果与所述目标锁的编号一致时,确定所述每个待选业务数据为所述目标业务数据。
作为一种可实施方式,在所述从业务数据表中确定目标业务数据之后,所述方法还包括:
将所述业务数据表中记录的所述目标业务数据的状态标识更改为第四标识,所述第四标识用于指示业务数据的状态为处理中状态;
则,在对所述目标业务数据进行处理,完成所述当前定时任务之后,所述方法还包括:
将所述业务数据表中记录的所述目标业务数据的状态标识更改为第五标识,所述第五标识用于指示业务数据的状态为处理结束状态。
现有技术中,如果某个定时任务处理结束后释放“锁”失败,会导致后续的其他定时任务无法执行。为解决该问题,本发明实施例提出如下解决方案:
按照预设时间周期对所述预先在关系型数据库中建立的锁表中记录的多个锁的状态进行监控,确定所述预先在关系型数据库中建立的锁表中记录的多个锁中是否存在死锁,所述死锁为锁的状态标识为第二标识,且更新时间与当前时间之间的时间差超出预设时间阈值的锁;
当确定所述预先在关系型数据库中建立的锁表中记录的多个锁中存在死锁时,将所述死锁的状态标识更改为第一标识,所述第一标识用于指示锁的状态为空闲状态。
请参阅附图2,图2为本发明实施例公开的一种定时任务处理装置的结构示意图,该装置包括:
接收单元21,用于接收当前定时任务;
锁表获取单元22,用于获取预先在关系型数据库中建立的锁表,所述预先在关系型数据库中建立的锁表中记录有多个锁;
锁的数量确定单元23,用于确定所述预先在关系型数据库中建立的锁表中记录的锁的数量;
目标锁确定单元24,用于从所述预先在关系型数据库中建立的锁表中确定目标锁;
目标业务数据确定单元25,用于根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据;
定时任务处理单元26,用于对所述目标业务数据进行处理,完成所述当前定时任务。
可选地,所述预先在关系型数据库中建立的锁表中记录有每个锁的状态标识,以及每个锁的更新时间,则所述目标锁确定单元,具体用于:
从所述预先在关系型数据库中建立的锁表中确定状态标识为第一标识的锁为待选锁;所述第一标识用于指示锁的状态为空闲状态;
从所述待选锁中确定更新时间最早的锁为所述目标锁。
可选地,所述业务数据表中记录有至少一条业务数据以及各条业务数据的状态标识,所述目标业务数据确定单元,具体用于:
获取所述目标锁的编号;
从所述业务数据表中确定出状态标识为第三标识的业务数据为待选业务数据;所述第三标识用于指示业务数据的状态为待处理状态;
将每个所述待选业务数据的编号与所述锁的数量取模运算,获得运算结果;
当所述运算结果与所述目标锁的编号一致时,确定所述每个待选业务数据为所述目标业务数据。
可选地,所述装置还包括:
监控单元,用于按照预设时间周期对所述预先在关系型数据库中建立的锁表中记录的多个锁的状态进行监控,确定所述预先在关系型数据库中建立的锁表中记录的多个锁中是否存在死锁,所述死锁为锁的状态标识为第二标识,且更新时间与当前时间之间的时间差超出预设时间阈值的锁;当确定所述预先在关系型数据库中建立的锁表中记录的多个锁中存在死锁时,将所述死锁的状态标识更改为第一标识,所述第一标识用于指示锁的状态为空闲状态。
需要说明的是,上述各个单元的具体功能实现已在方法实施例中详细说明,本实施例不再赘述。
所述定时任务处理装置包括处理器和存储器,上述各个单元均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现对定时任务的高效处理。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述定时任务处理方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述定时任务处理方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现方法实施例中的各个步骤。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
接收当前定时任务;
获取预先在关系型数据库中建立的锁表,所述预先在关系型数据库中建立的锁表中记录有多个锁;
确定所述预先在关系型数据库中建立的锁表中记录的锁的数量;
从所述预先在关系型数据库中建立的锁表中确定目标锁;
根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据;
对所述目标业务数据进行处理,完成所述当前定时任务。
可选地,所述预先在关系型数据库中建立的锁表中记录有每个锁的状态标识,以及每个锁的更新时间,则所述从所述预先在关系型数据库中建立的锁表中确定目标锁,包括:
从所述预先在关系型数据库中建立的锁表中确定状态标识为第一标识的锁为待选锁;所述第一标识用于指示锁的状态为空闲状态;
从所述待选锁中确定更新时间最早的锁为所述目标锁。
可选地,在所述从所述预先在关系型数据库中建立的锁表中确定目标锁之后,所述方法还包括:
将所述预先在关系型数据库中建立的锁表中记录的所述目标锁的状态标识更改为第二标识,所述第二标识用于指示锁的状态为占用状态;
则,在对所述目标业务数据进行处理,以完成所述当前定时任务之前,所述方法还包括:
将所述预先在关系型数据库中建立的锁表中记录的所述目标锁的状态标识更改为所述第一标识,并将所述目标锁的更新时间更改为当前时间。
可选地,所述业务数据表中记录有至少一条业务数据以及各条业务数据的状态标识,所述根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据,包括:
获取所述目标锁的编号;
从所述业务数据表中确定出状态标识为第三标识的业务数据为待选业务数据;所述第三标识用于指示业务数据的状态为待处理状态;
将每个所述待选业务数据的编号与所述锁的数量取模运算,获得运算结果;
当所述运算结果与所述目标锁的编号一致时,确定所述每个待选业务数据为所述目标业务数据。
可选地,在所述从业务数据表中确定目标业务数据之后,所述方法还包括:
将所述业务数据表中记录的所述目标业务数据的状态标识更改为第四标识,所述第四标识用于指示业务数据的状态为处理中状态;
则,在对所述目标业务数据进行处理,完成所述当前定时任务之后,所述方法还包括:
将所述业务数据表中记录的所述目标业务数据的状态标识更改为第五标识,所述第五标识用于指示业务数据的状态为处理结束状态。
可选地,所述方法还包括:
按照预设时间周期对所述预先在关系型数据库中建立的锁表中记录的多个锁的状态进行监控,确定所述预先在关系型数据库中建立的锁表中记录的多个锁中是否存在死锁,所述死锁为锁的状态标识为第二标识,且更新时间与当前时间之间的时间差超出预设时间阈值的锁;
当确定所述预先在关系型数据库中建立的锁表中记录的多个锁中存在死锁时,将所述死锁的状态标识更改为第一标识。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种定时任务处理方法,其特征在于,所述方法包括:
接收当前定时任务;
获取预先在关系型数据库中建立的锁表,所述预先在关系型数据库中建立的锁表中记录有多个锁;
确定所述预先在关系型数据库中建立的锁表中记录的锁的数量;
从所述预先在关系型数据库中建立的锁表中确定目标锁;
根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据;
对所述目标业务数据进行处理,完成所述当前定时任务。
2.根据权利要求1所述的方法,其特征在于,所述预先在关系型数据库中建立的锁表中记录有每个锁的状态标识,以及每个锁的更新时间,则所述从所述预先在关系型数据库中建立的锁表中确定目标锁,包括:
从所述预先在关系型数据库中建立的锁表中确定状态标识为第一标识的锁为待选锁;所述第一标识用于指示锁的状态为空闲状态;
从所述待选锁中确定更新时间最早的锁为所述目标锁。
3.根据权利要求2所述的方法,其特征在于,在所述从所述预先在关系型数据库中建立的锁表中确定目标锁之后,所述方法还包括:
将所述预先在关系型数据库中建立的锁表中记录的所述目标锁的状态标识更改为第二标识,所述第二标识用于指示锁的状态为占用状态;
则,在对所述目标业务数据进行处理,以完成所述当前定时任务之前,所述方法还包括:
将所述预先在关系型数据库中建立的锁表中记录的所述目标锁的状态标识更改为所述第一标识,并将所述目标锁的更新时间更改为当前时间。
4.根据权利要求3所述的方法,其特征在于,所述业务数据表中记录有至少一条业务数据以及各条业务数据的状态标识,所述根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据,包括:
获取所述目标锁的编号;
从所述业务数据表中确定出状态标识为第三标识的业务数据为待选业务数据;所述第三标识用于指示业务数据的状态为待处理状态;
将每个所述待选业务数据的编号与所述锁的数量取模运算,获得运算结果;
当所述运算结果与所述目标锁的编号一致时,确定所述每个待选业务数据为所述目标业务数据。
5.根据权利要求4所述的方法,其特征在于,在所述从业务数据表中确定目标业务数据之后,所述方法还包括:
将所述业务数据表中记录的所述目标业务数据的状态标识更改为第四标识,所述第四标识用于指示业务数据的状态为处理中状态;
则,在对所述目标业务数据进行处理,完成所述当前定时任务之后,所述方法还包括:
将所述业务数据表中记录的所述目标业务数据的状态标识更改为第五标识,所述第五标识用于指示业务数据的状态为处理结束状态。
6.根据权利要求1至5中任意一项所述的方法,其特征在于,所述方法还包括:
按照预设时间周期对所述预先在关系型数据库中建立的锁表中记录的多个锁的状态进行监控,确定所述预先在关系型数据库中建立的锁表中记录的多个锁中是否存在死锁,所述死锁为锁的状态标识为第二标识,且更新时间与当前时间之间的时间差超出预设时间阈值的锁;
当确定所述预先在关系型数据库中建立的锁表中记录的多个锁中存在死锁时,将所述死锁的状态标识更改为第一标识,所述第一标识用于指示锁的状态为空闲状态。
7.一种定时任务处理装置,其特征在于,所述装置包括:
接收单元,用于接收当前定时任务;
锁表获取单元,用于获取预先在关系型数据库中建立的锁表,所述预先在关系型数据库中建立的锁表中记录有多个锁;
锁的数量确定单元,用于确定所述预先在关系型数据库中建立的锁表中记录的锁的数量;
目标锁确定单元,用于从所述预先在关系型数据库中建立的锁表中确定目标锁;
目标业务数据确定单元,用于根据所述预先在关系型数据库中建立的锁表中记录的锁的数量,以及,所述目标锁,从业务数据表中确定目标业务数据;
定时任务处理单元,用于对所述目标业务数据进行处理,完成所述当前定时任务。
8.根据权利要求7所述的装置,其特征在于,所述预先在关系型数据库中建立的锁表中记录有每个锁的状态标识,以及每个锁的更新时间,则所述目标锁确定单元,具体用于:
从所述预先在关系型数据库中建立的锁表中确定状态标识为第一标识的锁为待选锁;所述第一标识用于指示锁的状态为空闲状态;
从所述待选锁中确定更新时间最早的锁为所述目标锁。
9.根据权利要求6所述的装置,其特征在于,所述业务数据表中记录有至少一条业务数据以及各条业务数据的状态标识,所述目标业务数据确定单元,具体用于:
获取所述目标锁的编号;
从所述业务数据表中确定出状态标识为第三标识的业务数据为待选业务数据;所述第三标识用于指示业务数据的状态为待处理状态;
将每个所述待选业务数据的编号与所述锁的数量取模运算,获得运算结果;
当所述运算结果与所述目标锁的编号一致时,确定所述每个待选业务数据为所述目标业务数据。
10.根据权利要求7至9中任意一项所述的装置,其特征在于,所述装置还包括:
监控单元,用于按照预设时间周期对所述预先在关系型数据库中建立的锁表中记录的多个锁的状态进行监控,确定所述预先在关系型数据库中建立的锁表中记录的多个锁中是否存在死锁,所述死锁为锁的状态标识为第二标识,且更新时间与当前时间之间的时间差超出预设时间阈值的锁;当确定所述预先在关系型数据库中建立的锁表中记录的多个锁中存在死锁时,将所述死锁的状态标识更改为第一标识,所述第一标识用于指示锁的状态为空闲状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911127723.7A CN110888723A (zh) | 2019-11-18 | 2019-11-18 | 定时任务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911127723.7A CN110888723A (zh) | 2019-11-18 | 2019-11-18 | 定时任务处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110888723A true CN110888723A (zh) | 2020-03-17 |
Family
ID=69747834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911127723.7A Pending CN110888723A (zh) | 2019-11-18 | 2019-11-18 | 定时任务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110888723A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858075A (zh) * | 2020-06-30 | 2020-10-30 | 广东浪潮大数据研究有限公司 | 一种死锁检测的方法、系统、设备及可读存储介质 |
CN112541038A (zh) * | 2020-12-01 | 2021-03-23 | 杭州海康威视数字技术股份有限公司 | 时序数据管理方法、系统、计算设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180011744A1 (en) * | 2016-07-06 | 2018-01-11 | International Business Machines Corporation | Determining when to release a lock from a first task holding the lock to grant to a second task waiting for the lock |
CN107688500A (zh) * | 2017-07-26 | 2018-02-13 | 阿里巴巴集团控股有限公司 | 一种分布式任务处理方法、装置、系统及设备 |
CN107861799A (zh) * | 2016-12-28 | 2018-03-30 | 平安科技(深圳)有限公司 | 基于多线程环境的任务处理方法及装置 |
CN108132837A (zh) * | 2018-01-02 | 2018-06-08 | 中国工商银行股份有限公司 | 一种分布式集群调度系统及方法 |
CN109032796A (zh) * | 2018-07-18 | 2018-12-18 | 北京京东金融科技控股有限公司 | 一种数据处理方法和装置 |
CN110275766A (zh) * | 2019-06-25 | 2019-09-24 | 深圳前海微众银行股份有限公司 | 一种任务处理方法及装置 |
-
2019
- 2019-11-18 CN CN201911127723.7A patent/CN110888723A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180011744A1 (en) * | 2016-07-06 | 2018-01-11 | International Business Machines Corporation | Determining when to release a lock from a first task holding the lock to grant to a second task waiting for the lock |
CN107861799A (zh) * | 2016-12-28 | 2018-03-30 | 平安科技(深圳)有限公司 | 基于多线程环境的任务处理方法及装置 |
CN107688500A (zh) * | 2017-07-26 | 2018-02-13 | 阿里巴巴集团控股有限公司 | 一种分布式任务处理方法、装置、系统及设备 |
CN108132837A (zh) * | 2018-01-02 | 2018-06-08 | 中国工商银行股份有限公司 | 一种分布式集群调度系统及方法 |
CN109032796A (zh) * | 2018-07-18 | 2018-12-18 | 北京京东金融科技控股有限公司 | 一种数据处理方法和装置 |
CN110275766A (zh) * | 2019-06-25 | 2019-09-24 | 深圳前海微众银行股份有限公司 | 一种任务处理方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858075A (zh) * | 2020-06-30 | 2020-10-30 | 广东浪潮大数据研究有限公司 | 一种死锁检测的方法、系统、设备及可读存储介质 |
CN112541038A (zh) * | 2020-12-01 | 2021-03-23 | 杭州海康威视数字技术股份有限公司 | 时序数据管理方法、系统、计算设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106897342B (zh) | 一种数据校验方法和设备 | |
CN109634682B (zh) | 应用程序的配置文件更新方法及装置 | |
CN109033365B (zh) | 一种数据处理方法及相关设备 | |
CN110888723A (zh) | 定时任务处理方法及装置 | |
CN106878365B (zh) | 一种数据同步方法和设备 | |
CN109471901B (zh) | 一种数据同步方法及装置 | |
CN111142975B (zh) | 状态机持久化方法及状态机持久化系统 | |
CN108062323B (zh) | 一种日志读取方法及装置 | |
CN112416534A (zh) | 一种基于Agent的任务管理方法及装置 | |
CN111756803A (zh) | 一种基于区块链技术的服务器端推送方法及设备、介质 | |
CN109582396B (zh) | 一种任务状态处理方法、装置、系统及存储介质 | |
CN109558249B (zh) | 一种并发操作的控制方法及装置 | |
CN110019357B (zh) | 数据库查询脚本生成方法及装置 | |
CN111161064A (zh) | 一种区块链交易记录的处理方法及装置 | |
CN111125087A (zh) | 数据的存储方法及装置 | |
CN109299125B (zh) | 数据库更新方法及装置 | |
US20210248117A1 (en) | Database migration method, apparatus, device, and computer-readable medium | |
CN114138745A (zh) | 数据的集成方法、装置、存储介质及处理器 | |
CN107291439B (zh) | 一种目标增量数据构建方法及装置 | |
CN108121719B (zh) | 一种实现数据抽取转换加载etl的方法及装置 | |
CN109101514A (zh) | 数据导入方法及装置 | |
CN110990378A (zh) | 一种基于区块链的数据一致性对比方法及设备、介质 | |
CN114827158A (zh) | 一种配置信息的加载方法、系统及服务器 | |
CN110968587A (zh) | 一种数据处理方法及装置 | |
CN110618863A (zh) | 一种基于Raft算法的作业调度方法 |
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 |