任务的定时方法、装置及电子设备与流程

文档序号:25167866发布日期:2021-05-25 14:35阅读:106来源:国知局
任务的定时方法、装置及电子设备与流程

本公开实施例涉及监控定时任务的技术领域,更具体地,涉及任务的定时方法、任务的定时装置、电子设备及计算机可读存储介质。



背景技术:

大多应用均存在需要定时执行的任务,例如,一应用创建了一个任务,该任务的创建时间是0:00点,该任务的计划执行时间是1:00点,这表示该应用需要在1:00执行该任务,该任务也即为需要定时执行的任务,或者称之为定时任务。

在现有技术中,对于该种定时任务,后台服务器是在数据库中插入一条任务记录,该任务记录保存该定时任务的计划执行时间。之后,后台服务器定时轮询数据库,以查询任务记录中保存的计划执行时间,并将查询到的计划执行时间与当前时间相比对,如果当前时间大于或者等于查询到的计划执行时间,则触发对应任务的执行。对于该种通过轮询数据库来触发定时任务执行的方式,由于其存在会导致定时任务延时执行的问题,因此有必要提供一种能够提高任务执行的时效性的定时方案。



技术实现要素:

本公开实施例的一个目的是提供一种用于进行任务定时的新的技术方案。

根据本公开的第一方面,提供了一种任务的定时方法,其包括:

获取计划执行时间在目标时间段内的任务,作为目标任务;

确定预设存储空间中每一存储节点在所述目标时间段内对应的定时时间,其中,所述定时时间为所述目标时间段内的时间,不同存储节点对应不同的定时时间;

根据所述目标任务的计划执行时间和所述每一存储节点对应的定时时间,确定预加载所述目标任务的存储节点,并将所述目标任务预加载至确定的存储节点中;

基于所述确定的存储节点对应的定时时间,触发所述目标任务执行。

可选地,所述确定预设存储空间中每一存储节点在所述目标时间段内对应的定时时间,包括:

根据设定的计时步长和每一存储节点在所述预设存储空间中的序位,确定每一存储节点在所述目标时间段内对应的定时时间。

可选地,所述计时步长等于任意两个计划执行时间的差值的最小值。

可选地,所述基于所述确定的存储节点对应的定时时间,触发所述目标任务执行,包括:

监控当前时间是否到达所述确定的存储节点对应的定时时间;

在当前时间到达所述确定的存储节点对应的定时时间的情况下,触发所述目标任务执行。

可选地,所述监控当前时间是否到达所述确定的存储节点对应的定时时间,包括:

控制所述存储空间的指针在所述目标时间段的起始时刻指向位于第一序位的存储节点;

控制所述指针从位于第一序位的存储节点开始,按照设定的计时步长在存储空间中顺序移动,其中,所述计时步长为相邻序位的存储节点对应的定时时间之间的时间差;

在所述指针于当前时间指向所述确定的存储节点的情况下,确定当前时间到达所述确定的存储节点对应的定时时间。

可选地,所述获取计划执行时间在目标时间段内的任务,包括:

在所述目标时间段的开始时刻,获取计划执行时间在目标时间段内的所有任务。

可选地,所述获取计划执行时间在目标时间段内的任务,包括:

在所述目标时间段期间,检测所述数据库是否有新的任务写入;

在有新的任务写入的情况下,获取所述新的任务的计划执行时间;

在所述新的任务的计划执行时间在所述目标时间段内的情况下,获取所述新的任务。

可选地,所述方法还包括:

启动第一线程,并通过所述第一线程执行:所述获取计划执行时间在目标时间段内的任务的步骤;所述确定预设存储空间中每一存储节点在所述目标时间段内对应的定时时间的步骤;以及,所述根据所述目标任务的计划执行时间和所述每一存储节点对应的定时时间,确定预加载所述目标任务的存储节点,并将所述目标任务预加载至确定的存储节点中的步骤;

启动独立于所述第一线程的第二线程,并通过所述第二线程执行所述基于所述确定的存储节点的定时时间,触发所述目标任务执行的步骤。

可选地,所述方法在所述确定预设存储空间中每一存储节点在所述目标时间段内对应的定时时间之前,还包括:

在本地内存中创建包括多个存储节点的存储空间。

可选地,所述在本地内存中创建包括多个存储节点的存储空间,包括:

在本地内存中创建环形链表作为所述存储空间,其中,所述环形链表的一个节点对应所述存储空间的一个存储节点。

可选地,所述在本地内存中创建包括多个存储节点的存储空间,包括:

根据设定的预加载时长和设定的计时步长,确定所需的存储节点的数量,其中,所述目标时间段的时间长度等于所述预加载时长;

根据所述所需的存储节点的数量,创建包括多个所述存储节点的存储空间。

根据本公开的第二方面,还提供了一种任务的定时装置,包括:

任务获取模块,用于获取计划执行时间在目标时间段内的任务,作为目标任务;

定时配置模块,用于确定预设存储空间中每一存储节点在所述目标时间段内对应的定时时间,其中,所述定时时间为所述目标时间段内的时间,不同存储节点对应不同的定时时间;

任务加载模块,用于根据所述目标任务的计划执行时间和所述每一存储节点对应的定时时间,确定预加载所述目标任务的存储节点,并将所述目标任务预加载至确定的存储节点中;以及,

定时监控模块,用于基于所述确定的存储节点对应的定时时间,触发所述目标任务执行。

根据本公开的第三方面,还提供了一种电子设备,该电子设备包括根据本公开的第二方面所述的装置;或者,该电子设备包括存储器和处理器,所述存储器用于存储计算机可执行命令;所述处理器用于在所述可执行计算机可执行命令的控制下,实现根据本公开的第一方面所述的方法。

根据本公开的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可执行命令,所述计算机可执行命令被处理器执行时,实现根据本公开的第一方面所述的方法。

根据本公开实施例的任务的定时方法,可以将计划执行时间在目标时间段内的目标任务,预先加载至存储空间的对应存储节点中,其中,该对应存储节点在该目标时间段内的定时时间与该目标任务的计划执行时间相匹配,并根据该存储节点的定时时间,触发该任务的执行。这样,在当前时间到达该存储节点的定时时间的情况下,通过触发该存储节点中的任务执行,便可以达到按照该目标任务的计划执行时间执行该目标任务的目的,提高了任务执行的时效性。

通过以下参照附图对本公开的示例性实施例的详细描述,本公开实施例的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开实施例的原理。

图1是可以实施本公开实施例的任务的定时方法的应用系统的组成结构示意图;

图2是根据一实施例的定时方法的流程示意图;

图3是根据一实施例的存储空间的数据结构示意图;

图4是根据另一实施例的定时方法的流程示意图;

图5是根据一个实施例的定时装置的原理框图;

图6是根据一实施例的电子设备的原理框图;

图7是根据另一实施例的电子设备的原理框图。

具体实施方式

现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

<硬件配置>

图1所示的应用系统包括终端设备1000和服务器2000,该终端设备1000运行相应应用的客户端,服务器2000运行相应应用的服务端,终端设备1000与服务器2000可通过网络通信连接。该应用系统可通过本公开实施例的定时方法,对相应应用产生的需要定时执行的任务进行定时监控。

该应用系统可以通过终端设备1000接收用户的输入,并根据用户的输入创建需要定时执行的任务,及根据本公开实施例的定时方法,对该任务进行定时监控。应用系统在监控到该任务的计划执行时间到时时,将触发该任务的执行,并通过终端设备1000输出该执行结果。

本公开实施例的任务的定时方法适用于存在需要定时执行的任务的任意应用场景,而且该任务可以是根据用户操作创建的任务,也可以是系统任务,在此不做限定。

以电商应用为例,终端设备1000根据用户的结算操作生成支付订单,并创建在**时间前未完成支付便取消该支付订单的任务,服务器2000在根据本公开实施例的定时方法,监控到该任务的计划执行时间(**时间)到时时,将触发该任务的执行。服务器2000在根据该触发执行该任务时,将检测该支付订单是否已完成支付,在未完成支付时取消该支付订单,并将执行结果返回至终端设备1000。

又以提供预支服务的应用为例,终端设备1000将用户配置的定时还款信息发送至服务器,服务器2000根据该定时还款信息创建定时还款的任务。服务器2000在根据本公开实施例的方法,监控到该任务的计划执行时间(定时还款的时间)到时时,将触发该任务的执行。服务器2000在根据该触发执行完该任务后,将还款结果返回至终端设备1000。

图1中的终端设备1000可以是pc机、平板电脑、智能手机、可穿戴设备等等,在此不做限定。

如图1所示,该终端设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500和输入装置1600。处理器1100用于执行计算机程序,该计算机程序可以采用比如x86、arm、risc、mips、sse等架构的指令集编写。存储器1200例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括usb接口、网线接口等。通信装置1400例如包括网卡和/或2g/4g/5g通信模块等。显示装置1500例如是液晶显示屏。输入装置1600例如包括触摸屏、键盘、鼠标、麦克风等。

在本公开实施例中,终端设备1000的存储器1200用于存储计算机可执行命令,该计算机可执行命令用于控制该处理器1100进行操作以运行所需应用。

如图1所示,服务器2000是提供处理、数据库、通讯设施的业务点。服务器2000可以是整体式服务器,跨多计算机,计算机数据中心的分散式服务器,云服务器,或者服务器集群等。服务器可以是各种类型的,例如但不限于,网络服务器,新闻服务器,邮件服务器,消息服务器,广告服务器,文件服务器,应用服务器,交互服务器,数据库服务器,或代理服务器。在一些实施例中,每个服务器可以包括硬件,软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。

服务器2000可以包括处理器2100、存储器2200、接口装置2300和通信装置2400。处理器2100用于执行计算机程序,该计算机程序可以采用比如x86、arm、risc、mips、sse等架构的指令集编写。存储器2200例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置2300例如包括网线接口等。通信装置2400例如包括网卡和/或2g/4g/5g通信模块等等。

在本公开实施例中,服务器2000的存储器2200用于存储计算机可执行命令,该计算机可执行命令用于控制该处理器2100进行操作以实施根据本公开任意实施例的定时方法。

技术人员可以根据本公开实施例的方案设计相应的计算机程序。该计算机程序如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。

下面,参照附图描述根据本公开的各个实施例。

<方法实施例>

图2是根据一个实施例的任务的定时方法的流程示意图,本实施例的方法例如可以由图1中的服务器2000实施。

如图2所示,本实施例的任务的定时方法可以包括如下步骤s210~s240:

步骤s210,获取计划执行时间在目标时间段内的任务,作为目标任务。

本实施例中,计划执行时间也即任务的计划执行时间。例如,在**年**月**日的9:00点创建一需要在该日的11:00执行的任务,则该任务的计划执行时间是**年**月**日的11:00点。

本实施例中,目标时间段可以是根据系统设置确定的需要进行定时监控的一个时间段。

应当理解的是,本实施例的“在目标时间段内”包括目标时间段的起始时刻和结束时刻。

本实施例中,对于步骤s210中获取到的任务,服务器2000应该在该任务的计划执行时间到来之前,预先完成获取该任务的操作,以对该任务进行定时监控,进而保证该任务能够按照设定的计划执行时间被准时执行。

在一些实施例中,可以预先设置定时监控的预加载时长,并根据预加载时长和定时的起始时刻,确定目标时间段,其中,目标时间段的起始时刻为该定时的起始时刻,目标时间段的时间长度等于预加载时长。以预记载时间长度为30min为例,如果定时的起始时刻为9:00:00,则确定的目标时间段为9:00:00~9:29:59。

该预加载时长可以由工作人员根据需要设置。预加载时长越长,每次加载的数据将越多,所需的存储节点也就越多,而预加载时长越短,服务器访问数据库以获取任务的频率将越高,工作人员可以根据系统配置并兼顾以上两方面,来设置合适的预加载时长。

在一些实施例中,该预加载时长可以为15min~60min,例如为30min。

在一些实施例中,服务器2000可以在定时启动后,便按照预加载时长确定各目标时间段,其中,相邻目标时间段首尾相接,以在定时启动后对定时任务进行持续监控,直至定时结束。服务器2000可以针对每一个确定的目标时间段,执行本实施例的方法。步骤s210中的目标时间段可以是所确定的任意一个目标时间段。

假设定时启动的时间为8:00:00,预记载时间长度为30min,则8:00:00~8:29:59为第一个目标时间段,8:30:00~8:59:59为第二个时间段,依此类推,可以在定时启动后确定出每一个目标时间段。

在一些实施例中,该步骤s210中获取计划执行时间在目标时间段内的任务,可以包括如下步骤s2111:在目标时间段的起始时刻,获取计划执行时间在目标时间段内的所有任务,并将获取到的这些任务作为目标任务。

在定时任务均被写入数据库以等待执行的情况下,在步骤s2111中,可以在目标时间段的起始时刻,从数据库中获取计划执行时间在目标时间段内的所有任务,并将获取到的这些任务作为目标任务。

通过该步骤s2111,服务器1000可以在目标时间段的起始时刻,便将数据库在此时已经存在的计划执行时间在目标时间段内的所有任务,预加载至预设的存储空间中进行定时监控。这样,便可在该目标时间段期间,对存储空间中的任务进行定时监控,而无需通过轮询整个数据库来查询已经到时的任务,进而能够提高任务执行的时效性。

在一些实施例中,该步骤s210中获取计划执行时间在目标时间段内的任务,可以包括如下步骤s2121~s2123:

步骤s2121,在目标时间段期间,监测数据库是否有新的任务写入。

在目标时间段期间可以理解为当前时间在目标时间段内。

步骤s2121中,可以通过监测数据库是否发生数据写入事件,来监测数据库是否有新的任务写入。

步骤s2122,在有新的任务写入的情况下,获取该新的任务的计划执行时间。

步骤s2123,在该新的任务的计划执行时间在该目标时间段内的情况下,获取该新的任务。

步骤s2123中,在该新的任务的计划执行时间在该目标时间段内的情况下,将获取该新的任务,以将该新的任务作为目标任务记载至存储空间中进行定时监控。

根据以上步骤s2121~s2123,可以在当前时间已进入目标时间段的情况下,及时将新创建的计划执行时间属于该目标时间段的任务加载至存储空间中进行定时监控,以保证在目标时间段内才被写入数据库中的目标任务也能够被准时执行。

在一些实施例中,该步骤s210中获取计划执行时间在目标时间段内的任务,可以包括如下步骤s2131~s2134:

步骤s2131,在目标时间段的起始时刻,从数据库中获取计划执行时间在目标时间段内的所有任务,作为目标任务,之后执行步骤s2132。

步骤s2132,在目标时间段期间,监测数据库是否有新的任务写入。

步骤s2133,在有新的任务写入的情况下,获取该新的任务的计划执行时间。

步骤s2134,在该新的任务的计划执行时间在该目标时间段内的情况下,获取该新的任务作为目标任务。

步骤s220,确定预设存储空间中每一存储节点在目标时间段内对应的定时时间,其中,该定时时间为目标时间段内的时间,不同存储节点对应不同的定时时间。

步骤s220中,确定存储空间中每一存储节点在该目标时间段内对应的定时时间,可以使得存储空间中各存储节点的定时时间与目标时间段内各时间一一对应。

在一些实施例中,可以按照设定的计时步长划分目标时间段,以得到目标时间段内的各时间,或者称之为得到目标时间段内的各时间节点,其中,计时步长也即为相邻存储节点的定时时间的时间差值。例如,目标时间段为9:00:00~9:29:59,设定的计时步长为1s,则,目标时间段内各时间点包括9:00:00、9:00:01、9:00:02,……,9:29:59,一共1800个时间点,存储空间通过1800个存储节点与这1800个时间点一一对应,存储节点所对应的时间点也即为该存储节点对应的定时时间。

在这些实施例中,该步骤s220中确定预设存储空间中每一存储节点在目标时间段内对应的定时时间,可以包括步骤s2211:根据设定的计时步长和每一存储节点在预设存储空间中的序位,确定每一存储节点在目标时间段内对应的定时时间。

步骤s2211中,各存储节点在存储空间中顺序排列,不同存储节点具有不同的地址段。

例如,该存储空间可以是在内存中维护的一个链表,链表的节点也即为存储空间的存储节点,链表中节点的指针域存储有下一节点的地址,这样,根据链表中节点的指针域,便可确定每一存储节点在存储空间中的序位。

仍以目标时间段为9:00:00~9:29:59为例,参见图3所示,存储空间有1800个存储节点mn,这些存储节点mn顺序排列,第一序位p1的存储节点对应的定时时间为9:00:00,第二序位的存储节点对应的定时时间为9:00:01,第三序位的存储节点对应的定时时间为9:00:02,依此类推,最后序位p1800的存储节点对应的定时时间为8:29:59。

本实施例中,计时步长可以小于或者等于任意两个计划执行时间的差值的最小值,例如,如果任意任务的计划执行时间最高精确到1s,则该最小值即为1s,而如果任意任务的计划执行时间最高精确到0.1s,则该最小值即为0.1s,因此,该最小值也即为计划执行时间的最小时间粒度。通过设置计时步长小于或者等于任意两个计划执行时间的差值的最小值,可以使得属于该目标时间段的任意计划执行时间,都能够更为精准地匹配到相应的定时时间。在此,计时步长越小,定时越精准,但cpu消耗也将越多。

为了控制cpu消耗,在一些实施例中,计时步长可以等于任意两个计划执行时间的差值的最小值。这样,获取到任务的计划执行时间便可以与存储节点的定时时间进行精确匹配,实现更为精准的定时监控,而且还可以避免存储空间的浪费,降低cpu消耗。例如,任意两个计划执行时间的差值的最小值为1s,则计时步长可以设置为相一致的1s。又例如,任意两个计划执行时间的差值的最小值为1ms,则计时步长可以设置为相一致的1ms。

步骤s230,根据目标任务的计划执行时间和每一存储节点对应的定时时间,确定预加载该目标任务的存储节点,并将该目标任务预加载至确定的存储节点中。在步骤s230中,对于任意一个目标任务,可以将该目标任务的计划执行时间与存储节点的定时时间相匹配,进而确定预加载该目标任务的存储节点,并将该目标任务预加载至该确定的存储节点中。

步骤s230中,可以是将代表目标任务的唯一标识预加载至确定的存储节点中,也可以是将目标任务的任务数据加载至确定的存储节点中,在此不做限定。

本实施例中,一个目标任务只与一个存储节点相匹配,而一个存储节点却可以与多个目标任务相匹配。

在一些实施例中,确定预加载该目标任务的存储节点,可以包括:在存储空间中查找定时时间与该目标任务的计划执行时间相匹配的存储节点,作为预加载该目标任务的存储节点。也即,可以根据时间一致性的匹配关系,确定预加载该目标任务的存储节点。

仍以目标时间段为9:00:00~9:29:59为例,参见图3所示,假设在步骤s210获取到的四个目标任务s1、s2、s3、s4的计划执行时间都是9:00:06,存储空间中第七序位的存储节点对应的定时时间为9:00:06,则在步骤s230中,可以将这四个目标任务s1、s2、s3、s4预加载至该第六序位的存储节点中。又假设在步骤s210获取到的三个目标任务s5、s6、s7的计划执行时间都是9:29:50,则在步骤s230中,可以将这三个目标任务s5、s6、s7预加载至倒数第十个存储节点中。

步骤s240,根据该确定的存储节点对应的定时时间,触发该目标任务执行。

本实施例中,由于存储空间中每一存储节点均具有各自的定时时间,因此,该步骤s240中,对于任意目标任务而言,根据针对该目标任务确定的存储节点对应的定时时间,便可确定当前时间是否到达存放在该存储节点中的该目标任务的计划执行时间,这样,通过触发已到达定时时间的存储节点中目标任务的执行,便可按照目标任务的计划执行时间准时执行相应的目标任务。

在一些实施例中,该步骤s240中根据该确定的存储节点对应的定时时间,触发该目标任务执行,可以包括步骤s2411~s2412:

步骤s2411,监控当前时间是否到达该确定的存储节点对应的定时时间。

对于任意目标任务,可以通过监控当前时间是否到达针对该目标任务确定的存储节点对应的定时时间,来确定当前时间是否到达该目标任务的计划执行时间,以实现目标任务的及时触发。也就是说,根据该步骤s2411,可以通过监控存储空间中存储节点对应的定时时间是否到时,并触发到时的存储节点中存放的目标任务执行,实现目标任务的定时执行。

在一些实施例中,该步骤s2411中监控当前时间是否到达该确定的存储节点对应的定时时间,可以包括如下步骤s2411-1~s2411-3:

步骤s2411-1,控制存储空间的指针在目标时间段的起始时刻指向位于第一序位的存储节点。

参见图3所示,根据步骤s2411-1,指针在目标时间段的起始时刻指向位于第一序位p1的存储节点。

步骤s2412-2,控制指针从位于第一序位的存储节点开始,按照设定的计时步长在存储空间中顺序移动。

该指针可以按照计时步长从位于第一序位的存储节点开始在存储空间中顺序移动,以实现计时,其中,任意两个相邻序位的存储节点对应的定时时间之间的时间差是相同的,而计时步长则为相邻序位的存储节点对应的定时时间之间的时间差。指针每间隔一个计时步长移动一次,即指针在每个存储节点上的停留时长等于该计时步长,其中,指针在目标时间段的起始时刻指向第一序位的存储节点,并间隔一个计时步长移动至第二序位的存储节点,再间隔一个计时步长从第二序位的存储节点移动至第三序位的存储节点,直至移动至最后序位的存储节点,完成该目标时间段的定时监控。这样,对于存储空间中的任意存储节点,在指针指向该存储节点的情况下,则代表当前时间到达该存储节点的定时时间,或者称之为该存储节点的定时时间到时。

在这些实施例中,该存储空间可以是一个环形链表,这样,在定时启动后,只需控制指针按照计时频率在存储空间移动,便可实现对首尾相接的各目标时间段的定时监控。

在图3所示存储空间是一个环形链表的情况下,即,最后序位的存储节点的指针域存储第一序位的存储节点的地址。假设定时在8:00:00开启,预记载时间长度为30min,计时步长为1s,存储空间具有1800个存储节点,则在第一个目标时间段8:00:00~8:29:59,指针从第一序位的存储节点(对应8:00:00的定时时间)开始,按照计时步长1s在存储空间中顺序移动,将在8:29:59移动至最后序位的存储节点(对应8:29:59的定时时间),并在8:30:00重新回到第一序位的存储节点,此时进入第二目标时间段8:30:00~8:59:59,依此类推,通过控制指针按照计时步长在环形链表中进行移动计时,便可在定时开启后,在每个所进入的每个目标时间段中实现任务的定时监控,直至定时结束。

在步骤s2411-3中,在该指针于当前时间指向该确定的存储节点的情况下,确定当前时间到达该确定的存储节点对应的定时时间。

根据该步骤s2411-3,可以根据指针所指向的存储节点,确定当前时间是否到达存储空间中任意存储节点对应的定时时间。

在以上步骤s2411-1~s2411-3中,由于存储空间本身即具有指针属性,因此,通过控制指针按照计时频率在存储空间中移动来实现计时,进而确定存储空间中存储节点的定时时间是否到时,可以有效降低实现任务定时的资源占用。

在另外的实施例中,也可以为每一存储节点配置独立的定时触发器来监控当前时间是否到达确定的存储节点对应的定时时间,在此不做限定。

步骤s2412,在当前时间到达该确定的存储节点对应的定时时间的情况下,触发该目标任务执行。

本实施例中,在存储节点中的目标任务被触发执行后,便可以从存储空间中清除该目标任务。例如,这可以是在该目标时间段结束时,清空存储空间存储的数据,以为加载计划执行时间在下一目标时间段内的目标任务做准备。

根据以上步骤s210~s240可知,通过本实施例的任务的定时方法,可以将计划执行时间在目标时间段内的目标任务,预先加载至具有定时属性的存储空间的对应存储节点中,其中,该对应存储节点的定时时间与所加载的目标任务的计划执行时间相匹配,并根据该存储节点的定时时间,来触发所加载的目标任务执行,这样,在当前时间达到一存储节点的定时时间时,触发该存储节点中的目标任务执行,便可以使得该目标任务能够在计划执行时间被准时执行,提高了任务执行的时效性。

为了提高服务器2000实施方法中各步骤的时效性,在一些实施例中,该方法还可以包括如下步骤s2011~s2012:

步骤s2011,启动第一线程,并通过该第一线程执行任务的预加载步骤,该任务预加载步骤包括:获取计划执行时间在目标时间段内的任务的步骤s210;确定预设存储空间中每一存储节点在目标时间段内对应的定时时间的步骤s220;以及,根据目标任务的计划执行时间和每一存储节点对应的定时时间,确定预加载该目标任务的存储节点,并将该目标任务预加载至确定的存储节点中的步骤s230。

以预加载时长为30min为例,服务器2000在定时启动时,可以启动第一线程,并通过第一线程每隔30min,执行一次预加载步骤。

步骤s2012,启动独立于第一线程的第二线程,并通过第二线程执行基于确定的存储节点对应的定时时间,触发目标任务执行的步骤s240。

在步骤s2012中,服务器2000在定时启动时,可以启动第二线程,并通过第二线程控制指针按照计时步长在存储空间中移动,以监控当前时间是否到达存储空间中存储节点对应的定时时间。

根据步骤s2011和s2012可知,通过第一线程和第二线程分别执行任务的预加载步骤和定时监控步骤,可以使得两个步骤并行进行,进而保证预加载步骤和定时监控步骤的时效性。

在一些实施例中,该方法在以上确定预设存储空间中每一存储节点在目标时间段内对应的定时时间s220之前,例如,在以上获取计划执行时间在目标时间段内的任务的步骤s210之前,还可以包括创建该存储空间的步骤。

创建该存储空间的步骤可以包括:在本地内存中创建包括多个存储节点的存储空间。

本地内存也即为服务器2000的内存。在本地内存中创建该存储空间,可以使得服务器2000能够在存储节点的定时时间到时时,直接根据到时触发执行其中的目标任务。

在一些实施例中,在本地内存中创建包括多个存储节点的存储空间,可以包括:在本地内存中创建环形链表作为该存储空间,其中,环形链表的一个节点对应存储空间的一个存储节点。

通过创建环形链表,方便通过指针移动进行多个目标时间段的连续的定时监控。

在另外的实施例中,该存储空间也可以是单向链表。该存储空间还可是列表等具有按序排列的多个存储节点的数据结构的任意存储空间,在此不做限定。

在一些实施例中,在本地内存中创建包括多个存储节点的存储空间,可以包括s2021~s2022:

步骤s2021,根据设定的预加载时长和设定的计时步长,确定所需的存储节点的数量。

该预加载时长等于以上目标时间段的时间长度。

该步骤s2021中,所需的存储节点的数量也即为预加载时长包含的计时步长的数量。

步骤s2022,根据所需的存储节点的数量,创建包括多个存储节点的存储空间。

根据该步骤s2022可以创建得到包含所需数量的存储节点的存储空间。

仍以图3所示的存储空间为例,例如,预加载时长为30min,计时步长为1s,则需要1800个存储节点,这样,可以创建一个包含1800个存储节点的存储空间。

根据以上步骤s2021~s2022,可以使得创建得到的存储空间具有的存储节点的数量刚好与预加载时长和计时步长相匹配,提高存储空间的利用率。

另外,根据以上步骤s2021~s2022创建环形的存储空间,例如环形链表,可以在定时开启后,对划分得到的各目标时间段进行连续的定时监控,提高定时监控效率。

图4示出了根据另一实施例的任务的定时方法的流程示意图。该方法可以由图1中的服务器2000实施。

如图4所示,该实施例的方法可以包括如下步骤s410~s460:

步骤s410,根据预加载时长和计时步长,在内存中创建一个环形链表。

在该步骤s410中,所创建的环形链表的节点数量等于预加载时长包括的计时步长的数量。

以图3为例,预加载时长为30min,计时步长为1s,则所创建的环形链表包含1800个存储节点。

步骤s420,检测定时启动事件,在检测到定时启动事件的情况下,执行步骤s430,在未检测到定时启动命令的情况下,继续执行步骤s420。

步骤s430,根据预加载时长,确定当前进入的目标时间段,并针对该目标时间段,确定环形链表中每一存储节点在该目标时间段内对应的定时时间,之后执行步骤s440及步骤s460。

步骤s440,在目标时间段的起始时刻,从数据库获取计划执行时间在该目标时间段内的任务作为目标任务,并根据目标任务的计划执行时间与存储节点的定时时间之间的对应关系,确定预加载该目标任务的存储节点,并将该目标任务预加载至确定的存储节点中,之后执行步骤s450。

步骤s450,在目标时间段期间,检测数据库是否有新的任务写入,在有新的任务写入、且该新的任务的计划执行时间在该目标时间段内的情况下,获取该新的任务作为目标任务,并将该新的任务预加载至确定的存储节点中,直至当前进入的目标时间段结束,回到步骤s430。

回到步骤s430后,将进入下一个目标时间段,并进行下一个目标时间段的定时监控。

步骤s460,控制在目标时间段的起始时刻指向位于第一序位的存储节点,并控制指针从第一序位的存储节点开始,按照计时步长在环形链表中顺序移动,以及,触发指针所指向的存储节点中的目标任务执行,直至当前进入的目标时间段结束,回到步骤s430。

步骤s460中,在目标任务被触发执行后,便从环形链表中清除该目标任务。例如,这可以是在当前进入的目标时间段结束时,清空环形链表中各存储节点的数据域,以准备加载计划执行时间在所要进入的下一目标时间段内的目标任务。

在以上步骤s410~s460中,服务器2000在检测到定时结束事件的情况下,将结束当前执行的步骤,进而结束根据步骤s410~s460的定时操作。

<装置实施例>

图5示出了根据另一实施例的任务的定时装置的方框原理图。该定位装置500可以是位于服务器2000一侧的装置。

如图5所示,该定时装置500可以包括任务获取模块510、定时配置模块520、任务加载模块530和定时监控模块540。

该任务获取模块510用于获取计划执行时间在目标时间段内的任务,作为目标任务。

该定时配置模块520用于确定预设存储空间中每一存储节点在目标时间段内对应的定时时间,其中,定时时间为目标时间段内的时间,不同存储节点对应不同的定时时间。

该任务加载模块530用于根据所述目标任务的计划执行时间和所述每一存储节点对应的定时时间,确定预加载所述目标任务的存储节点,并将所述目标任务预加载至确定的存储节点中。

该定时监控模块540用于基于所述确定的存储节点对应的定时时间,触发所述目标任务执行。

在一些实施例中,该定时配置模块520在确定预设存储空间中每一存储节点在所述目标时间段内对应的定时时间时,可以用于:根据设定的计时步长和每一存储节点在所述预设存储空间中的序位,确定每一存储节点在所述目标时间段内对应的定时时间。

在一些实施例中,该计时步长等于任意两个计划执行时间的差值的最小值。

在一些实施例中,该定时监控模块540在基于所述确定的存储节点对应的定时时间,触发所述目标任务执行时,可以用于:监控当前时间是否到达所述确定的存储节点对应的定时时间;以及,在当前时间到达所述确定的存储节点对应的定时时间的情况下,触发所述目标任务执行。

在一些实施例中,该定时监控模块540在监控当前时间是否到达所述确定的存储节点对应的定时时间时,可以用于:控制所述存储空间的指针在所述目标时间段的起始时刻指向位于第一序位的存储节点;控制所述指针从位于第一序位的存储节点开始,按照设定的计时步长在存储空间中顺序移动,其中,所述计时步长为相邻序位的存储节点对应的定时时间之间的时间差;以及,在所述指针于当前时间指向所述确定的存储节点的情况下,确定当前时间到达所述确定的存储节点对应的定时时间。

在一些实施例中,该任务获取模块510在获取计划执行时间在目标时间段内的任务时,可以用于:在目标时间段的开始时刻,获取计划执行时间在目标时间段内的所有任务。

在一些实施例中,该任务获取模块510在获取计划执行时间在目标时间段内的任务时,可以用于:在目标时间段期间,检测数据库是否有新的任务写入;在有新的任务写入的情况下,获取新的任务的计划执行时间;在新的任务的计划执行时间在所述目标时间段内的情况下,获取该新的任务。

在一些实施例中,该定时装置500还包括调度模块,该调度模块用于启动第一线程,并调度以上任务获取模块510通过第一线程执行获取计划执行时间在目标时间段内的任务的步骤,调度以上定时配置模块520通过第一线程执行所述确定预设存储空间中每一存储节点在所述目标时间段内对应的定时时间的步骤;以及,调度以上任务加载模块530执行所述根据所述目标任务的计划执行时间和所述每一存储节点对应的定时时间,确定预加载所述目标任务的存储节点,并将所述目标任务预加载至确定的存储节点中的步骤。该调度模块还用于启动独立于所述第一线程的第二线程,并调度定时监控模块540通过第二线程执行基于所述确定的存储节点对应的定时时间,触发所述目标任务执行的步骤。

在一些实施例中,该定时装置500还包括创建模块,该创建模块用于:在定时配置模块5208确定预设存储空间中每一存储节点在目标时间段内对应的定时时间之前,在本地内存中创建包括多个存储节点的存储空间。

在一些实施例中,该创建模块在本地内存中创建包括多个存储节点的存储空间时,可以用于:在本地内存中创建环形链表作为所述存储空间,其中,所述环形链表的一个节点对应所述存储空间的一个存储节点。

在一些实施例中,该创建模块在本地内存中创建包括多个存储节点的存储空间时,可以用于:根据设定的预加载时长和设定的计时步长,确定所需的存储节点的数量,其中,所述目标时间段的时间长度等于所述预加载时长;以及,根据所述所需的存储节点的数量,创建包括多个存储节点的存储空间。

<设备实施例>

在一些实施例中,如图6所示,该电子设备600可以包括以上定时装置400。

在另一些实施例中,如图7所示,该电子设备700包括处理器710和存储器720,该存储器720用于存储可执行的计算机可执行命令,该处理器710用于根据该计算机可执行命令的控制,执行如以上任意方法实施例的定时方法。

该电子设备600或者700可以是服务器,例如是图1中的服务器2000,也可以是需要执行定时任务的其他设备,在此不做限定。

以上定时装置500的各模块可以由本实施例中的处理器710执行存储器720存储的计算机可执行命令实现,也可以通过其他电路结构实现,在此不做限定。

<存储介质实施例>

本公开还提供了一种计算机可读存储介质,其存储有计算机可执行命令,所述计算机可执行命令被处理器执行时,实现根据本公开任意方法实施例的定时方法。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1