一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于固定时间间隔的任务执行方法、设备及介质与流程

2022-10-06 23:44:00 来源:中国专利 TAG:


1.本技术涉及任务部署领域,尤其涉及一种基于固定时间间隔的任务执行方法、设备及介质。


背景技术:

2.现有的任务分布式部署最典型的做法有数据库锁、redis锁等,但在分布式部署时,难以保证所有的节点都能有相同的时间间隔来执行任务,以使在整个服务中,因为每个节点的启动时间不一样,会造成其间隔时间的执行时间点不同,难以做到连贯有序执行任务,不利于稳定的时间间隔同步到所有的节点。
3.并且在分布式任务部署时,容易造成对同一个任务进行多节点处理,以及难以控制同一时间只有一个节点在执行任务,造成资源的浪费,产生错误的执行结果。


技术实现要素:

4.本技术实施例提供了一种基于固定时间间隔的任务执行方法、设备及介质,用于解决如下技术问题:现有的分布式部署任务难以将稳定的固定时间间隔同步到所有任务节点,以使同一时间只有一个任务节点在执行任务。
5.本技术实施例采用下述技术方案:一方面,本技术实施例提供了一种基于固定时间间隔的任务执行方法,所述方法包括:基于预设启动时间间隔,启动若干任务节点服务器;对所述若干任务节点服务器进行首次任务执行判定;判定结束后,根据预设任务执行周期,确定第一次定时启动时间;在到达所述第一次定时启动时间后,通过所述若干任务节点服务器进行任务抢锁,并通过抢锁成功的任务节点服务器执行当前任务;根据所述第一次定时启动时间以及所述预设任务执行周期,推算第二次定时启动时间;在到达所述第二次定时启动时间后,再次进行任务抢锁,并通过抢锁成功的任务节点服务器执行对应的任务,以此进行循环。
6.本技术实施例通过固定的时间间隔来执行任务,以使所有任务节点服务器在同一时间只有一个节点执行任务,同时能够以稳定的时间间隔同步到所有的任务节点服务器,减少了因为每个节点的启动时间不一样,造成其间隔时间的执行时间点不同的问题,实现了连贯有序执行任务,减少了资源的浪费,提高了分布式部署任务的处理效率。
7.在一种可行的实施方式中,基于预设启动时间间隔,启动若干任务节点服务器,具体包括:将所述预设任务执行周期按照所述预设启动时间间隔进行等分,得到若干个等分时间点;将所述若干任务节点服务器平均分配到所述若干个等分时间点;其中,每个等分时间点对应多个任务节点服务器;根据所述每个等分时间点的时间顺序,依次启动所述每个等分时间点对应的多个任务节点服务器。
8.本技术实施例通过将时间间隔进行预先分割处理,然后再将每一段的时间间隔进行细化等分处理,将若干任务节点服务器平均分配到若干等分时间点,让每个等分时间点都有任务节点服务器启动来进行处理任务,保障了任务处理的有序进行。
9.在一种可行的实施方式中,对所述若干任务节点服务器进行首次任务执行判定,具体包括:查询当前时间节点对应的redis中,是否记载了下次定时启动时间;若是,则确定所述若干任务节点服务器不是第一次执行任务;若否,则确定所述若干任务节点服务器是第一次执行任务。
10.在一种可行的实施方式中,判定结束后,根据预设任务执行周期,确定第一次定时启动时间,具体包括:若所述若干任务节点服务器是第一次执行任务,则在当前时间节点的所述若干任务节点服务器中选择一个进行加锁,并将加锁的任务节点服务器的节点信息与第一次定时启动时间写入redis中;其中,所述加锁是指将选择的任务节点服务器作为当前执行任务的节点,写入所述redis中,并设置过期时间;通过加锁的所述任务节点服务器进行任务执行操作;在所述当前时间节点的基础上,加上所述预设任务执行周期,得到所述第一次定时启动时间。
11.在一种可行的实施方式中,若所述若干任务节点服务器不是第一次执行任务,则将所述任务节点服务器重新根据预设任务执行周期进行定时操作,并根据所述redis中记载的当前定时启动时间进行抢锁操作,得到抢锁结果;其中,所述抢锁结果包括抢锁成功以及抢锁失败;其中,所述抢锁成功是指所述redis中没有记录正在执行任务的任务节点服务器,所述抢锁失败是指所述redis中记录了正在执行任务的任务节点服务器。
12.在一种可行的实施方式中,若所述抢锁结果为所述抢锁成功,则将所述抢锁成功的任务节点服务器的所述节点信息记录在所述redis中;将所述若干任务节点服务器的第一次定时启动时间记录在所述redis中;若所述抢锁结果为所述抢锁失败,则将所述抢锁失败的若干任务节点服务器的第一次定时启动时间记录在所述redis中。
13.本技术实施例,通过将抢锁成功的任务节点服务器的节点信息记录在所述redis中,保证了在同一时间点下,只有一个任务节点服务器在执行改任务,防止了多个任务节点服务器同时处理一个任务,造成资源浪费和结果错误。
14.在一种可行的实施方式中,根据所述第一次定时启动时间以及所述预设任务执行周期,推算第二次定时启动时间,具体包括:判断当前时刻是否达到了redis中记载的所述第一次定时启动时间;若是,则启动所述第一次定时启动时间对应的多个任务节点服务器,进行任务抢锁操作,得到抢锁结果;其中,所述抢锁结果包括抢锁成功以及抢锁失败;将所述抢锁成功的任务节服务器的节点信息记录在所述redis中;在所述第一次定时启动时间的基础上,加上所述预设任务执行周期,得到所述第二次定时启动时间,并将所述抢锁成功的任务节服务器的第二次定时启动时间记录在所述redis中;根据所述预设任务执行周期,将所述抢锁失败的所述若干任务节点服务器进行重新定时,并将所述若干任务节点服务器的第二次定时启动时间记录在所述redis中。
15.在一种可行的实施方式中,在到达所述第二次定时启动时间后,再次进行任务抢锁,并通过抢锁成功的任务节点服务器执行对应的任务,以此进行循环,具体包括:若到达所述第二次定时启动时间,则启动所述第二次定时启动时间对应的多个任务节点服务器,并进行所述第二次定时启动时间下的任务抢锁操作,得到所述第二次定时启动时间下的抢锁结果;根据所述抢锁结果以及预设任务执行周期,推算所述多个任务节点服务器的第三次定时启动时间并记录在redis中,并将抢锁成功的任务节点服务器的节点信息记录在redis中,以此进行循环。
16.第二方面,本技术实施例还提供了一种基于固定时间间隔的任务执行设备,所述设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有能够被所述至少一个处理器执行的指令,以使所述至少一个处理器能够执行上述任一实施方式所述的一种基于固定时间间隔的任务执行方法。
17.第三方面,本技术实施例还提供了一种非易失性计算机存储介质,其特征在于,所述存储介质为非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有至少一个程序,每个所述程序包括指令,所述指令当被终端执行时,使所述终端执行上述任一实施方式所述的一种基于固定时间间隔的任务执行方法。
18.本技术实施例提供了一种基于固定时间间隔的任务执行方法、设备及介质,通过预设固定的时间间隔,来让所有任务节点服务器在同一时间只有一个节点执行任务,同时能够以稳定的时间间隔同步到所有的节点,减少了因为每个节点的启动时间不一样,造成其间隔时间的执行时间点不同的问题,实现了连贯有序执行任务,减少了资源的浪费,提高了分布式部署任务的处理效率。
附图说明
19.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1为本技术实施例提供的一种分布式固定时间间隔的任务方法流程图;图2为本技术实施例提供的一种时间间隔等分示意图;图3为本技术实施例提供的一种分布式固定时间间隔的任务设备的结构示意图。
具体实施方式
20.为了使本技术领域的人员更好地理解本技术中的技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
21.本技术实施例提供了一种基于固定时间间隔的任务执行方法,如图1所示,基于固定时间间隔的任务执行方法具体包括步骤101-105:步骤101、基于预设时间间隔,启动若干任务节点服务器。
22.具体地,将预设任务执行周期按照预设启动时间间隔进行等分,得到若干个等分时间点。将若干任务节点服务器平均分配到若干等分时间点;其中,每个等分时间点对应多个任务节点服务器。根据每个等分时间点的时间顺序,依次启动每个等分时间点对应的多个任务节点服务器。
23.在一个实施例中,图2为本技术实施例提供的一种时间间隔等分示意图,如图2所示,在10:00开始根据预设任务执行周期进行启动时间间隔的划分,并按照10分钟为任务执行周期,划分为1、2、3、4...个时间间隔,即,10:10、10:20、10:30等等,然后在区间1内,将时
间按照一分钟为标准进行均等分,即,10:01、10:02等等,然后在每个等分时间点上分配多个个任务节点服务器,分别在达到对应的时间点上依次启动每个等分时间点上的多个任务节点服务器。
24.步骤102、对若干任务节点服务器进行首次任务执行判定。
25.具体地,查询当前时间节点对应的redis中,是否记载了下次定时启动时间。若是,则确定若干任务节点服务器不是第一次执行任务。若否,则确定若干任务节点服务器是第一次执行任务。
26.在一个实施例中,在任务节点服务器启动后,判断刚启动任务节点服务器是否在redis中记载了下次定时启动时间,即,对若干任务节点服务器是不是第一次执行任务,如图2所示,在10:00-10:10之间进行第一次启动,然后对区间1内的任务节点服务器相关联的redis中,是否该任务节点服务器在10:10-10:20区间2中,存在对应的定时启动时间进行判定,区分出是第一次执行任务的任务节点服务器。
27.步骤103、判定结束后,根据预设任务执行周期,确定第一次定时启动时间。
28.具体地,若干任务节点服务器是第一次执行任务,则在当前时间节点的若干任务节点服务器中选择一个进行加锁,并将加锁的任务节点服务器的节点信息与第一次定时启动时间写入redis中。其中,加锁是指将选择的任务节点服务器作为当前执行任务的节点,写入redis中,并设置过期时间。通过加锁的任务节点服务器进行任务执行操作。在当前时间节点的基础上,加上预设任务执行周期,得到第一次定时启动时间。
29.在一个实施例中,如图2所示,当若干任务节点服务器是第一次执行任务时,在区间1的10:01处,若干任务节点服务器中选择一个进行加锁操作,并将该任务节点服务器的节点信息写入redis中,该节点信息包括加锁成功的是时间点以及对应的任务节点服务器的编号信息,并将下次启动时间,即第一次定时启动时间再次写入redis中,然后执行定时操作。其中,下次启动时间是在当前加锁操作的时间上再加上预设的任务执行周期(10分钟),在10:11处再次进行启动。
30.若干任务节点服务器不是第一次执行任务,则将任务节点服务器重新根据预设任务执行周期进行定时操作,并根据redis中记载的当前定时启动时间进行抢锁操作,得到抢锁结果。其中,抢锁结果包括抢锁成功以及抢锁失败。其中,抢锁成功是指redis中没有记录正在执行任务的任务节点服务器,抢锁失败是指redis中记录了正在执行任务的任务节点服务器。
31.在一个实施例中,当任务节点服务器不是第一次执行任务时,且已经过了该任务节点服务器的当前启动时间,任务节点服务器按照的redis中存在下次启动时间,进行启动并抢锁,得到抢锁结果。如图2所示,在区间1中的若干任务节点服务器存在不是第一次执行任务,则不会与第一次执行任务的任务接节点服务器进行当前区间内的抢锁,则会继续进行定时操作,等到区间2对应的时间点到达时,再进行启动,然后进行抢锁操作等。
32.若抢锁结果为抢锁成功,则将抢锁成功的任务节点服务器的节点信息记录在redis中;将若干任务节点服务器的第一次定时启动时间记录在redis中。若抢锁结果为抢锁失败,则将抢锁失败的若干任务节点服务器的第一次定时启动时间记录在redis中。
33.在一个实施例中,在进行抢锁操作的时候,会有成功和失败两种结果,对于某一时间的多个任务节点服务器会进行同时抢锁操作,当有一个任务节点服务器抢锁成功时,将
该任务节点服务器的节点信息记录在关联的redis中,并将该任务节点服务器的下次启动时间,即,第一次定时启动时间记录在redis中,其余抢锁失败的任务节点服务器则只会将其下次启动时间,即,第一次定时启动时间记录在redis中。
34.在一个实施例中,如图2所示,在10:02时,进行了多个服务器的抢锁操作,当一个任务节点服务器抢锁成功,就将该任务节点服务器在10:02的节点信息在redis进行记录,并将下次启动时间,即10:12记录在redis中,而在10:02的抢锁失败的多个任务节点服务器,只将其的下次启动时间,即,10:12记录在redis中。
35.步骤104、在到达第一次定时启动时间后,通过若干任务节点服务器进行任务抢锁,并通过抢锁成功的任务节点服务器执行当前任务。
36.在一个实施例中,如图2所示,在第一次定时启动时间到达后,将区间2中每个等分时间,即10:11、10:12、10:13等等的多个任务节点服务器进行抢锁判断、加锁操作、在redis中记录、任务执行以及下一次启动定时等等,每个区间的等分时间都是一一对应着多个相容的任务节点服务器,保障了每个时间点上都有若干个任务节点服务器能够进行任务的处理。
37.步骤105、根据第一次定时启动时间以及预设任务执行周期,推算第二次定时启动时间。在到达第二次定时启动时间后,再次进行任务抢锁,并通过抢锁成功的任务节点服务器执行对应的任务,以此进行循环。
38.具体地,判断当前时刻是否达到了redis中记载的第一次定时启动时间;若是,则启动第一次定时启动时间对应的多个任务节点服务器,进行任务抢锁操作,得到抢锁结果。其中,抢锁结果包括抢锁成功以及抢锁失败。将抢锁成功的任务节服务器的节点信息记录在redis中。在第一次定时启动时间的基础上,加上预设任务执行周期,得到第二次定时启动时间,并将抢锁成功的任务节服务器的第二次定时启动时间记录在redis中。根据预设任务执行周期,将抢锁失败的若干任务节点服务器进行重新定时,并将若干任务节点服务器的第二次定时启动时间记录在redis中。
39.进一步地,若到达第二次定时启动时间,则启动第二次定时启动时间对应的多个任务节点服务器,并进行第二次定时启动时间下的任务抢锁操作,得到第二次定时启动时间下的抢锁结果。根据抢锁结果以及预设任务执行周期,推算多个任务节点服务器的第三次定时启动时间并记录在redis中,并将抢锁成功的任务节点服务器的节点信息记录在redis中,以此进行循环。
40.在一个实施例中,如图2所示,在区间2中第一次定时启动时间完成后,会根据预设任务执行周期(10分钟),进行抢锁、redis记录等一系列操作后,得到区间3中的第二次定时启动时间,然后在区间3中完成相应的抢锁、redis记录等一系列操作后,得到区间4中的第三次定时启动时间,如此一直持续循环下去,一直到根据实际情况关闭任务节点服务器为止。
41.另外,本技术实施例还提供了一种基于固定时间间隔的任务执行设备,如图3所示,分布式固定时间间隔的任务设备300具体包括:至少一个处理器301,以及与至少一个处理器301通信连接的存储器302;其中,存储器302存储有能够被至少一个处理器301执行的指令,以使至少一个处理器301能够执行:基于预设启动时间间隔,启动若干任务节点服务器;对若干任务节点服务器进行
首次任务执行判定;判定结束后,根据预设任务执行周期,确定第一次定时启动时间;在到达第一次定时启动时间后,通过若干任务节点服务器进行任务抢锁,并通过抢锁成功的任务节点服务器执行当前任务;根据第一次定时启动时间以及预设任务执行周期,推算第二次定时启动时间;在到达第二次定时启动时间后,再次进行任务抢锁,并通过抢锁成功的任务节点服务器执行对应的任务,以此进行循环。
42.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
43.本技术实施例提供了一种基于固定时间间隔的任务执行方法、设备及介质,通过预设固定的时间间隔,来让所有任务节点服务器在同一时间只有一个节点执行任务,同时能够以稳定的时间间隔同步到所有的节点,减少了因为每个节点的启动时间不一样,造成其间隔时间的执行时间点不同的问题,实现了连贯有序执行任务,减少了资源的浪费,提高了分布式部署任务的处理效率。
44.本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
45.上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
46.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术的实施例可以有各种更改和变化。凡在本技术实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献