CN104951361B - 一种定时任务的触发方法和装置 - Google Patents
一种定时任务的触发方法和装置 Download PDFInfo
- Publication number
- CN104951361B CN104951361B CN201410120524.4A CN201410120524A CN104951361B CN 104951361 B CN104951361 B CN 104951361B CN 201410120524 A CN201410120524 A CN 201410120524A CN 104951361 B CN104951361 B CN 104951361B
- Authority
- CN
- China
- Prior art keywords
- task
- index
- time
- timed
- index data
- 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
Landscapes
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种定时任务的触发方法和装置,包括:步骤110:从任务索引集合中加载一个任务时段要执行的定时任务的任务索引;步骤120:获取执行时间排在最前的索引数据;步骤130:判断执行时间是否大于当前时间;步骤140:如果执行时间大于当前时间,则将当前时间至执行时间之间的时间段设定为休眠时间;步骤150:判断休眠时间是否结束;步骤160:如果执行时间小于等于当前时间或者休眠时间结束,则从数据库中扫描所述索引数据对应的一个或多个定时任务的业务数据,并触发所述一个或多个定时任务;针对剩余的索引数据,执行步骤120‑步骤160直至所有索引数据都已被触发为止。采用本申请,能动态地调整扫描时间间隔和扫描线程数,避免重复查询和任务堆积。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种定时任务的触发方法和装置。
背景技术
在主动服务产品中,一般通过查询数据库中到期的记录,触发超时判定任务。为了能无延迟触发定时任务,需要时刻全表扫描出到期的记录,如此频繁的大量重复查询,会导致数据库负载过高。例如,假定扫描线程的扫描间隔时间固定为2毫秒(ms),即,每秒执行500次SQL(结构化查询语言)查询,假设任务表中每分钟到期100条任务,那么,为了触发100条任务,扫描线程每分钟要执行3万次查询,极大地浪费了数据库资源。
另一方面,由于扫描间隔时间(T)是固定的,那么定时任务会存在T时长的延迟。在海量定时任务下,这种延迟会导致任务的堆积。例如,主动服务产品中,假设每天有2000万物流订单,假设平均每个订单有5个定时任务,那么每天需要触发的定时任务大约有1亿个,平均每秒约有1157个任务到期,高峰时期可达到每秒到期10万个任务。按上述例子中的扫描间隔时间进行扫描,假设每次批量查询100条任务,那么每秒最多可以扫描出5万条任务,将不可避免地导致任务堆积。
综上所述,为避免造成数据库资源浪费,要求扫描间隔时间越长越好,而为保证时效性,避免当数据量大时任务堆积,又要求扫描间隔时间越短越好,鉴于以上原因,需要合理设置扫描间隔时间。
发明内容
本申请的主要目的在于提供一种定时任务的触发方法和装置,以解决现有技术存在的定时任务的扫描间隔时间的设置问题,其中:
本申请提供了一种定时任务的触发方法,包括:
步骤110:从任务索引集合中加载一个任务时段要执行的定时任务的任务索引,所述任务索引中包含一个或多个索引数据,其中,每个索引数据对应一个或多个执行时间相同的定时任务,每个索引数据中记录了所对应的一个或多个定时任务的任务标识以及所述一个或多个定时任务的执行时间;步骤120:获取执行时间排在最前的索引数据;步骤130:判断所述执行时间是否大于当前时间;步骤140:如果所述执行时间大于当前时间,则将当前时间至所述执行时间之间的时间段设定为休眠时间;步骤150:判断所述休眠时间是否结束;步骤160:如果所述执行时间小于等于当前时间或者所述休眠时间结束,则从数据库中扫描所述索引数据对应的一个或多个定时任务的业务数据,并触发所述一个或多个定时任务;针对剩余的索引数据,执行步骤120-步骤160直至所有索引数据都已被触发为止。
本申请的另一方面提供了一种定时任务触发装置,包括:加载模块,用于从任务索引集合中加载一个任务时段要执行的定时任务的任务索引,所述任务索引中包含一个或多个索引数据,其中,每个索引数据对应一个或多个执行时间相同的定时任务,每个索引数据中记录了所对应的一个或多个定时任务的任务标识以及所述一个或多个定时任务的执行时间;获取模块,用于获取执行时间排在最前的索引数据;第一判断模块,用于判断所述执行时间是否大于当前时间;设定模块,用于如果所述执行时间大于当前时间,则将当前时间至所述执行时间之间的时间段设定为休眠时间;第二判断模块,用于判断所述休眠时间是否结束;扫描及触发模块,用于如果所述执行时间小于等于当前时间或者所述休眠时间结束,则从数据库中扫描所述索引数据对应的一个或多个定时任务的业务数据,并触发所述一个或多个定时任务。
与现有技术相比,根据本申请的技术方案,通过对定时任务建立任务索引集合,能够根据任务索引动态地调整扫描时间间隔,保证每个任务的触发最多只需要消耗一次查询,避免重复和无效的查询,从而避免资源浪费,提高定时任务系统的处理能力,不会造成定时任务的处理延迟。并且,能够动态地调整扫描线程数,避免任务堆积。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的定时任务的触发方法的流程图;
图2是根据本申请的一个实施例的将一个任务索引中的索引数据采用堆排序的方式按执行时间进行排序的示意图;以及
图3是根据本申请实施例的定时任务的触发装置的结构图。
具体实施方式
本申请的主要思想在于,对定时任务根据任务的执行时间建立任务索引集合,从而根据任务索引动态调整扫描时间,以使每次查询至少触发一个定时任务,并根据任务数量自适应分配扫描线程,以确保定时任务能够无延迟和可靠地触发。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
根据本申请的实施例,提供了一种定时任务的触发方法。
参考图1,图1是本申请实施例的定时任务的触发方法的流程图。
在步骤S110处,从任务索引集合中加载一个任务时段要执行的定时任务的任务索引。
所述任务索引集合中可以包含一个或多个任务索引,其中,每个任务索引中包含一个任务时段内要执行的定时任务的索引数据,每个任务索引中包含一个或多个索引数据,其中,每个索引数据对应一个或多个执行时间相同的定时任务,每个索引数据中记录了所对应的一个或多个定时任务的任务标识集合以及所述一个或多个定时任务的执行时间,每个任务标识用于标识数据库中的一个定时任务,即,该定时任务在数据库中的任务标识。所述一个或多个任务的执行时间可以是在该任务时段内的相对时间,例如,相对于该任务时段的开始时间的相对执行时间。其中,每个任务时段对应的任务索引可以以该任务时段的开始时间为时间索引。应该理解,也可以使用任何其他适当的方式来定义该相对时间。
任务索引集合可以是预先建立的,可以根据定时任务的执行时间(即,该任务的预定执行时间)以及在数据库中的任务标识建立任务索引集合,在定时任务的业务数据写入数据库时,可以根据每个定时任务的执行时间和在数据库中的任务标识,创建每个定时任务的索引数据,并写入任务索引集合中。其中,执行时间相同的定时任务可以创建为一个索引数据,即,每个索引数据中记录执行时间相同一个或多个的定时任务、该相同的执行时间以及所述一个或多个的定时任务的任务标识集合。
根据本申请的一个实施例,预先建立的任务索引集合可以保存在缓存中,优选地,可以保存在持久化缓存中,例如,具有持久化特征的结构数据存储系统Tair。
具体地,可以先根据定时任务的数量确定任务时段,再按照确定的任务时段建立任务索引集合,其中,一个任务时段内要执行的定时任务的索引数据可以记录在一个任务索引中,也就是说,每个任务时段内要执行的定时任务分别对应一个任务索引,当进行任务扫描时就可以预先加载一个任务时段的任务索引。
例如,可以确定一分钟为一个任务时段,按照分钟建立的任务索引集合可以为:
到期时间:2013-12-1212:00:00
[9]:{101}
[8]:{103,105}
[2]:{104}
到期时间:2013-12-1212:01:00
[21]:{102}
以上为以1分钟为一个任务时段建立的任务索引集合中的一部分,包括2013-12-1212:00:00~12:01:00的1分钟时间内(即,到期时间在2013-12-1212:00:00~12:01:00内)要执行的定时任务的任务索引,以及2013-12-1212:01:00~12:02:00的1分钟内要执行的定时任务的任务索引。其中,101、103、105、104为定时任务的任务标识,[9]、[8]、[2]分别为任务标识集合{101}、{103,105}、{104}对应的执行时间在该任务周时段内的相对时间,即,表示任务101、103和105、104的执行时间分别在该任务时段的第9秒、第8秒、第2秒,它们的实际执行时间分别为2013-12-1212:00:09、2013-12-1212:00:08、2013-12-1212:00:02。同理可知2013-12-1212:01:00~12:02:00的1分钟时间内的任务索引以及任务的对应关系。
根据本申请的一个实施例,当有新建的定时任务时,可以在新任务的业务数据写入数据库的同时,根据该定时任务的执行时间,将该定时任务的索引数据添加到任务索引集合中的相应的任务索引中,从而更新任务索引集合。
例如,新增加了两个定时任务,任务标识分别为106和107,执行时间分别为2013-12-1212:00:09和2013-12-1212:01:18,则将这两个定时任务的执行时间和数据写入数据库中,并建立这两个定时任务的索引数据。
根据这两个新的定时任务的执行时间,可以将任务106的索引数据添加到2013-12-1212:00:00的任务索引中,将任务107的索引数据添加到2013-12-1212:01:00的任务索引中,更新后的任务索引如下所示:
到期时间:2013-12-1212:00:00
[9]:{101,106}
[8]:{103,105}
[2]:{104}
到期时间:2013-12-1212:01:00
[21]:{102}
[18]:{107}
以上为根据本申请的实施例的建立任务索引集合的过程,下面继续对步骤S110进行描述。
在步骤S110处,从预先建立的任务索引集合中加载一个任务时段要执行的定时任务的任务索引。例如,该任务时段可以是紧跟当前时间之后的一个时间所对应的一个任务时段。例如,所述紧跟当前时间是以分钟为单位的。例如,在上述的任务索引集合中,是按照1分钟为一个任务时段建立的任务索引集合,假设当前时间为2013-12-1211:59:00,则可以从索引集合中预先加载的一个任务时段的任务索引就是加载到期时间为2013-12-1212:00:00~12:01:00这个任务时段的任务索引。
在步骤S120处,获取执行时间排在最前的索引数据。
具体地,可以先根据当前加载的任务索引中的一个或多个索引数据记录的执行时间确定该一个或多个索引数据中执行时间在最前的索引数据,如,可以采用堆排序的方式根据所述一个或多个索引数据记录的执行时间确定所述一个或多个索引数据中执行时间在最前的索引数据,使处于堆顶节点的索引数据为所述一个或多个索引数据中执行时间在最前的数据(距当前时间点最近)。从而获取该堆顶节点的索引数据。
并且,获取索引数据之后,可以根据所述索引数据所对应的任务的数量为所述索引数据对应的一个或多个定时任务分配一个或多个扫描线程。
然后在步骤S130处,判断所述执行时间是否大于当前时间。其中,如果所述执行时间大于当前时间,也就是说,该索引数据对应的任务的执行时间在当前时间之后,则进行到步骤140;如果所述执行时间小于等于当前时间,也就是说,该索引数据对应的定时任务已经到期或过期,则立即进行步骤S160。
在步骤S140处,如果所述执行时间大于当前时间,则将当前时间至所述执行时间之间的时间段设定为休眠时间,并进行到步骤150。
在步骤S150处,判断所述休眠时间是否结束。如果休眠时间结束,则进行到步骤S160,如果休眠时间未结束,则直到判断休眠时间结束时,进行步骤S160。如此,通过设定休眠时间,可以动态调整扫描的时间间隔。
接下来,在步骤S160处,如果所述执行时间小于等于当前时间或者所述休眠时间结束,则从数据库中扫描所述索引数据对应的一个或多个定时任务的业务数据,并触发所述一个或多个定时任务。即,从数据库中查询该索引数据对应的一个或多个定时任务,并触发执行该一个或多个定时任务。
具体而言,在步骤S120处已经根据所述索引数据所对应的定时任务的数量为所述索引数据对应的一个或多个定时任务分配一个或多个扫描线程,从而在S160处,利用所述一个或多个扫描线程从数据库中扫描所述一个或多个定时任务的业务数据,并根据所述业务数据触发所述一个或多个定时任务。
在一个实施例中,可以根据该索引数据中记录的任务标识的数量(即,该索引数据对应的定时任务的数量)以及每个扫描线程一次能处理的任务数量为该索引数据对应的一个或多个定时任务分配一个或多个扫描线程,分配的该一个或多个扫描线程从数据库中扫描该索引数据对应的一个或多个定时任务的业务数据,并根据所述业务数据触发所述一个或多个定时任务。
例如,假设单个扫描线程一次能处理N个定时任务,而该索引数据对应的定时任务的数量为S个,则分配S/N个扫描线程,每个扫描线程处理N个任务,其中,每个扫描线程可以从该索引数据中取N个定时任务,并根据领取的任务的任务标识,从数据库中扫描所领取的N个定时任务的业务数据,并触发这N个定时任务。其中,可以将查询到的该N个定时任务分发给任务处理进程,由任务处理进程执行该N个定时任务。
执行了步骤S160之后,对该任务索引中剩余的索引数据(即,该任务索引中未被扫描及触发执行的定时任务的索引数据)继续执行步骤S120~步骤S160,直至该任务索引中所有的索引数据对应的任务都被触发为止。也就是说,每扫描并触发执行一个索引数据对应的定时任务后,对任务索引中剩余的索引数据重新进行步骤S120~S160,直到该任务索引中所有的索引数据对应的定时任务都被触发为止,再预加载下一个任务时段的任务索引,并在下一个任务时段到达时,进行如上所述的后续步骤S120~S160。
如上所述,通过预加载一个任务时段的任务索引,当该任务时段到达时,可以根据该任务索引设定扫描的休眠时间,从而达到动态调整扫描的时间间隔,减少查询次数,节省资源的目的,并且,在对定时任务进行扫描时,能够根据索引数据中记录的定时任务的任务标识的数量(索引数据对应的定时任务的数量)动态的分配对定时任务进行扫描的扫描线程数,从而能够避免任务触发延迟,造成任务堆积。
下面以一个具体的实施例,对本申请的定时任务的触发方法的执行过程进行描述:
在步骤S110处,从任务索引集合中预先加载一个任务时段要执行的定时任务的任务索引。
例如,在2013-12-1211:59:59秒预先加载一个任务时段的任务索引:
到期时间:2013-12-1212:00:00
[9]:{101,106}
[8]:{103,105}
[2]:{104}
在步骤S120处,对该任务索引中的索引数据进行堆排序,从而获取执行时间在最前的索引数据,如图2所示,采用堆排序的方式将上述任务索引中的索引数据按执行时间进行堆排序后,可以根据该排序结果获取堆顶节点的执行时间为[2]的索引数据。
然后在步骤S130处,当该任务时段开始时,即,当前时间为2013-12-1212:00:00时,判断该索引数据记录的执行时间是否大于当前时间,根据该索引数据中记录的执行时间12:00:02,判断得到该执行时间大于当前时间12:00:00,则进行到步骤140。
在步骤S140处,将当前时间12:00:00至所述执行时间12:00:02之间的时间段设定为休眠时间,即,休眠2秒钟时间,并且,在步骤S150处,判断休眠时间是否结束。如果所述休眠时间结束,则进行到步骤S160,如果休眠时间未结束,则直到休眠时间结束时,进行到步骤S160。应当理解,该休眠时间的精确度可以设置到毫秒级。
在步骤S160处,当休眠时间结束时,即,到达该索引数据记录的执行时间12:00:02时,从数据库中扫描该索引数据对应的定时任务104的业务数据,并触发该定时任务(例如,可以将从数据库中扫描到的该定时任务的业务数据分发到任务处理进程,由任务处理进程根据该业务数据执行该定时任务)。此时,该任务索引中剩余的索引数据为“[8]:{103,105}”和“[9]:{101,106}”,则对剩余的索引数据继续执行步骤S120~步骤S160,对剩余的索引数据“[8]:{103,105}”和“[9]:{101,106}”进行堆排序,并取堆顶节点的索引数据“[8]:{103,105}”,判断该索引数据的执行时间12:00:08大于当前时间12:00:02,则将当前时间12:00:02至所述执行时间12:00:08之间时长6秒的时间段设定为休眠时间,当休眠时间结束时,从数据库中扫描该索引数据对应的定时任务103和105的业务数据,并触发定时任务103和105的执行。
以后的扫描及触发执行的过程以此类推,不再累述。从而,直到这一个任务时段的定时任务都被触发执行为止,并进入下一个任务时段。
根据本申请的一个实施例,还可以包括:如果所述任务索引被更新,则从任务索引集合中重新加载所述任务索引的步骤。
例如,在对当前任务时段的定时任务进行触发的过程中,有新建的执行时间在当前任务时段的定时任务,则当前的任务时段的任务索引会被更新,因此,可以从任务索引集合中重新加载当前时段的任务索引,并根据该更新的任务索引进行后续处理。
本申请还提供了一种定时任务的触发装置。
图3示意性地示出了根据本申请一个实施例的定时任务的触发装置的结构框图。根据本申请的一个实施例,该装置300包括:加载模块310、获取模块320、第一判断模块330、设定模块340、第二判断模块350和扫描及触发模块360。
其中,加载模块310,可以用于从索引集合中加载一个任务时段要执行的定时任务的任务索引,所述任务索引中包含一个或多个索引数据,其中,每个索引数据对应一个或多个执行时间相同的定时任务,每个索引数据中记录了所对应的一个或多个定时任务的任务标识以及所述一个或多个定时任务的执行时间。
获取模块320,可以用于获取执行时间在最前的索引数据.。
第一判断模块330,可以用于判断所述执行时间是否大于当前时间。如果所述执行时间小于等于当前时间,则立即触发扫描及触发模块360执行其功能。
设定模块340,可以用于如果所述执行时间大于当前时间,则将当前时间至所述执行时间之间的时间段设定为休眠时间。
第二判断模块350,可以用于判断所述休眠时间是否结束。如果所述休眠时间结束,则立即触发扫描及触发模块360执行其功能。
扫描及触发模块360,可以用于如果所述执行时间小于等于当前时间或者所述休眠时间结束,则从数据库中扫描所述索引数据对应的一个或多个定时任务的业务数据,并触发所述一个或多个定时任务。
根据本申请的一个实施例,获取模块320可以包括:线程分配模块,该模块可以用于根据所述索引数据所对应的任务的数量为所述索引数据对应的一个或多个定时任务分配一个或多个扫描线程。
扫描及触发模块360可以进一步被配置成利用所述一个或多个扫描线程从数据库中扫描所述一个或多个定时任务的业务数据,并根据所述业务数据触发所述一个或多个定时任务。
根据本申请的一个实施例,所述任务索引集合是根据定时任务的执行时间和在数据库中的任务标识而预先建立的。
根据本申请的一个实施例,采用堆排序的方式获取执行时间排在最前的索引数据。
根据本申请的一个实施例,所述加载模块可以进一步用于:如果所述任务索引被更新,则从索引集合中重新加载所述任务索引。
由于本实施例的装置所实现的功能基本相应于前述图1至图2所示的方法实施例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种定时任务的触发方法,其特征在于,包括:
步骤110:从任务索引集合中加载一个任务时段要执行的定时任务的任务索引,所述任务索引中包含一个或多个索引数据,其中,每个索引数据对应一个或多个执行时间相同的定时任务,每个索引数据中记录了所对应的一个或多个定时任务的任务标识以及所述一个或多个定时任务的执行时间;
步骤120:获取执行时间排在最前的索引数据;
步骤130:判断所述执行时间是否大于当前时间;
步骤140:如果所述执行时间大于当前时间,则将当前时间至所述执行时间之间的时间段设定为休眠时间;
步骤150:判断所述休眠时间是否结束;
步骤160:如果所述执行时间小于等于当前时间或者所述休眠时间结束,则从数据库中扫描所述索引数据对应的一个或多个定时任务的业务数据,并触发所述一个或多个定时任务;
针对剩余的索引数据,执行步骤120-步骤160直至所有索引数据都已被触发为止。
2.根据权利要求1所述的方法,其特征在于,
获取执行时间排在最前的索引数据还包括:
根据所述索引数据所对应的任务的数量为所述索引数据对应的一个或多个定时任务分配一个或多个扫描线程;
从数据库中扫描所述索引数据对应的一个或多个定时任务的业务数据,并触发所述一个或多个定时任务进一步包括:
所述一个或多个扫描线程从数据库中扫描所述一个或多个定时任务的业务数据,并根据所述业务数据触发所述一个或多个定时任务。
3.根据权利要求1所述的方法,其特征在于,所述任务索引集合是根据定时任务的执行时间和在数据库中的任务标识预先建立的。
4.根据权利要求1所述的方法,其特征在于,采用堆排序的方式获取执行时间排在最前的索引数据。
5.根据权利要求1所述的方法,其特征在于,还包括,如果所述任务索引被更新,则从所述任务索引集合中重新加载所述任务索引。
6.一种定时任务的触发装置,其特征在于,包括:
加载模块,用于从任务索引集合中加载一个任务时段要执行的定时任务的任务索引,所述任务索引中包含一个或多个索引数据,其中,每个索引数据对应一个或多个执行时间相同的定时任务,每个索引数据中记录了所对应的一个或多个定时任务的任务标识以及所述一个或多个定时任务的执行时间;
获取模块,用于获取执行时间排在最前的索引数据;
第一判断模块,用于判断所述执行时间是否大于当前时间;
设定模块,用于如果所述执行时间大于当前时间,则将当前时间至所述执行时间之间的时间段设定为休眠时间;
第二判断模块,用于判断所述休眠时间是否结束;
扫描及触发模块,用于如果所述执行时间小于等于当前时间或者所述休眠时间结束,则从数据库中扫描所述索引数据对应的一个或多个定时任务的业务数据,并触发所述一个或多个定时任务;
调用模块,用于调用所述获取模块、所述第一判断模块、所述设定模块、所述第二判断模块和所述扫描及触发模块,对剩余的索引数据进行相应处理,直至所有索引数据都已被触发为止。
7.根据权利要求6所述的装置,其特征在于,
所述获取模块还包括:
线程分配模块,用于根据所述索引数据所对应的任务的数量为所述索引数据对应的一个或多个定时任务分配一个或多个扫描线程;以及
所述扫描及触发模块进一步用于,
利用所述一个或多个扫描线程从数据库中扫描所述一个或多个定时任务的业务数据,并根据所述业务数据触发所述一个或多个定时任务。
8.根据权利要求6所述的装置,其特征在于,所述任务索引集合是根据定时任务的执行时间和在数据库中的任务标识而预先建立的。
9.根据权利要求6所述的装置,其特征在于,采用堆排序的方式获取执行时间排在最前的索引数据。
10.根据权利要求6所述的装置,其特征在于,所述加载模块进一步用于:如果所述任务索引被更新,则从所述任务索引集合中重新加载所述任务索引。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410120524.4A CN104951361B (zh) | 2014-03-27 | 2014-03-27 | 一种定时任务的触发方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410120524.4A CN104951361B (zh) | 2014-03-27 | 2014-03-27 | 一种定时任务的触发方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104951361A CN104951361A (zh) | 2015-09-30 |
CN104951361B true CN104951361B (zh) | 2018-10-09 |
Family
ID=54166030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410120524.4A Active CN104951361B (zh) | 2014-03-27 | 2014-03-27 | 一种定时任务的触发方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104951361B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677469B (zh) * | 2016-01-06 | 2019-12-27 | 北京京东世纪贸易有限公司 | 定时任务执行方法及装置 |
CN108733462A (zh) * | 2017-04-18 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 延迟任务的方法和装置 |
CN107065616A (zh) * | 2017-05-08 | 2017-08-18 | 浙江风向标科技有限公司 | 联动控制方法及装置、计算机可读存储介质 |
CN107423894A (zh) * | 2017-07-19 | 2017-12-01 | 东软集团股份有限公司 | 任务审批方法、装置和计算机设备 |
CN107748695B (zh) * | 2017-10-24 | 2020-11-24 | 平安科技(深圳)有限公司 | 定时任务处理方法、装置、存储介质和计算机设备 |
CN110096340B (zh) * | 2018-01-29 | 2020-11-17 | 北京世纪好未来教育科技有限公司 | 定时任务处理方法及装置 |
CN109062997A (zh) * | 2018-07-05 | 2018-12-21 | 中国电子科技集团公司第五十四研究所 | 一种电子围栏数据自动去重方法 |
CN110968405A (zh) * | 2018-09-30 | 2020-04-07 | 杭州海康威视系统技术有限公司 | 一种计划任务的检测方法及装置 |
CN109741153B (zh) * | 2019-01-18 | 2021-02-12 | 网联清算有限公司 | 超时交易处理方法、装置、计算机设备及存储介质 |
CN110413384B (zh) * | 2019-06-25 | 2024-03-01 | 腾讯科技(深圳)有限公司 | 延时任务处理方法及装置、存储介质、电子设备 |
CN110706051B (zh) * | 2019-07-03 | 2022-03-29 | 威富通科技有限公司 | 一种订单数据聚合方法、装置及服务器 |
CN110471750A (zh) * | 2019-07-12 | 2019-11-19 | 平安科技(深圳)有限公司 | 定时任务控制方法、装置、介质和计算机设备 |
CN110532081B (zh) * | 2019-09-02 | 2022-03-22 | 政采云有限公司 | 一种定时任务处理方法及装置 |
CN110750550A (zh) * | 2019-10-22 | 2020-02-04 | 京东数字科技控股有限公司 | 数据查证方法、数据查证装置、存储介质与电子设备 |
CN112925626B (zh) * | 2021-03-22 | 2023-04-25 | 恒为科技(上海)股份有限公司 | 一种定时器任务处理方法、装置及服务器 |
CN115391052B (zh) * | 2022-10-26 | 2023-03-21 | 上海擎朗智能科技有限公司 | 一种机器人任务处理方法、装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6157935A (en) * | 1996-12-17 | 2000-12-05 | Tran; Bao Q. | Remote data access and management system |
CN101122870A (zh) * | 2007-09-30 | 2008-02-13 | 金蝶软件(中国)有限公司 | 一种线程唤醒控制方法和系统 |
CN101425153A (zh) * | 2007-10-31 | 2009-05-06 | 国际商业机器公司 | 用于生成可执行业务流程的监视视图的装置和方法 |
CN102377799A (zh) * | 2010-08-11 | 2012-03-14 | 腾讯科技(深圳)有限公司 | 手机浏览器服务器端及其实现浏览器双线程模式的方法 |
CN103116581A (zh) * | 2011-11-16 | 2013-05-22 | 阿里巴巴集团控股有限公司 | 一种电子信息的推荐方法以及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003009164A2 (en) * | 2001-07-16 | 2003-01-30 | America Online Incorporated | Method and apparatus for calendaring reminders |
US20060004767A1 (en) * | 2004-06-30 | 2006-01-05 | Microsoft Corporation | Systems and methods for collecting, representing, transmitting, and interpreting usage and state data for software |
-
2014
- 2014-03-27 CN CN201410120524.4A patent/CN104951361B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6157935A (en) * | 1996-12-17 | 2000-12-05 | Tran; Bao Q. | Remote data access and management system |
CN101122870A (zh) * | 2007-09-30 | 2008-02-13 | 金蝶软件(中国)有限公司 | 一种线程唤醒控制方法和系统 |
CN101425153A (zh) * | 2007-10-31 | 2009-05-06 | 国际商业机器公司 | 用于生成可执行业务流程的监视视图的装置和方法 |
CN102377799A (zh) * | 2010-08-11 | 2012-03-14 | 腾讯科技(深圳)有限公司 | 手机浏览器服务器端及其实现浏览器双线程模式的方法 |
CN103116581A (zh) * | 2011-11-16 | 2013-05-22 | 阿里巴巴集团控股有限公司 | 一种电子信息的推荐方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104951361A (zh) | 2015-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104951361B (zh) | 一种定时任务的触发方法和装置 | |
CN106293950B (zh) | 一种面向集群系统的资源优化管理方法 | |
CN104408088A (zh) | 并发请求的控制方法及装置 | |
CN104391954B (zh) | 数据库日志的处理方法及装置 | |
US10120817B2 (en) | Device and method for scheduling commands in a solid state drive to reduce peak power consumption levels | |
BRPI1010168B1 (pt) | método para gerenciar um thread pool e sistema para gerenciar um thread pool | |
CN105516086B (zh) | 业务处理方法及装置 | |
CN106911592A (zh) | 一种自适应资源分配方法及装置 | |
CN105843819A (zh) | 一种数据导出方法及装置 | |
CN108196959B (zh) | Etl系统的资源管理方法及装置 | |
CN112748993A (zh) | 任务执行方法、装置、存储介质及电子设备 | |
CN107562528A (zh) | 支持多种计算框架的单元化按需计算方法及相关装置 | |
CN105718307B (zh) | 进程管理方法及进程管理装置 | |
CN110020046A (zh) | 一种数据抓取方法及装置 | |
CN109213912A (zh) | 一种抓取网络数据的方法及网络数据抓取调度装置 | |
CN110297743A (zh) | 一种负载测试方法、装置和存储介质 | |
CN110825533B (zh) | 一种数据发射方法及装置 | |
CN110417678A (zh) | 一种应用程序接口限流的方法及装置 | |
CN105824687A (zh) | 一种Java虚拟机性能自动调优的方法及装置 | |
US20230394307A1 (en) | Data caching method and apparatus for multiple concurrent deep learning training tasks | |
CN107092556A (zh) | 测试方法、装置及设备 | |
CN111752716A (zh) | 模型使用方法、数据处理方法及装置 | |
CN110888726A (zh) | 一种多任务并发处理方法及系统 | |
CN110334118A (zh) | 数据查询方法及装置 | |
CN115309735A (zh) | 大数据清洗方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |