CN112817717B - 一种定时任务的调度方法及装置 - Google Patents
一种定时任务的调度方法及装置 Download PDFInfo
- Publication number
- CN112817717B CN112817717B CN202110119609.0A CN202110119609A CN112817717B CN 112817717 B CN112817717 B CN 112817717B CN 202110119609 A CN202110119609 A CN 202110119609A CN 112817717 B CN112817717 B CN 112817717B
- Authority
- CN
- China
- Prior art keywords
- micro
- timing task
- time
- executed
- service
- 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
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
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/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本说明书提供一种定时任务的调度方法及装置,在该定时任务的调度方法中,可以支持多个不同的微服务实例之间的定时任务,通过获取缓存中记录的时间信息,从而通过该事件信息获取到之前是否有其他的微服务实例执行过该定时任务,通过类似于“抢占”的方式执行定时任务。采用无状态的微服务系统架构多个微服务实例之间相互配合,多个微服务实例均可以执行定时任务,降低了定时任务执行时的性能瓶颈,并且采用无状态的微服务系统便于后续系统的扩容。
Description
技术领域
本说明书涉及通信技术领域,尤其涉及一种定时任务的调度方法及装置。
背景技术
在产品运行过程中,我们常会有定时任务的需求,常见如定时备份、定时监控等。定时任务一般有两种:
一种方式是,在固定的时间点,如每天的12:00执行;
还有一种方式是,以固定的频率执行,如每间隔1个小时执行。
在集中式单系统上,定时任务的控制比较简单,各种编程语言都有比较成熟的接口可以实现,都是在单一进程和系统中完成固定时间点或者固定频率的任务。但是微服务环境下,定时任务和集中式环境相比有如下几个难点:
微服务环境下,为了应用的不间断服务,应用一般是多实例运行的。定时任务通常我们也只会希望在多实例中的其中一个实例上执行,在保证只有一个实例上执行的前提下,当微服务实例发生故障,我们会希望另一个微服务实例能够接过故障微服务实例,继续执行定时任务。
在微服务实例超过三个的时候,当承载定时任务的微服务实例故障,需要一个算法从剩余存活的多个微服务实例中选择一个来接替故障微服务实例承载定时任务。
相关技术中,在采用有状态微服务下,如果给微服务创建主备集群,依靠集群的主备关系来实现定时任务的管理。这里的有状态指的是集群中微服务实例存在身份状态,即要么是Master(主身份),要么Slave(备身份)。图1示出了一种三个实例的微服务架构下,定时任务执行的示意图,当master身份的微服务故障后,集群会发生主备倒换,新的Master身份的微服务实例会接管定时任务的执行权,但是该方案最大的缺陷是只能给有状态的主备集群微服务使用,对于无状态、多主集群等场景不适用。
发明内容
为克服相关技术中存在的问题,本说明书提供了一种定时任务的调度方法及装置。
根据本说明书实施例的第一方面,提供一种定时任务的调度方法,所述方法包括:
所述微服务实例在到达定时任务的执行时间时,获取缓存单元中记录的时间信息,所述时间信息为执行定时任务的微服务实例记录的;
根据获取到的时间信息与所述微服务实例本次待执行的定时任务对应的执行时间确定所述本次待执行的定时任务是否有其他微服务实例执行过;
如果所述微服务实例确定不存在其他微服务实例执行过所述本次待执行的定时任务,则向所述缓存单元中写入本次待执行的定时任务对应的执行时间,并由所述微服务实例执行本次待执行的定时任务;
在所述定时任务为固定频率执行定时任务的情况下,所述方法还包括:
所述微服务实例读取本次待执行的定时任务对应的执行时间;判断所述执行时间与所述缓存中记录的时间信息之差是否大于等于定时任务的执行周期,如果小于所述执行周期,则所述微服务实例将本地存储的下一周期的执行时间修改为缓存记录的时间信息加上执行周期。
可选的,如果所述微服务实例确定存在其他微服务实例执行过所述本次待执行的定时任务,则不执行本次待执行的定时任务。
可选的,所述微服务实例确定存在其他微服务实例执行过所述本次待执行的定时任务,包括:
所述微服务实例读取本地存储的本次待执行的定时任务对应的执行时间;判断所述执行时间是否与缓存单元中记录的时间信息相同,如果相同,则确定存在其他微服务实例执行过所述本次待执行的定时任务。
根据本说明书实施例的第二方面,提供一种定时任务的调度装置,包括:缓存单元、判断单元、任务执行单元;
缓存单元,用于在到达定时任务的执行时间时,获取缓存单元中记录的时间信息,所述时间信息为执行定时任务的微服务实例记录的;
判断单元,用于根据获取到的时间信息与本次待执行定时任务的所述微服务实例对应的执行时间确定本次待执行的定时任务是否有其他微服务实例执行过;
如果判断单元确定不存在其他微服务实例执行过本次待执行的定时任务,则向所述缓存单元中写入本次待执行的定时任务对应的执行时间,并由任务执行单元执行本次待执行的定时任务;
所述装置还包括获取单元,用于在所述定时任务为固定频率执行定时任务的情况下,读取本次待执行的定时任务对应的执行时间;判断单元用于判断所述执行时间与所述缓存单元中记录的时间信息之差是否大于等于定时任务的执行周期,如果小于所述执行周期,则所述微服务实例将本地存储的下一周期的执行时间修改为缓存记录的时间信息加上执行周期。
可选的,如果所述判断单元确定存在其他微服务实例执行过本次待执行的定时任务,则所述任务执行单元不执行本次待执行的定时任务。
可选的,所述装置还包括:获取单元用于读取本地存储的本次待执行的定时任务对应的执行时间;判断单元判断所述执行时间是否与缓存单元中记录的时间信息相同,如果相同,则确定存在其他微服务实例执行过所述本次待执行的定时任务。
本说明书的实施例提供的技术方案可以包括以下有益效果:在该定时任务的调度方法中,可以支持多个不同的微服务实例之间的定时任务,通过获取缓存中记录的时间信息,从而通过该事件信息获取到之前是否有其他的微服务实例执行过该定时任务,通过类似于“抢占”的方式执行定时任务。与有状态的微服务架构相比,有状态的微服务架构仅一直是主身份的微服务实例执行定时任务,而采用无状态的微服务系统架构多个微服务实例之间相互配合,多个微服务实例均可以执行定时任务,降低了定时任务执行时的性能瓶颈,并且采用无状态的微服务系统便于后续系统的扩容。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本申请提供的现有技术的微服务实例的示意图;
图2是本申请提供的一种微服务架构示意图;
图3是本申请一实施例提供的定时任务调度方法的流程示意图;
图4是本申请又一实施例提供的定时任务调度方法的流程示意图;
图5是本申请再一实施例提供的定时任务调度方法的流程示意图;
图6是本申请提供的定时任务调度装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
本公开提供了一种定时任务的调度方法,可以应用于无状态的微服务框架下,即微服务系统中的微服务实例不存在主备身份状态,每一个微服务实例之间的关系是平等的。微服务实例,就是在微服务框架下,应用的多个副本,每个应用副本以容器方式运行,每个副本是一个微服务实例。在该定时任务的调度方法中,可以支持多个不同的微服务实例之间的定时任务,通过获取缓存中记录的时间信息,从而通过该事件信息获取到之前是否有其他的微服务实例执行过该定时任务,通过类似于“抢占”的方式执行定时任务。与有状态的微服务架构相比,有状态的微服务架构仅一直是主身份的微服务实例执行定时任务,而采用无状态的微服务系统架构多个微服务实例之间相互配合,多个微服务实例均可以执行定时任务,降低了定时任务执行时的性能瓶颈,并且采用无状态的微服务系统便于后续系统的扩容。
实施例一
图3为本申请提供的定时任务的调度方法的流程示意图,为了便于理解该方案,本实施例中以图2所示的微服务架构为例对该定时任务的调度方法进行说明,具体的,以图2所示的微服务系统中包括3个微服务实例(微服务实例A、微服务实例B、微服务实例C)对该定时任务的调度方法进行说明。
如图3所示,该定时任务的调度方法,可以应用于微服务系统中的任一微服务实例,以图3中的微服务实例B为例进行说明,该方法包括:
步骤301,微服务实例B在到达定时任务的执行时间时,获取缓存中记录的时间信息,所述时间信息为执行定时任务的微服务实例记录的。
本实施例中,定时任务可以是固定时间执行的定时任务,例如每天的12点执行定时任务。
或者,定时任务也可以是固定频率执行的定时任务,例如,每隔一个小时执行一次定时任务。
其中,三个微服务实例上设置的定时任务均是相同的,以固定时间执行定时任务的时间为每天的12:00为例,微服务实例A、微服务实例B、微服务实例C本地一般会在接收到12:00触发执行该定时任务的指令,以接收到执行定时任务的指令的时间即为本实施例指的执行时间。但是这三个微服务实例只有其中的一个会通过本申请提供的方法,“抢占”到执行该定时任务的机会。
步骤303,根据获取到的时间信息与所述微服务实例B本次待执行的定时任务对应的执行时间确定所述本次待执行的定时任务是否有其他微服务实例执行过。
步骤305,如果所述微服务实例B确定不存在其他微服务实例执行过所述本次待执行的定时任务,则向所述缓存中写入本次待执行的定时任务对应的执行时间,并由所述微服务实例执行本次待执行的定时任务。
根据步骤305,微服务实例B如果确定没有其他的微服务实例执行过本次待执行的定时任务,则向缓存中写入本次待执行的定时任务的执行时间,以固定时间执行定时任务的时间为每天的12:00为例,当前待执行的定时任务为2020-1-21的12:00的定时任务,示例性的,则向缓存中写入的时间信息为:2020-1-21-12-00,并由微服务实例B执行本次待执行的定时任务。
本实施例中,缓存中存储的时间信息为执行定时任务的微服务实例B记录的执行该定时任务的执行时间。
本实施例提供的定时任务调度方法中,通过在缓存中记录微服务实例执行定时任务的执行时间,后续有其他的微服务实例想要执行相同的定时任务时,通过获取缓存中的时间信息可以获知是否有其他微服务实例执行过该定时任务。在该定时任务的调度方法中,各个微服务实例执行定时任务的机会均等,在某一个微服务实例上运行的程序过多,响应变慢,此时则可以由其他微服务实例执行定时任务,由此实现了类似于负载分担的功能。
实施例二
在上述实施例的基础上,本实施例分别以定时任务为固定时间的定时任务和定时任务为固定频率的任务两种实现方式对步骤303和步骤305进行详细说明。
图4具体示出了本实施例在定时任务为固定时间的定时任务的情况下,提供的任务调度方法的流程示意图。如果此前没有任何微服务实例执行过该定时任务,则此时缓存中记录的针对该定时任务的时间信息为空。微服务实例B获取到的缓存中记录的时间信息为空时,则将本次待执行的定时任务对应的执行时间2020-1-20-12-00写入缓存中。接下来若如图4所示,
步骤401,微服务实例A或C在到达定时任务的执行时间时,获取缓存中记录的时间信息,所述时间信息为执行定时任务的微服务实例记录的。
此时其他的微服务实例A和C在到达本次定时任务的执行时间2020年1月20日的12:00时,也会获取缓存中记录的时间信息,此时已经有微服务实例B写入过执行时间信息。此时微服务实例C通过下述步骤404可以判断出有其他的微服务实例执行过该1月20日的12:00定时任务。
步骤403,微服务实例A或C读取本次待执行的定时任务对应的执行时间;判断所述执行时间是否超过缓存中记录的时间信息,如果执行时间超过缓存中记录的时间信息,则确定本次待执行的定时任务没有其他微服务实例执行过,执行步骤407。
步骤404,如果所述执行时间与缓存中记录的时间信息相同,由此则确定存在其他微服务实例执行过所述本次待执行的定时任务。此时微服务实例A或C无需执行本次待执行的任务
针对步骤404,微服务实例C读取本次待执行的定时任务对应的执行时间2020-1-20-12-00,与缓存中的记录的时间信息2020-1-20-12-00相比,该执行时间并没有超过缓存中记录的2020-1-20-12-00。
针对步骤403,当然,还另一种可能的情形。例如,当下一次定时任务到达时,即2020年1月21日的12:00到达时,重复执行上述步骤401和403。此时依然以微服务实例B最先获取缓存中记录的时间信息为例,此时微服务实例B获取到缓存中记录的时间信息为2020-1-21-12-00,此时的执行时间2020年1月21日的12:00超过缓存中记录的时间信息2020-1-20-12-00,由此确定本次待执行的定时任务是没有其他微服务实例执行过的。本实施例中的“超过”,指的是时间上的先后,即时间轴中在后的时间超过在前的时间。
步骤407,向所述缓存中写入本次待执行的定时任务对应的执行时间,并由所述微服务实例执行本次待执行的定时任务。
微服务实例B确定不存在其他的微服务实例执行过本次待执行的定时任务,此时则向缓存中写入本次待执行的定时任务对应的执行时间2020-1-21-12-00,则本次的定时任务由微服务实例B执行。
图5具体示出了本实施例在定时任务为固定频率的定时任务的情况下,提供的任务调度方法的流程示意图。如图5所示,该方法包括:
步骤501,微服务实例在到达定时任务的执行时间时,获取缓存中记录的时间信息,所述时间信息为执行定时任务的微服务实例记录的。
以固定频率在执行时,本实施例中以每个小时执行一次定时任务为例进行说明。
对于执行的定时任务,可能会存在各个微服务去执行定时任务这个动作的时间存在误差的问题。例如微服务实例A、B、C在接收执行定时任务的指令时,微服务实例A在2020年1月20日12:00:02接收到执行定时任务的指令,而微服务实例B在2020年1月20日12:00:00接收到执行定时任务的指令,存在几秒钟的误差,因此为了保证不同微服务实例之间执行定时任务即便存在时间上误差,定时任务也能准确的间隔1小时执行一次,本实施例提供的方法中,通过步骤503保证定时任务的执行周期的稳定保持在一小时。
具体的,步骤503,微服务实例B或C读取本次待执行的定时任务对应的执行时间;判断所述执行时间与所述缓存中记录的时间信息之差是否大于等于定时任务的执行周期,如果小于所述执行周期,则执行步骤505:微服务实例将本地存储的下一周期的执行时间修改为缓存记录的时间信息加上执行周期。
如果二者之差大于等于定时任务的执行周期,则说明此时已经到达定时任务的下一周期,在定时任务的下一周期中,还未有其他微服务实例执行过该下一周期的定时任务,此时微服务实例可以执行步骤5032。
步骤5032,向所述缓存中写入本次待执行的定时任务对应的执行时间,并由所述微服务实例执行本次待执行的定时任务。
对于首次执行本实施例的方法时,即缓存为空时,微服务实例A虽然接收到执行定时任务的指令的时间为2020-1-20-12-00-02,比微服务实例B接收到执行定时任务的指令的时间2020-1-20-12-00-00晚两秒钟,但是也可能存在微服务实例A最先向缓存获取时间信息的情况,以该种情况为例,微服务实例首次获取缓存中的时间信息如果确定缓存为空,则将本次待执行的定时任务对应的执行时间2020-1-20-12-00-02写入至缓存中。
当微服务实例B到达其定时任务的执行时间2020年1月20日12:00:00时,其获取到缓存中的时间信息为2020-1-20-12-00-02。二者的差值为2秒,小于定时任务的执行周期1小时。由此微服务实例B可以确定其执行的定时任务与微服务实例A执行的定时任务为同一周期的定时任务。
此时将确定缓存中记录的时间信息2020-1-20-12-00-02。进一步的执行步骤505,微服务实例B和C均将本地存储的下一周期的执行时间修改为2020-1-20-12-00-02加上执行周期1小时,变为2020-1-20-13-00-02。由此保证微服务实例B和C在下一个周期的定时任务的执行周期到来时,与上一周期微服务实例A执行的定时任务的间隔为1小时。
在图4和图5的两种实施例方式的基础上,图4和图5均可能存在一种情况,即微服务实例读取本地存储的本次待执行的定时任务对应的执行时间;判断所述执行时间与缓存中记录的时间信息相同,由此则确定存在其他微服务实例执行过所述本次待执行的定时任务。此时微服务实例也无需执行本次待执行的任务。
由此,本实施例对于定时任务为固定时间的定时任务以及固定频率的定时任务的两种情况介绍完毕,可以看出本申请所提供的方法中,根据获取到的时间信息与所述微服务实例本次待执行的定时任务对应的执行时间确定所述本次待执行的定时任务是否有其他微服务实例执行过,可以支持多个不同微服务实例之间的定时任务,多个微服务实例之间只要配置好相应的执行定时任务时间以及配置好缓存的地址等,就可以实现该种微服务框架下的定时任务机制。
实施例三
本实施例提供一种定时任务的调度装置,可以执行上述任一微服务实例执行的定时任务的调度方法,该定时任务的调度装置中的各个功能单元可以分布于同一个物理设备中,也可以分布在不同的物理设备中。图6示出了一种定时任务的调度装置的结构示意图,如图6所示,该装置包括:缓存单元601、判断单元602、任务执行单元603;
缓存单元601,用于在到达定时任务的执行时间时,获取缓存单元601中记录的时间信息,所述时间信息为执行定时任务的微服务实例记录的;
判断单元602,用于根据获取到的时间信息与本次待执行定时任务的所述微服务实例对应的执行时间确定本次待执行的定时任务是否有其他微服务实例执行过;
如果判断单元602确定不存在其他微服务实例执行过本次待执行的定时任务,则向所述缓存单元601中写入本次待执行的定时任务对应的执行时间,并由任务执行单元603执行本次待执行的定时任务。
如果所述判断单元602确定存在其他微服务实例执行过本次待执行的定时任务,则所述任务执行单元603不执行本次待执行的定时任务。
可选的,所述装置还包括获取单元(图中未示出),用于在所述定时任务为固定时间执行的定时任务的情况下,读取本次待执行的定时任务对应的执行时间;判断单元602用于判断所述执行时间是否超过缓存单元601中记录的时间信息,如果执行时间超过缓存单元中记录的时间信息,则确定本次待执行的定时任务没有其他微服务实例执行过。
可选的,获取单元还可以用于在所述定时任务为固定频率执行定时任务的情况下,读取本次待执行的定时任务对应的执行时间;判断单元602用于判断所述执行时间与所述缓存单元601中记录的时间信息之差是否大于等于定时任务的执行周期,如果小于所述执行周期则缓存单元601将本地存储的下一周期的执行时间修改为缓存单元记录的时间信息加上执行周期。
可选的,获取单元还可以于读取本地存储的本次待执行的定时任务对应的执行时间;判断单元602判断所述执行时间是否与缓存中记录的时间信息相同,如果相同,则确定存在其他微服务实例执行过所述本次待执行的定时任务。
本实施例提供的装置中,通过在缓存单元中记录微服务实例执行定时任务的执行时间,后续有其他的微服务实例想要执行相同的定时任务时,通过获取缓存单元中的时间信息可以获知是否有其他微服务实例执行过该定时任务。在该定时任务的调度装置中,各个微服务实例执行定时任务的机会均等,在某一个微服务实例上运行的程序过多,响应变慢,此时则可以由其他微服务实例执行定时任务,由此实现了类似于负载分担的功能。
本实施例提供的装置中,各个模块的实现方式可以参照方法实施例,本实施例中不再详细赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (6)
1.一种定时任务的调度方法,应用于微服务系统中的任一微服务实例,其特征在于,包括:
所述微服务实例在到达定时任务的执行时间时,获取缓存中记录的时间信息,所述时间信息为执行定时任务的微服务实例记录的;
根据获取到的时间信息与所述微服务实例本次待执行的定时任务对应的执行时间确定所述本次待执行的定时任务是否有其他微服务实例执行过;
如果所述微服务实例确定不存在其他微服务实例执行过所述本次待执行的定时任务,则向所述缓存中写入本次待执行的定时任务对应的执行时间,并由所述微服务实例执行本次待执行的定时任务;
在所述定时任务为固定频率执行定时任务的情况下,所述方法还包括:
所述微服务实例读取本次待执行的定时任务对应的执行时间;判断所述执行时间与所述缓存中记录的时间信息之差是否大于等于定时任务的执行周期,如果小于所述执行周期,则所述微服务实例将本地存储的下一周期的执行时间修改为缓存记录的时间信息加上执行周期。
2.根据权利要求1所述的方法,其特征在于,如果所述微服务实例确定存在其他微服务实例执行过所述本次待执行的定时任务,则不执行本次待执行的定时任务。
3.根据权利要求1-2任一项所述的方法,其特征在于,所述微服务实例确定存在其他微服务实例执行过所述本次待执行的定时任务,包括:
所述微服务实例读取本地存储的本次待执行的定时任务对应的执行时间;判断所述执行时间是否与缓存中记录的时间信息相同,如果相同,则确定存在其他微服务实例执行过所述本次待执行的定时任务。
4.一种定时任务的调度装置,其特征在于,包括:缓存单元、判断单元、任务执行单元;
缓存单元,用于在到达定时任务的执行时间时,获取缓存单元中记录的时间信息,所述时间信息为执行定时任务的微服务实例记录的;
判断单元,用于根据获取到的时间信息与本次待执行定时任务的所述微服务实例对应的执行时间确定本次待执行的定时任务是否有其他微服务实例执行过;
如果判断单元确定不存在其他微服务实例执行过本次待执行的定时任务,则向所述缓存单元中写入本次待执行的定时任务对应的执行时间,并由任务执行单元执行本次待执行的定时任务;
还包括获取单元,用于在所述定时任务为固定频率执行定时任务的情况下,读取本次待执行的定时任务对应的执行时间;判断单元用于判断所述执行时间与所述缓存单元中记录的时间信息之差是否大于等于定时任务的执行周期,如果小于所述执行周期,则所述微服务实例将本地存储的下一周期的执行时间修改为缓存单元记录的时间信息加上执行周期。
5.根据权利要求4所述的装置,其特征在于,如果所述判断单元确定存在其他微服务实例执行过本次待执行的定时任务,则所述任务执行单元不执行本次待执行的定时任务。
6.根据权利要求4-5任一项所述的装置,其特征在于,所述装置还包括获取单元,用于读取本地存储的本次待执行的定时任务对应的执行时间;判断单元判断所述执行时间是否与缓存中记录的时间信息相同,如果相同,则确定存在其他微服务实例执行过所述本次待执行的定时任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110119609.0A CN112817717B (zh) | 2021-01-28 | 2021-01-28 | 一种定时任务的调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110119609.0A CN112817717B (zh) | 2021-01-28 | 2021-01-28 | 一种定时任务的调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112817717A CN112817717A (zh) | 2021-05-18 |
CN112817717B true CN112817717B (zh) | 2024-02-09 |
Family
ID=75860212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110119609.0A Active CN112817717B (zh) | 2021-01-28 | 2021-01-28 | 一种定时任务的调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817717B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114595149A (zh) * | 2022-03-03 | 2022-06-07 | 平安普惠企业管理有限公司 | 定时任务的并发测试方法及装置、存储介质、计算机设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107797859A (zh) * | 2017-11-16 | 2018-03-13 | 山东浪潮云服务信息科技有限公司 | 一种定时任务的调度方法及一种调度服务器 |
CN108182108A (zh) * | 2017-12-19 | 2018-06-19 | 山东浪潮商用系统有限公司 | 一种定时任务集群及其执行方法 |
CN108712464A (zh) * | 2018-04-13 | 2018-10-26 | 中国科学院信息工程研究所 | 一种面向集群微服务高可用的实现方法 |
CN110704172A (zh) * | 2019-09-20 | 2020-01-17 | 深圳市递四方信息科技有限公司 | 集群系统定时任务调度方法及集群系统 |
CN110750343A (zh) * | 2019-09-20 | 2020-02-04 | 深圳市递四方信息科技有限公司 | 集群系统定时任务调度控制方法及集群系统 |
CN111092933A (zh) * | 2019-11-20 | 2020-05-01 | 泰康保险集团股份有限公司 | 用于微服务架构的业务流程管理方法、系统、介质及电子设备 |
CN111158895A (zh) * | 2018-11-08 | 2020-05-15 | 中国电信股份有限公司 | 微服务资源调度方法和系统 |
CN111190736A (zh) * | 2019-12-31 | 2020-05-22 | 苏宁云计算有限公司 | 基于微服务的低入侵分布式定时任务调度系统及方法 |
CN111580945A (zh) * | 2020-04-21 | 2020-08-25 | 智业互联(厦门)健康科技有限公司 | 微服务任务协调调度方法及系统 |
CN111722934A (zh) * | 2020-06-12 | 2020-09-29 | 南京甄视智能科技有限公司 | 分布式定时任务处理方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110286951A (zh) * | 2019-06-28 | 2019-09-27 | 百度在线网络技术(北京)有限公司 | 一种免打扰的处理方法、装置及存储介质 |
-
2021
- 2021-01-28 CN CN202110119609.0A patent/CN112817717B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107797859A (zh) * | 2017-11-16 | 2018-03-13 | 山东浪潮云服务信息科技有限公司 | 一种定时任务的调度方法及一种调度服务器 |
CN108182108A (zh) * | 2017-12-19 | 2018-06-19 | 山东浪潮商用系统有限公司 | 一种定时任务集群及其执行方法 |
CN108712464A (zh) * | 2018-04-13 | 2018-10-26 | 中国科学院信息工程研究所 | 一种面向集群微服务高可用的实现方法 |
CN111158895A (zh) * | 2018-11-08 | 2020-05-15 | 中国电信股份有限公司 | 微服务资源调度方法和系统 |
CN110704172A (zh) * | 2019-09-20 | 2020-01-17 | 深圳市递四方信息科技有限公司 | 集群系统定时任务调度方法及集群系统 |
CN110750343A (zh) * | 2019-09-20 | 2020-02-04 | 深圳市递四方信息科技有限公司 | 集群系统定时任务调度控制方法及集群系统 |
CN111092933A (zh) * | 2019-11-20 | 2020-05-01 | 泰康保险集团股份有限公司 | 用于微服务架构的业务流程管理方法、系统、介质及电子设备 |
CN111190736A (zh) * | 2019-12-31 | 2020-05-22 | 苏宁云计算有限公司 | 基于微服务的低入侵分布式定时任务调度系统及方法 |
CN111580945A (zh) * | 2020-04-21 | 2020-08-25 | 智业互联(厦门)健康科技有限公司 | 微服务任务协调调度方法及系统 |
CN111722934A (zh) * | 2020-06-12 | 2020-09-29 | 南京甄视智能科技有限公司 | 分布式定时任务处理方法及系统 |
Non-Patent Citations (1)
Title |
---|
面向微服务系统的运行时部署优化;徐琛杰等;《计算机应用与软件》;20181012(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112817717A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110532247B (zh) | 数据迁移方法和数据迁移系统 | |
CN105426439B (zh) | 一种元数据的处理方法和装置 | |
CN107451172B (zh) | 用于版本管理系统的数据同步方法及设备 | |
CN105718570B (zh) | 用于数据库的数据迁移方法和装置 | |
EP3399692B1 (en) | Method and apparatus for upgrading distributed storage system | |
CN107357688B (zh) | 分布式系统及其故障恢复方法和装置 | |
US20070276884A1 (en) | Method and apparatus for managing backup data and journal | |
JP2002522845A (ja) | フォールトトレラント・コンピュータシステム | |
CN107426265A (zh) | 数据一致性同步的方法及设备 | |
CN108345617B (zh) | 一种数据同步方法、装置以及电子设备 | |
CN102265277A (zh) | 数据存储系统的操作方法和装置 | |
CN104156361A (zh) | 一种实现数据同步的方法及系统 | |
CN111880956A (zh) | 一种数据同步方法和装置 | |
CN104735107A (zh) | 分布式存储系统中数据副本恢复方法及装置 | |
JP2017199266A (ja) | 車両制御装置、及び車両システム | |
CN112817717B (zh) | 一种定时任务的调度方法及装置 | |
CN116909759B (zh) | 信息处理方法、装置及设备、介质和控制器集群 | |
CN110298031B (zh) | 一种词典服务系统及模型版本一致性配送方法 | |
US20070180312A1 (en) | Software duplication | |
CN116599828A (zh) | 任务执行方法和装置、存储介质及电子设备 | |
CN115617459A (zh) | 一种用于资源调度的方法、装置及设备 | |
CN104636086A (zh) | 一种ha存储设备、管理ha状态的方法 | |
CN111400098B (zh) | 一种副本管理方法、装置、电子设备及存储介质 | |
CN115080309A (zh) | 数据备份系统、方法、存储介质以及电子设备 | |
JP3781007B2 (ja) | 計算機間のデータ引き継ぎ方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |