CN112819600B - 定时任务的执行方法、装置、设备及计算机存储介质 - Google Patents
定时任务的执行方法、装置、设备及计算机存储介质 Download PDFInfo
- Publication number
- CN112819600B CN112819600B CN202110214331.5A CN202110214331A CN112819600B CN 112819600 B CN112819600 B CN 112819600B CN 202110214331 A CN202110214331 A CN 202110214331A CN 112819600 B CN112819600 B CN 112819600B
- Authority
- CN
- China
- Prior art keywords
- task
- execution time
- value
- target
- timing
- 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 112
- 239000012634 fragment Substances 0.000 claims abstract description 127
- 238000012216 screening Methods 0.000 claims abstract description 16
- 238000012545 processing Methods 0.000 claims description 52
- 230000015654 memory Effects 0.000 claims description 23
- 238000013467 fragmentation Methods 0.000 claims description 12
- 238000006062 fragmentation reaction Methods 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 10
- 238000005192 partition Methods 0.000 claims description 9
- 230000002159 abnormal effect Effects 0.000 claims description 7
- 230000008569 process Effects 0.000 description 25
- 238000007689 inspection Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000005291 magnetic effect Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- KLDZYURQCUYZBL-UHFFFAOYSA-N 2-[3-[(2-hydroxyphenyl)methylideneamino]propyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCCN=CC1=CC=CC=C1O KLDZYURQCUYZBL-UHFFFAOYSA-N 0.000 description 3
- 240000008042 Zea mays Species 0.000 description 3
- 235000005824 Zea mays ssp. parviglumis Nutrition 0.000 description 3
- 235000002017 Zea mays subsp mays Nutrition 0.000 description 3
- 235000005822 corn Nutrition 0.000 description 3
- 201000001098 delayed sleep phase syndrome Diseases 0.000 description 3
- 208000033921 delayed sleep phase type circadian rhythm sleep disease Diseases 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000010453 quartz Substances 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N silicon dioxide Inorganic materials O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 244000046052 Phaseolus vulgaris Species 0.000 description 1
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 1
- 230000001680 brushing effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Human Resources & Organizations (AREA)
- Economics (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- Development Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- Theoretical Computer Science (AREA)
- Marketing (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Educational Administration (AREA)
- Tourism & Hospitality (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Game Theory and Decision Science (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Technology Law (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供了一种定时任务的执行方法、装置、电子设备及计算机存储介质;该方法包括:在确定至少一个定时任务的下次执行时间的初始值后,根据上一次得出的至少一个定时任务的下次执行时间的值,在至少一个定时任务中筛选出符合第一设定条件的目标任务;以上一次得出的至少一个定时任务的下次执行时间的值为基准,根据至少一个定时任务的下次任务计划信息,更新至少一个定时任务的下次执行时间的值;在目标任务的分片到期时,执行目标任务的分片,根据目标任务的下次执行时间更新目标任务的分片的下次执行时间。
Description
技术领域
本申请涉及金融科技(Fintech)的任务调度技术,涉及但不限于一种定时任务的执行方法、装置、设备及计算机存储介质。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。
目前,定时任务的调度可以基于开源项目Elastic-Job-Lite实现,开源项目Elastic-Job-Lite是一个基于Zookepper、Quartz开发并开源的一个Java分布式定时任务调度工具,解决了Quartz不支持分布式的弊端。Elastic-job-Lite主要的功能有支持弹性扩容,通过Zookepper集中管理和监控job,支持失效转移等;Elastic-Job-Lite任务基于分片,服务实例自治,通过Zookepper协调各实例的任务分配、执行扩容等一系列交互。
然而,在相关技术中,如何使定时任务与任务的各分片的执行时间保持一致,是亟待解决的技术问题。
发明内容
本申请实施例提供一种定时任务的执行方法、装置、设备及计算机存储介质,可以根据目标任务的下次执行时间和目标任务的分片的下次执行时间的两级设置,有利于使目标任务的各分片的执行时间保持一致。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种定时任务的执行方法,所述方法包括:
在确定至少一个定时任务的下次执行时间的初始值后,根据上一次得出的至少一个定时任务的下次执行时间的值,在所述至少一个定时任务中筛选出符合第一设定条件的目标任务;所述第一设定条件包括:所述目标任务的下次执行时间处于从当前时间开始的第一预设时长内或者所述目标任务的下次执行时间晚于所述当前时间;
以所述上一次得出的至少一个定时任务的下次执行时间的值为基准,根据至少一个定时任务的下次任务计划信息,更新所述至少一个定时任务的下次执行时间的值;
在所述目标任务的分片到期时,执行所述目标任务的分片,根据目标任务的下次执行时间更新所述目标任务的分片的下次执行时间。
在本申请的一些实施例中,所述在所述目标任务的分片到期时,执行所述目标任务的分片,包括:
在所述目标任务的分片到期时,利用至少一个应用实例抢占执行所述目标任务的分片,所述应用实例表示用于执行任务的分片的服务。
在本申请的一些实施例中,所述利用至少一个应用实例抢占执行所述目标任务的分片,包括:
利用所述至少一个应用实例对所述目标任务的分片进行加锁的形式,抢占执行所述目标任务的分片;其中,处于加锁状态的目标任务的分片表示不能被其它应用实例执行的分片;
所述方法还包括:在所述目标任务的任意一个分片执行完成后,对所述任意一个分片进行解锁。
在本申请的一些实施例中,所述利用所述至少一个应用实例对所述目标任务的分片进行加锁的形式,抢占执行所述目标任务的分片,包括:
确定抢占所述目标任务的任意一个分片的目标应用实例;
在所述任意一个分片处于未加锁状态,或者所述目标应用实例处于不可用状态,或者所述任意一个分片的加锁状态的时长超过第二预设时长时,利用所述目标应用实例对所述任意一个分片进行加锁,执行所述任意一个分片。
在本申请的一些实施例中,所述方法还包括:
在所述至少一个应用实例中的应用实例启动时,在所述至少一个定时任务中筛选出符合第二设定条件的至少一个第一任务,所述第二设定条件包括:所述第一任务的下次执行时间的值早于当前时间且所述第一任务未处于正在执行状态;
对所述至少一个第一任务进行加锁,更新所述至少一个第一任务的下次执行时间的值;其中,处于加锁状态的所述第一任务表示不能被执行的任务;
在更新所述至少一个第一任务的下次执行时间的值后,对所述至少一个第一任务进行解锁。
在本申请的一些实施例中,所述更新所述至少一个第一任务的下次执行时间的值,包括:
确定上一次得出的所述第一任务的下次执行时间的值与第一数值的较大值,将所述较大值确定为更新后的所述第一任务的下次执行时间的值;其中,所述第一数值表示:以当前时间为基准,根据所述第一任务的下次任务计划信息,更新的所述第一任务的下次执行时间的值。
在本申请的一些实施例中,在更新所述至少一个第一任务的下次执行时间的值后,在对所述至少一个第一任务进行解锁之前,所述方法还包括:
在确定所述第一任务满足需要进行重分片的条件时,对所述第一任务进行重分片。
在本申请的一些实施例中,所述方法还包括:
在所述至少一个应用实例中的应用实例启动时,在所述至少一个定时任务中筛选出符合第三设定条件的至少一个第二任务,所述第三设定条件包括:所述第二任务的下次执行时间的值早于当前时间且所述第一任务处于正在执行状态;
生成针对所述至少一个第二任务的异常预警信息,并确定需要对所述至少一个第二任务进行重分片。
在本申请的一些实施例中,所述方法还包括:预先获取灰度执行信息,所述灰度执行信息表示用于执行所述至少一个定时任务的分片的应用实例的灰度发布配置信息;
相应地,所述在所述目标任务的分片到期时,执行所述目标任务的分片,包括:在所述目标任务的分片到期时,根据所述灰度执行信息,执行所述目标任务的分片。
在本申请的一些实施例中,所述灰度发布信息包括:用于执行所述至少一个定时任务的分片的应用实例的灰度发布配置信息。
在本申请的一些实施例中,在根据上一次得出的至少一个定时任务的下次执行时间的值,在所述至少一个定时任务中筛选出符合设定条件的目标任务之前,所述方法还包括:
确定用于执行定时任务的每个应用实例的系统时间与预设标准时间的差值,在所述差值大于时长阈值时,生成提示信息。
在本申请的一些实施例中,所述下次任务计划信息包括CRON表达式;
相应地,所述以所述上一次得出的至少一个定时任务的下次执行时间的值为基准,根据至少一个定时任务的下次任务计划信息,更新所述至少一个定时任务的下次执行时间的值,包括:
将所述上一次得出的至少一个定时任务的下次执行时间的值作为所述CRON表达式中的参数,根据所述CRON表达式的计算结果更新所述至少一个定时任务的下次执行时间的值。
在本申请的一些实施例中,所述方法还包括:
在更新所述至少一个定时任务的下次执行时间的值时,将所述至少一个定时任务的上次执行时间的值更新为所述上一次得出的至少一个定时任务的下次执行时间的值;
根据所述至少一个定时任务的上次执行时间的值,确定所述至少一个定时任务的执行状态。
在本申请的一些实施例中,所述方法还包括:
在所述至少一个定时任务中确定未处于正在执行状态的第三任务;
对所述第三任务进行加锁,其中,处于加锁状态的所述第三任务表示不能被执行的任务;
在所述第三任务的下次任务计划信息被修改时,当前时间为基准,根据所述第三任务的修改后的下次任务计划信息,更新所述第三任务的下次执行时间的值;将所述第三任务的上次执行时间的值更新为当前时间;
在所述第三任务的下次任务计划信息未被修改时,确定上一次得出的所述第三任务的下次执行时间的值与第二数值的较大值,将所述较大值确定为更新后的所述第三任务的下次执行时间的值;将所述第三任务的上次执行时间的值更新为当前时间或保持所述第三任务的上次执行时间的值不变;其中,所述第二数值表示:以当前时间为基准,根据所述第三任务的下次任务计划信息,更新的所述第三任务的下次执行时间的值。
在本申请的一些实施例中,所述方法还包括:
在所述第三任务的分片信息被修改时,对所述第三任务进行重分片,根据所述第三任务的下次执行时间和上次执行时间的值,更新重分片后的第三任务的分片的下次执行时间和上次执行时间的值;
在所述第三任务的分片信息未被修改时,根据所述第三任务的下次执行时间和上次执行时间的值,更新第三任务的分片的下次执行时间和上次执行时间的值。
在本申请的一些实施例中,所述方法还包括:预先获取所述至少一个定时任务中每个定时任务的任务执行条件;
相应地,所述在所述目标任务的分片到期时,执行所述目标任务的分片,包括:在所述目标任务的分片到期时,且满足所述目标任务的任务执行条件时,执行所述目标任务的分片。
在本申请的一些实施例中,所述任务执行条件包括:为执行所述每个定时任务所需完成的前置任务。
本申请实施例提供一种定时任务的执行装置,所述装置包括:
第一处理模块,用于在确定至少一个定时任务的下次执行时间的初始值后,根据上一次得出的至少一个定时任务的下次执行时间的值,在所述至少一个定时任务中筛选出符合第一设定条件的目标任务;所述第一设定条件包括:所述目标任务的下次执行时间处于从当前时间开始的第一预设时长内或者所述目标任务的下次执行时间晚于所述当前时间;
第二处理模块,用于以所述上一次得出的至少一个定时任务的下次执行时间的值为基准,根据至少一个定时任务的下次任务计划信息,更新所述至少一个定时任务的下次执行时间的值;
第三处理模块,用于在所述目标任务的分片到期时,执行所述目标任务的分片,根据目标任务的下次执行时间更新所述目标任务的分片的下次执行时间。
在本申请的一些实施例中,所述第三处理模块,用于在所述目标任务的分片到期时,执行所述目标任务的分片,包括:
在所述目标任务的分片到期时,利用至少一个应用实例抢占执行所述目标任务的分片,所述应用实例表示用于执行任务的分片的服务。
在本申请的一些实施例中,所述第三处理模块,用于利用至少一个应用实例抢占执行所述目标任务的分片,包括:
利用所述至少一个应用实例对所述目标任务的分片进行加锁的形式,抢占执行所述目标任务的分片;其中,处于加锁状态的目标任务的分片表示不能被其它应用实例执行的分片;
所述第三处理模块,还用于在所述目标任务的任意一个分片执行完成后,对所述任意一个分片进行解锁。
在本申请的一些实施例中,所述第三处理模块,用于利用所述至少一个应用实例对所述目标任务的分片进行加锁的形式,抢占执行所述目标任务的分片,包括:
确定抢占所述目标任务的任意一个分片的目标应用实例;
在所述任意一个分片处于未加锁状态,或者所述目标应用实例处于不可用状态,或者所述任意一个分片的加锁状态的时长超过第二预设时长时,利用所述目标应用实例对所述任意一个分片进行加锁,执行所述任意一个分片。
在本申请的一些实施例中,所述第三处理模块,还用于:
在所述至少一个应用实例中的应用实例启动时,在所述至少一个定时任务中筛选出符合第二设定条件的至少一个第一任务,所述第二设定条件包括:所述第一任务的下次执行时间的值早于当前时间且所述第一任务未处于正在执行状态;
对所述至少一个第一任务进行加锁,更新所述至少一个第一任务的下次执行时间的值;其中,处于加锁状态的所述第一任务表示不能被执行的任务;
在更新所述至少一个第一任务的下次执行时间的值后,对所述至少一个第一任务进行解锁。
在本申请的一些实施例中,所述第三处理模块,用于更新所述至少一个第一任务的下次执行时间的值,包括:
确定上一次得出的所述第一任务的下次执行时间的值与第一数值的较大值,将所述较大值确定为更新后的所述第一任务的下次执行时间的值;其中,所述第一数值表示:以当前时间为基准,根据所述第一任务的下次任务计划信息,更新的所述第一任务的下次执行时间的值。
在本申请的一些实施例中,所述第三处理模块,还用于在更新所述至少一个第一任务的下次执行时间的值后,在对所述至少一个第一任务进行解锁之前,在确定所述第一任务满足需要进行重分片的条件时,对所述第一任务进行重分片。
在本申请的一些实施例中,所述第三处理模块,还用于:
在所述至少一个应用实例中的应用实例启动时,在所述至少一个定时任务中筛选出符合第三设定条件的至少一个第二任务,所述第三设定条件包括:所述第二任务的下次执行时间的值早于当前时间且所述第一任务处于正在执行状态;
生成针对所述至少一个第二任务的异常预警信息,并确定需要对所述至少一个第二任务进行重分片。
在本申请的一些实施例中,所述第三处理模块,还用于:预先获取灰度执行信息,所述灰度执行信息表示用于执行所述至少一个定时任务的分片的应用实例的灰度发布配置信息;
所述第三处理模块,用于在所述目标任务的分片到期时,执行所述目标任务的分片,包括:在所述目标任务的分片到期时,根据所述灰度执行信息,执行所述目标任务的分片。
在本申请的一些实施例中,所述灰度发布信息包括:用于执行所述至少一个定时任务的分片的应用实例的灰度发布配置信息。
在本申请的一些实施例中,所述第三处理模块,还用于在根据上一次得出的至少一个定时任务的下次执行时间的值,在所述至少一个定时任务中筛选出符合设定条件的目标任务之前,确定用于执行定时任务的每个应用实例的系统时间与预设标准时间的差值,在所述差值大于时长阈值时,生成提示信息。
在本申请的一些实施例中,所述下次任务计划信息包括CRON表达式;
所述第二处理模块,用于以所述上一次得出的至少一个定时任务的下次执行时间的值为基准,根据至少一个定时任务的下次任务计划信息,更新所述至少一个定时任务的下次执行时间的值,包括:
将所述上一次得出的至少一个定时任务的下次执行时间的值作为所述CRON表达式中的参数,根据所述CRON表达式的计算结果更新所述至少一个定时任务的下次执行时间的值。
在本申请的一些实施例中,所述第二处理模块,还用于在更新所述至少一个定时任务的下次执行时间的值时,将所述至少一个定时任务的上次执行时间的值更新为所述上一次得出的至少一个定时任务的下次执行时间的值;
根据所述至少一个定时任务的上次执行时间的值,确定所述至少一个定时任务的执行状态。
在本申请的一些实施例中,所述第二处理模块,还用于:
在所述至少一个定时任务中确定未处于正在执行状态的第三任务;
对所述第三任务进行加锁,其中,处于加锁状态的所述第三任务表示不能被执行的任务;
在所述第三任务的下次任务计划信息被修改时,当前时间为基准,根据所述第三任务的修改后的下次任务计划信息,更新所述第三任务的下次执行时间的值;将所述第三任务的上次执行时间的值更新为当前时间;
在所述第三任务的下次任务计划信息未被修改时,确定上一次得出的所述第三任务的下次执行时间的值与第二数值的较大值,将所述较大值确定为更新后的所述第三任务的下次执行时间的值;将所述第三任务的上次执行时间的值更新为当前时间或保持所述第三任务的上次执行时间的值不变;其中,所述第二数值表示:以当前时间为基准,根据所述第三任务的下次任务计划信息,更新的所述第三任务的下次执行时间的值。
在本申请的一些实施例中,所述第二处理模块,还用于:
在所述第三任务的分片信息被修改时,对所述第三任务进行重分片,根据所述第三任务的下次执行时间和上次执行时间的值,更新重分片后的第三任务的分片的下次执行时间和上次执行时间的值;
在所述第三任务的分片信息未被修改时,根据所述第三任务的下次执行时间和上次执行时间的值,更新第三任务的分片的下次执行时间和上次执行时间的值。
在本申请的一些实施例中,所述第三处理模块,还用于:预先获取所述至少一个定时任务中每个定时任务的任务执行条件;
所述第三处理模块,用于在所述目标任务的分片到期时,执行所述目标任务的分片,包括:在所述目标任务的分片到期时,且满足所述目标任务的任务执行条件时,执行所述目标任务的分片。
在本申请的一些实施例中,所述任务执行条件包括:为执行所述每个定时任务所需完成的前置任务。
本申请实施例提供一种电子设备,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现上述任意一种定时任务的执行方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于被处理器执行时,实现上述任意一种定时任务的执行方法。
本申请实施例中,在确定至少一个定时任务的下次执行时间的初始值后,根据上一次得出的至少一个定时任务的下次执行时间的值,在至少一个定时任务中筛选出符合第一设定条件的目标任务;第一设定条件包括:所述目标任务的下次执行时间处于从当前时间开始的第一预设时长内或者所述目标任务的下次执行时间晚于所述当前时间;以上一次得出的至少一个定时任务的下次执行时间的值为基准,根据至少一个定时任务的下次任务计划信息,更新至少一个定时任务的下次执行时间的值,并将至少一个定时任务的上次执行时间的值更新为上一次得出的至少一个定时任务的下次执行时间的值;在目标任务的分片到期时,执行目标任务的分片,根据目标任务的下次执行时间更新目标任务的分片的下次执行时间。
可以看出,本申请实施例中,可以根据目标任务的下次执行时间和目标任务的分片的下次执行时间的两级设置,有利于使目标任务的各分片的执行时间和保持一致,从而,有利于使目标任务的各分片准确地按时执行,提高了目标任务的各分片的执行准确性和可靠性。
附图说明
图1A为本申请实施例中对定时任务进行分片的示意图;
图1B为本申请实施例中定时任务、分片以及应用实例对应的实体-联系图;
图2为本申请实施例的一种定时任务的执行方法的流程图;
图3为本申请实施例中按照巡查周期筛选目标任务的流程图;
图4为本申请实施例中分片的加锁流程示意图;
图5为本申请实施例中分片的解锁流程示意图;
图6为本申请实施例中应用实例启动时分片信息检查的流程示意图;
图7为本申请实施例中修改任务和分片的执行时间的流程图;
图8为本申请实施例的另一种定时任务的执行方法的流程图;
图9为本申请实施例的定时任务的执行装置的一个可选的组成结构示意图;
图10为本申请实施例中电子设备的一个可选的结构示意图。
具体实施方式
本申请实施例提出了一种定时任务的执行方法、装置、设备及计算机存储介质,可以实现分布式定时任务的调度,可以利用应用实例执行定时任务的分片,这里,应用实例表示用于执行任务的分片的服务,示例性地,应用实例可以包括进程和/或线程。
在一些实施例中,每个定时任务可以具有至少一个分片(SHARDING_ITEM),示例性地,在一个定时任务中,不需要多进程同时运行的部分可以设定为一个分片;在一个定时任务中,需要多进程同时运行的部分可以设定为多个分片,并且可以设置每个分片的参数;例如,每个分片的参数表示分片在定时任务中的位置或其它信息。
在一些实施例中,可以通过预设的分片参数调控单应用实例对分片的并发度,单应用实例对分片的并发度表示单个应用实施最多允许执行的分片数量。
需要说明的是,如果没有多进程同时处理一个定时任务的需求,可以不对定时任务进行分片,这样,可以针对定时任务进行整体的任务调度。
在一些实施例中,在确定一个定时任务后,可以对任意一个定时任务进行预分片;在需要添加或编辑定时任务的分片时,可以对定时任务进行重分片。
图1A为本申请实施例中对定时任务进行分片的示意图,参照图1A,定时任务具有6个分片,分别为分片1、分片2、分片3、分片4、分片5和分片6;为这6个分片分配4个应用实例,其中,实例1用于执行分片1,实例2用于执行分片2和分片3,实例3用于执行分片4和分片5,实例4用于执行分片6。
在一些实施例中,执行分片的应用实例并不是固定不变的,而是可以动态配置的,即,可以根据实际情况更改执行某个分片的应用实例。
在一些实施例中,可以预先配置定时任务的信息,例如,可以在服务启动后通过配置的互联网协议(Internet Protocol,IP):端口(PORT)访问控制台,配置定时任务信息、定时任务的分片信息等。
在一些实施例中,可以根据预先配置的定时任务信息、定时任务的分片信息等进行预分片,在预分片后,可以将定时任务以及定时任务的分片记录到数据库(Data Base,DB)或其它存储介质中。
在一些实施例中,在对定时任务进行预分片后,可以根据实际情况对定时任务的分片进行修改,例如,可以修改定时任务的分片数量或其它分片参数。
图1B为本申请实施例中定时任务、分片以及应用实例对应的实体-联系图(EntityRelationship Diagram,E-R图),图1B中,job_info表示定时任务的信息,在定时任务的信息中,job_id、job_name、pre_fire_time、next_fire_time、sharding_count和sharding_parameter分别表示定时任务的身份标识号(Identity Document,ID)、定时任务的名称、上次执行时间的值、下次执行时间的值、分片数量和分片参数;sharding_item表示分片信息,在分片信息中,job_id、item_id、pre_fire_time和next_fire_time分别表示分片所属定时任务的ID、分片的ID、分片的上次执行时间的值、分片的下次执行时间的值和进程标识符(Process Identification,PID);sharding_item_log表示分片日志信息,在分片日志信息中,log_id、job_id、item_id和instence_id分别表示日志ID、分片所属定时任务的ID、分片的ID、执行分片的应用实例的ID;instence_info表示应用实例信息,在应用实例信息中,instence_id、ip、pid和register_time分别表示应用实例的ID、IP、PID和注册时间。
基于上述应用场景,基础本申请实施例的各种方案。
图2为本申请实施例的一种定时任务的执行方法的流程图,如图2所示,该流程可以包括:
步骤201:在确定至少一个定时任务的下次执行时间的初始值后,根据上一次得出的至少一个定时任务的下次执行时间的值,在至少一个定时任务中筛选出符合第一设定条件的目标任务;第一设定条件包括:目标任务的下次执行时间处于从当前时间开始的第一预设时长内或者目标任务的下次执行时间晚于当前时间。
本申请实施例中,定时任务的下次执行时间表示预计下次执行定时任务的时间,在一些实施例中,可以更新定时任务的下次执行时间的值,示例性地,可以将上一次得出的定时任务的下次执行时间值更新为本次得出的定时任务的下次执行时间的值。
在一些实施例中,可以预先确定定时任务的下次执行时间的初始值,然后对定时任务的下次执行时间的值进行更新。
在一些实施例中,可以在对定时任务进行预分片后,根据当前时间,预先确定至少一个定时任务的下次执行时间的初始值和至少一个定时任务的上次执行时间的初始值。
这里,定时任务的上次执行时间表示在存储介质中记录的时间,需要说明的是,在本申请实施例中,定时任务的上次执行时间的值(包括初始值以及后续得出的定时任务的上次执行时间的值)为在DB或其它存储介质中记录的记录值,定时任务的上次执行时间的值可以与定时任务的上次执行时间的真实值相同,也可以与定时任务的上次执行时间的真实值不同。
在一些实施例中,可以根据当前时间以及下次任务计划信息,确定定时任务的下次执行时间的初始值。
示例性地,下次任务计划信息可以包括CRON表达式,CRON表达式是一个具有时间含义的字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义;向CRON表达式中输入相应的时间参数,可以根据CRON表达式得出定时任务的下次执行时间的值。
示例性地,在下次任务计划信息包括CRON表达式时,根据当前时间以及下次任务计划信息,确定定时任务的下次执行时间的初始值,可以包括:
根据以下公式(1)计算出定时任务的下次执行时间的初始值N0,:
N0=calculatetNextTriggerTime(NOW(),CORN) (1)
其中,NOW()表示当前时间,calculatetNextTriggerTime(NOW(),CORN)表示:以当前时间为基准,根据CRON表达式得出的定时任务的下次执行时间的值;即,将当前时间的值作为CRON表达式中的参数,可以得出CRON表达式的计算结果calculatetNextTriggerTime(NOW(),CORN)。
在一些实施例中,可以根据当前时间,确定定时任务的上次执行时间的初始值;例如,将当前时间NOW()作为定时任务的上次执行时间的初始值P0。
在一些实施例中,在确定定时任务的下次执行时间的初始值和定时任务的上次执行时间的初始值后,可以将定时任务的下次执行时间的初始值作为定时任务的分片的下次执行时间的初始值,也可以将定时任务的上次执行时间的初始值作为定时任务的分片的上次执行时间的初始值。
在一些实施例中,可以将定时任务的下次执行时间的初始值和定时任务的上次执行时间的初始值存储至DB或其它存储介质中。
本申请实施例中,目标任务表示至少一个定时任务中的任务,目标任务的数量可以是一个,也可以是多个。
在一些实施例中,第一预设时长可以实际需求预先设置,例如,可以根据各种定时任务的平均执行时长确定第一预设时长。
在一些实施例中,第一预设时长可以是预设的巡查周期的时长,巡查周期可以表示检查DB中定时任务是否到达执行时间的周期。在每个巡查周期内,可以实时获取当前时间的值,然后,根据每个巡查周期内在至少一个定时任务中筛选出下次执行时间处于下一个巡查周期的目标任务;即,在每个巡查周期内,可以根据实时获取的当前时间的值,判断任务的下次执行时间是否处于从当前时间开始的第一预设时长内;如果任务的下次执行时间处于从当前时间开始的第一预设时长内,则说明任务的下次执行时间处于下个巡查周期,在每个巡查周期内通过不断地判断任务的下次执行时间处于从当前时间开始的第一预设时长内,可以得出下次执行时间处于下一个巡查周期的目标任务。
在一些实施例中,在对执行时间的精度要求较低的场景中,可以在至少一个定时任务中直接筛选出下次执行时间晚于当前时间的定时任务,这样,不需要根据第一预设时长筛选目标任务,也就是说,不需要按照上述每个巡查周期循环进行目标任务的筛选。
步骤202:以上一次得出的至少一个定时任务的下次执行时间的值为基准,根据至少一个定时任务的下次任务计划信息,更新至少一个定时任务的下次执行时间的值。
在一些实施例中,可以将上一次得出的至少一个定时任务的下次执行时间的值作为CRON表达式中的参数,根据CRON表达式的计算结果更新至少一个定时任务的下次执行时间的值。
示例性地,在i取大于1的整数时,第i次得出的定时任务的下次执行时间的值Ni为:
Ni=calculatetNextTriggerTime(Ni-1,CORN) (2)
其中,Ni-1表示第i-1次得出的定时任务的下次执行时间的值,calculatetNextTriggerTime(Ni-1,CORN)表示:将Ni-1作为CRON表达式中的参数,得出的CRON表达式的计算结果。
可以理解地,本申请实施例可以通过向CRON表达式输入相应的参数,从而较为容易地更新定时任务的上次执行时间和下次执行时间。
在一些实施例中,可以将本次得出的定时任务的下次执行时间的值存储至DB或其它存储介质中。
步骤203:在目标任务的分片到期时,执行目标任务的分片,根据目标任务的下次执行时间更新目标任务的分片的下次执行时间。
本申请实施例中,由于目标任务的分片的下次执行时间表示目标任务的分片的预计执行时间,因而,当目标任务的分片的下次执行时间与当前时间相等时,可以认为目标任务的分片到期,此时,应执行目标任务的分片。
在一些实施例中,可以通过应用实例执行目标任务的分片;目标任务的各分片均可以按照步骤203执行。
这里,可以将所述目标任务的分片的下次执行时间更新为:所述目标任务的下次执行时间;可以看出,在根据目标任务的下次执行时间更新目标任务的分片的下次执行时间,目标任务的分片的下次执行时间为分片所属的目标任务的下次执行时间。
在一些实施例中,在根据目标任务的下次执行时间更新目标任务的分片的下次执行时间后,可以将目标任务的分片的下次执行时间的值存储至DB或其它存储介质中。
在一些实施例中,在根据目标任务的下次执行时间更新目标任务的分片的下次执行时间后,可以设置对应的分片的标识为“执行中标识”,并记录表示任务分片正在执行中的日志(LOG)。
在一些实施例中,还可以记录当前用于执行任务分片的应用实例的IP以及应用实例的进程标识符(Process Identification,PID)。
在一些实施例中,在目标任务的分片执行完成后,可以将分片的“执行中标识”删除,在目标任务的分片执行成功后,可以记录表示任务分片执行成功的LOG,目标任务的分片执行失败成功后,可以记录表示任务分片执行失败的LOG。
可以看出,本申请实施例中,定时任务的执行时面向分片的,即,按照分片执行定时任务;在执行任务的分片时,可以由应用实例执行。
在一些实施例中,在目标任务的分片执行完成后,可以利用应用实例执行其它未被执行的目标任务的分片。
在一些实施例中,在本次巡查周期内所有分片均执行完成后,可以利用应用实例抓取失败重试(FAILOVER)的分片和/或错过补偿(MISSFIRE)的分片,并执行抓取到的分片。
这里,失败重试的分片表示在执行失败后进行补偿重试执行的分片;错过补偿的分片根据以下方式确定的分片:当任务的当前分片正在执行中,由于某些原因阻塞耗时过久,又到下一次执行时间,此时为了避免同一分片的并发执行带来的并发问题,选择记录一次错过标识,后续再进行补偿执行。
在一些实施例中,可以记录每次任务的每个分片的执行结果、耗时、执行实例等信息,并且可以根据需求定制报表,报表的内容为记录的信息的一部分或全部。
在实际应用中,步骤201至步骤203可以基于电子设备的处理器实现,上述处理器可以是特定用途集成电路(Application Specific Integrated Circuit,A SIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital SignalProcessing Device,DSPD)、可编程逻辑装置(Programmable Logic Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作限制。
可以看出,本申请实施例中,可以根据目标任务的下次执行时间和目标任务的分片的下次执行时间的两级设置,有利于使目标任务的各分片的执行时间和保持一致,从而,有利于使目标任务的各分片准确地按时执行,提高了目标任务的各分片的执行准确性和可靠性。
在一些实施例中,在目标任务的分片到期时,执行目标任务的分片,可以包括:在目标任务的分片到期时,利用至少一个应用实例抢占执行目标任务的分片。
本申请实施例中,具有空闲计算资源的应用实例可以抢占执行目标任务的分片,即,只要存在具有空闲计算资源的应用实例,便可以执行目标任务的分片,因而,有利于及时执行目标任务的分片。
在一些实施例中,在每个巡查周期内,可以筛选出在一个巡查周期到期的分片,并将筛选出的分片放入内存队列中;示例性地,可以利用专属线程判断目标任务的分片是否到期,在确定目标任务的分片到期时,可以根据内存队列的任务ID在内存队列中抓取任务的分片并执行。
在相关技术中,开源项目Elastic-Job-Lite可以提供预分片策略实现目标任务的分片以及应用实例对分片的执行,这里,预分片策略为:Elastic-Job-Lite是在服务启动过程中将定时任务进行预分片,同时按照预分片策略将各分片分配给对应的应用实例。在预分片策略中,为分片分配的应用实例是固定不变的,任务分片永远归属对应的应用实例执行。
可以理解地,相关技术中,预分片策略不能很好的应对应用实例处理能力差异大、不同分片数据处理需要算力差异大等问题而引起的部分应用实例耗时长,部分应用实例存在算力空闲的问题。这是因为:若发生某个分片耗时比较久或某个应用实例计算性能较差,则根据木桶原理,定时任务的执行完成时间是由最后一个分片完成时间决定的。
而在本申请实施例中,可以利用至少一个应用实例抢占执行未开始执行的目标任务的分片,从而有利于尽快地完成整个定时任务。
在相关技术中,Elastic-Job-Lite额外需要Zookepper集群做交互;高度依赖Zookepper实现任务的分片调度,因此需要依赖Zookepper的稳定性,当Zookepper集群无法提供服务时则任务无法注册、执行,对于本不需使用Zookepper的服务来说,会引入新的复杂性。
而在本申请实施例中,是通过应用实例执行分片,不需要Zookepper集群或其它协调器去协调任务分片的执行;对于需要使用DB的业务系统而言,本申请实施例的方案不需要引入Zookepper集群或其它协调器,具有便于实现的特点。
下面通过图3说明按照巡查周期筛选目标任务的流程,如图3所示,该流程可以包括:
步骤301:在每个巡查周期内,筛选出下次执行时间处于下个巡查周期的目标任务。
本步骤的实现方式已经在步骤201中作出说明,这里不再赘述。
步骤302:更新目标任务的下次执行时间的值。
步骤303:更新目标任务的上次执行时间的值。
步骤202和步骤203的实现方式已经在步骤202中作出说明,这里不再赘述。
在一些实施例中,利用至少一个应用实例抢占执行所述目标任务的分片,可以包括:
利用至少一个应用实例对目标任务的分片进行加锁的形式,抢占执行目标任务的分片;其中,处于加锁状态的目标任务的分片表示不能被其它应用实例执行的分片;
相应地,在目标任务的任意一个分片执行完成后,可以对上述任意一个分片进行解锁。
本申请实施例中,对于需要使用DB的业务系统而言,应用实例可以通过DB锁的形式抢占执行目标任务的分片。
在对目标任务的任意一个分片进行加锁后,应用实例可以执行上述目标任务的任意一个分片,而且,其它应用实例不会抢占执行处于加锁状态的分片。
在目标任务的任意一个分片执行完成时,说明目标任务的任意一个分片执行失败或执行成功,即,在得到目标任务的任意一个分片的执行结果后,便可以对上述任意一个分片进行解锁;处于解锁状态的分片可以被应用实例抢占执行。
在一些实施例中,可以利用分片锁标识来表示分片的状态,即,可以基于分片锁标识确定分片处于加锁状态还是处于解锁状态;例如,参照图1B,分片信息中的lock_flag为分片锁标识;在一些实施例中,可以设置分片锁对应的令牌(token)信息,图1B中,分片信息中的item_lock_token表示锁的令牌信息。
可以看出,本申请实施例可以通过加锁的形式抢占执行目标任务的分片,从而,可以实现目标任务的各分片的协调执行。
在一些实施例中,利用至少一个应用实例对目标任务的分片进行加锁的形式,抢占执行所述目标任务的分片,包括:
确定抢占所述目标任务的任意一个分片的目标应用实例;
在所述任意一个分片处于未加锁状态,或者目标应用实例处于不可用状态,或者所述任意一个分片的加锁状态的时长超过第二预设时长时,利用目标应用实例对所述任意一个分片进行加锁,执行所述任意一个分片。
本申请实施例中,当目标应用实例所在设备处于下线或宕机状态时,可以认为目标应用实例处于不可用状态。
本申请实施例中,第二预设时长可以根据实际需求设置,当任意一个分片的加锁状态的时长超过第二预设时长时,可以认为任意一个分片的加锁状态是不合理的状态,即认为为任意一个分片的加锁状态超时。
参照图4,分片的加锁流程可以包括:
查询定时任务的锁标识,从而判断定时任务是否处于加锁状态;这里,处于加锁状态的定时任务表示不能被执行的任务;在图1B中,定时任务的信息中的lock_flag为定时任务的锁标识
在定时任务处于加锁状态时,可以直接结束流程;在定时任务处于解锁状态时,可以判断定时任务的任意一个分片是否处于未加锁状态、目标应用实例是否处于不可用状态,或者任意一个分片的加锁状态是否超时;在所述任意一个分片处于未加锁状态,或者目标应用实例处于不可用状态,或者所述任意一个分片的加锁状态的时长超过第二预设时长时,利用目标应用实例对所述任意一个分片进行加锁,执行原子操作;在所述任意一个分片处于加锁状态,且目标应用实例处于可用状态,且所述任意一个分片的加锁状态的时长未超过第二预设时长时,可以直接结束流程。
图4中的原子操作包括:对分片进行加锁、确定应用实例的IP和PID、以及刷入分片令牌信息等步骤。
可以看出,在所述任意一个分片处于未加锁状态,通过对分片进行加锁可以使应用实例抢占执行分片;在目标应用实例处于不可用状态,或者所述任意一个分片的加锁状态的时长超过第二预设时长时,说明分片不能被应用实例正常执行,此时通过重新加锁,有利于重新被应用实例执行。
参照图5,分片的解锁流程可以包括:
查询分片的锁标识,从而判断分片是否处于加锁状态;记录分片的状态,并结束流程;在分片处于加锁状态时,判断当前查询的分片的令牌是否为分片自身的令牌,如果否,则记录分片的状态,例如,可以记录错误信息,在记录分片的状态后,可以结束流程。
如果当前查询的分片的令牌是分片自身的令牌,则执行原子操作,然后结束流程。
图5中的原子操作可以包括:对分片进行解锁、清除应用实例的IP和PID、以及清除分片令牌信息等步骤。
本申请实施例中,原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束。
在一些实施例中,在至少一个应用实例中的应用实例启动时,可以在至少一个定时任务中筛选出符合第二设定条件的至少一个第一任务,第二设定条件包括:第一任务的下次执行时间的值早于当前时间且第一任务未处于正在执行状态;
对所述至少一个第一任务进行加锁,更新所述至少一个第一任务的下次执行时间的值;其中,处于加锁状态的所述第一任务表示不能被执行的任务;
在更新所述至少一个第一任务的下次执行时间的值后,对所述至少一个第一任务进行解锁。
可以理解地,由于在第一任务的下次执行时间到期时,会执行第一任务;因而,第一任务的下次执行时间的值早于当前时间可能是由于应用实例未启动导致的情况,在这种情况下通常第一任务未处于正在执行状态;进而,在第一任务的下次执行时间的值早于当前时间且第一任务未处于正在执行状态,通过对第一任务进行加锁,有利于执行更新个第一任务的下次执行时间的值的步骤;可以看出,本申请实施例可以在应用实例启动时,通过筛选第一任务并对第一任务进行加锁,实现第一任务的下次执行时间的值的更新,从而,在应用实例启动的情况下,按照更新后的第一任务的下次执行时间的值,准确且及时地进行任务执行。
在一些实施例中,更新至少一个第一任务的下次执行时间的值,可以包括:确定上一次得出的第一任务的下次执行时间的值与第一数值的较大值,将较大值确定为更新后的第一任务的下次执行时间的值;其中,第一数值表示:以当前时间为基准,根据第一任务的下次任务计划信息,更新的第一任务的下次执行时间的值。
也就是说,本申请实施例中,可以根据公式(3)计算得出更新后的第一任务的下次执行时间的值A’。
A’=Max(A,calculateNextTriggerTime(NOW,CRON)) (3)
其中,A表示上一次得出的第一任务的下次执行时间的值,calculateNextTriggerTime(NOW,CRON)表示第一数值,Max()表示求最大值。
本申请实施例中,按照公式(3)计算更新后的第一任务的下次执行时间的值,可以尽量延续原有的任务执行策略,兼容短时重启的场景,同时也可以应用于长时间停机时的任务重新开始场景。
在一些实施例中,还可以更新第一任务的上次执行时间的值,更新后第一任务的上次执行时间的值为当前时间。
可以看出,本申请实施例中,可以在应用实例启动的情况下,对由于应用实例在未启动时不能执行的第一任务,重新更新执行下次执行时间,按照更新后的第一任务的下次执行时间的值,可以准确且及时地进行第一任务的执行。可以在应用实例所处设备出现宕机或其它故障的情况下,恢复定时任务调度的正确运行机制。
在一些实施例中,在更新至少一个第一任务的下次执行时间的值后,在对至少一个第一任务进行解锁之前,可以在确定所述第一任务满足需要进行重分片的条件时,对所述第一任务进行重分片。
本申请实施例中,需要进行重分片的条件可以根据实际需求设置,例如,如果任务添加有重分片标识,则说明任务满足需要进行重分片的条件。
在一些实施例中,在对第一任务进行重分片后,可以根据第一任务的下次执行时间的值和上次执行时间的值,更新第一任务的分片的下次执行时间的值和上次执行时间的值。
可以看出,本申请实施例可以在应用实例启动的情况下,对由于应用实例在未启动时不能执行的第一任务,在满足需要进行重分片的条件的情况下,重新进行分片,从而,按照重分片后的信息,可以准确地进行分片的执行。
在一些实施例中,在至少一个应用实例中的应用实例启动时,在至少一个定时任务中筛选出符合第三设定条件的至少一个第二任务,第三设定条件包括:所述第二任务的下次执行时间的值早于当前时间且所述第一任务处于正在执行状态;
生成针对所述至少一个第二任务的异常预警信息,并确定需要对所述至少一个第二任务进行重分片。
可以理解地,由于在第二任务的下次执行时间到期时,会执行第二任务;因而,第二任务的下次执行时间的值早于当前时间可能是由于应用实例未启动导致的情况,在这种情况下通常第二任务未处于正在执行状态;进而,在第二任务处于正在执行状态时,说明第二任务的执行出现异常,此时,通过生成异常预警信息,有利于及时对第二任务进行维护;并且,通过对第二任务进行重分片,有利于使第二任务正确执行。
下面通过图6示例性地说明本申请实施例中应用实例启动时分片信息检查的流程示意图,图6中,在应用实例启动时,可以查询定时任务的列表;在定时任务的列表中筛选出下次执行时间的值早于当前时间的任务;针对筛选出的每个任务,可以判断是否正在执行。
可以理解地,由于任务的下次执行时间的值早于当前时间可能是由于应用实例未启动导致的情况,因而任务正在执行的情况是一种不符合预期的情况,因此,当任务正在执行时,可以针对任务添加重分片标识,表征任务需要进行重分片;在针对任务添加重分片标识后,可以结束分片信息检查的流程。
当筛选出的任务并未正在执行时,可以对筛选出的任务进行加锁,更新筛选出的任务的执行时间;在更新筛选出的任务的执行时间后,可以判断是否对筛选出的任务进行重分片,在需要对筛选出的任务进行重分片时,可以在对筛选出的任务进行重分片后,更新分片的执行时间;在不需要对筛选出的任务进行重分片时,可以直接更新分片的执行时间。
在更新分片的执行时间后,可以对筛选出的任务进行解锁,并结束流程。
这里,任务的执行时间可以包括任务的上次执行时间的值和下次执行时间的值;分片的执行时间可以包括分片的上次执行时间的值和下次执行时间的值。
在一些实施例中,可以根据预先配置的任务分片信息对当前的任务分片信息进行校对,在校对一致的情况下,说明需要对任务进行重分片,在校对不一致的情况下,说明不需要对任务进行重分片。
在一些实施例中,在更新分片的执行时间后,可以将更新后的分片的执行时间记入图1B所示的记录表中。
在一些实施例中,在对执行时间的精度要求较低的场景中,无需按照图6所示的流程判断任务的下次执行时间的值是否早于当前时间。
在一些实施例中,可以在更新至少一个定时任务的下次执行时间的值时,将至少一个定时任务的上次执行时间的值更新为上一次得出的至少一个定时任务的下次执行时间的值;
根据所述至少一个定时任务的上次执行时间的值,确定所述至少一个定时任务的执行状态。
示例性地,在i取大于1的整数时,第i次得出的定时任务的上次执行时间的值Pi为第i-1次得出的定时任务的下次执行时间的值Ni-1。
示例性地,在定时任务的上次执行时间的值晚于当前时间时,说明定时任务未被执行,在定时任务的上次执行时间的值早于当前时间时,说明定时任务已经被执行。
在相关技术中,为了确定定时任务是否被执行,需要在数据库中通过回溯得出定时任务的上次执行时间的真实值,这样,在一定程度上造成了资源损耗;而在本申请实施例中,定时任务的上次执行时间为上一次得出的定时任务的下次执行时间,进而可以根据上一次得出的定时任务的下次执行时间,确定定时任务的执行状态,与相关技术的方案相比,由于无需记录定时任务的上次执行时间的真实值,也无需在数据库中回溯定时任务的上次执行时间的真实值,在一定程度上降低了资源损耗和性能损失。在不需要获取任务的报表的情况下,甚至不需要记录任务的分片的执行记录。
在一些实施例中,上述定时任务的执行方法还可以包括:
在至少一个定时任务中确定未处于正在执行状态的第三任务;
对第三任务进行加锁,其中,处于加锁状态的所述第三任务表示不能被执行的任务;
在第三任务的下次任务计划信息被修改时,当前时间为基准,根据第三任务的修改后的下次任务计划信息,更新第三任务的下次执行时间的值;将第三任务的上次执行时间的值更新为当前时间。
在第三任务的下次任务计划信息未被修改时,确定上一次得出的第三任务的下次执行时间的值与第二数值的较大值,将较大值确定为更新后的第三任务的下次执行时间的值;将第三任务的上次执行时间的值更新为当前时间或保持第三任务的上次执行时间的值不变;其中,第二数值表示:以当前时间为基准,根据第三任务的下次任务计划信息,更新的第三任务的下次执行时间的值。
本申请实施例中,在第三任务的下次任务计划信息被修改时,可以根据公式(4)计算得出更新后的第三任务的下次执行时间的值B。
B=calculateNextTriggerTime(NOW,CRON)) (4)
本申请实施例中,在第三任务的下次任务计划信息未被修改时,可以根据公式(5)计算得出更新后的第三任务的下次执行时间的值C’。
C’=Max(C,B) (5)
其中,B表示上述第二数值,C表示上一次得出的第三任务的下次执行时间的值。
可以看出,本申请实施例在第三任务的下次任务计划信息被修改或未被修改时,均可以对第三任务的上次执行时间和下次执行时间进行修改。
在一些实施例中,上述定时任务的执行方法还可以包括:
在第三任务的分片信息被修改时,对第三任务进行重分片,根据第三任务的下次执行时间和上次执行时间的值,更新重分片后的第三任务的分片的下次执行时间和上次执行时间的值;
在第三任务的分片信息未被修改时,根据第三任务的下次执行时间和上次执行时间的值,更新第三任务的分片的下次执行时间和上次执行时间的值。
这里,第三任务的分片信息可以包括分片数量或其它分片参数;在第三任务的分片信息被修改时,可以对第三任务进行重分片,将重分片后的分片的上次执行时间和下次执行时间的值,更新为分片所属的第三任务的上次执行时间和下次执行时间的值。
可以看出,本申请实施例在第三任务的分片信息被修改或未被修改时,均可以对第三任务的分片的上次执行时间和下次执行时间进行修改。
下面通过图7示例性地说明本申请实施例中修改任务和分片的执行时间的流程图,图7中,判断任务是否正在执行,如果是,则不允许修改CRON表达式或任务的分片信息,如果否,则对任务进行加锁;这里,对任务进行加锁的目的在于:为了避免在重分片的过程中,部分分片执行造成的数据混乱问题,可以阻止并发的编辑及编辑过程中的任务执行;在每次执行任务的分片时,均需要判断任务的加锁标识。
参照图7,在对任务进行加锁后,判断是否修改了CRON表达式,如果是,则更新第三任务的上次执行时间和下次执行时间的值;如果否,则更新第三任务的上次执行时间和下次执行时间的值;在未对CRON表达式进行修改和对C RON表达式进行修改的情况下,更新第三任务的上次执行时间和下次执行时间的值的实现方式已经在前述记载的内容中作出说明,这里不再赘述。
在更新第三任务的上次执行时间和下次执行时间的值后,判断是否修改了第三任务的分片信息,如果修改了第三任务的分片信息,则对第三任务进行重分片,并更新分片的上次执行时间和下次执行时间的值;然后,对第三任务进行解锁。如果并未对修改第三任务的分片信息,则可以直接更新分片的上次执行时间和下次执行时间的值,然后,对第三任务进行解锁。
在一些实施例中,上述定时任务的执行方法还可以包括:预先获取灰度执行信息,灰度执行信息表示用于执行至少一个定时任务的分片的应用实例的灰度发布配置信息;
相应地,在所述目标任务的分片到期时,执行所述目标任务的分片,包括:在目标任务的分片到期时,根据灰度执行信息,执行所述目标任务的分片。
示例性地,灰度发布信息可以包括:用于执行至少一个定时任务的分片的应用实例的灰度发布配置信息。
示例性地,灰度发布信息可以包括用于执行至少一个定时任务的分片的应用实例的IP。
示例性地,客户端可以根据用于执行至少一个定时任务的分片的应用实例所处在的互联网数据中心(Internet Data Center,IDC)等环境参数,配合灰度执行信息,判断是否加载定时任务的Bean组件。
在相关技术中,针对定时任务不支持灰度发布,而在本申请实施例中,可以根据灰度执行信息,确定执行定时任务的分片的应用实例。
在一些实施例中,在根据上一次得出的至少一个定时任务的下次执行时间的值,在所述至少一个定时任务中筛选出符合设定条件的目标任务之前,上述定时任务的执行方法还可以包括:
确定用于执行定时任务的每个应用实例的系统时间与预设标准时间的差值,在所述差值大于时长阈值时,生成提示信息。
本申请实施例中,对于使用DB的业务系统而言,预设标准时间为DB的系统时间,这样,可以得出执行定时任务的每个应用实例的系统时间与DB的标准时间的差值。
可以看出,在差值大于时长阈值时,通过生成提示信息,有利于避免应用实例的不正确部署,降低系统时间不一致导致的分片执行时间差异的出现次数。
在一些实施例中,上述定时任务的执行方法还可以包括:预先获取所述至少一个定时任务中每个定时任务的任务执行条件;
相应地,所述在所述目标任务的分片到期时,执行所述目标任务的分片,包括:在所述目标任务的分片到期时,且满足所述目标任务的任务执行条件时,执行所述目标任务的分片。
示例性地,上述任务执行条件可以包括:为执行所述每个定时任务所需完成的前置任务。
示例性地,任务E的执行依赖于任务D的执行完成,则任务D是任务E的前置任务,任务E的任务执行条件包括:成功执行任务D。任务E执行后需要触发执行任务F,即,任务F的执行依赖于任务E的执行完成,则任务E是任务F的前置任务,任务F的任务执行条件包括:成功执行任务E。
可以理解地,在实际场景中,不同任务会出现任务依赖的情况,因而,通过设置任务执行条件,有利于实现任务间的协作。
下面通过附图对本申请实施例的定时任务的执行方法的流程进行示例性说明,图8为本申请实施例的另一种定时任务的执行方法的流程图,如图8所示,该流程可以包括:
筛选到期任务的第一分片;检查到期任务的锁标识,根据到期任务的锁标识判断到期任务是否处于加锁状态,在到期任务处于加锁状态时,等待下次执行到期任务。在到期任务处于加锁状态是,判断是否成功获取分片锁标识。
在成功获取到分片锁标识时,对分片进行加锁,在未成功获取到分片锁标识时,对分片添加misfire标识,然后等待下次执行相应的分片;这里,添加misfire标识的分片表示错过补偿的分片。
在对分片进行加锁后,更新到期任务的下次执行时间的值,更新到期任务的上次执行时间的值,记录分片的状态为:执行中;然后,执行分片。
获取分片执行结果,在分片执行成功的情况下,记录分片状态为:成功,然后,执行解锁分片的步骤。在分片执行失败的情况下,记录分片状态为:失败,并判断是否重试,即判断是否重新执行分片。
在需要重新执行分片的情况下,返回至执行分片的步骤;在不需要重新执行分片的情况下,执行解锁分片的步骤。
在执行解锁分片的步骤后,可以判断是否仍有待执行的分片,如果有待执行的分片,则返回至获取分片锁标识的步骤。如果没有待执行的分片,则判断到期任务是否具有错过补偿的分片,如果具有错过补偿的分片,则返回至筛选到期任务的第一分片的步骤,如果不具有错过补偿的分片,则等待下次执行到期任务。
在一些实施例中,可以在每个巡查周期内,按照图8所示的流程实施定时任务的执行过程。
在前述实施例提出的定时任务的执行方法的基础上,本申请实施例还提出了一种定时任务的执行装置;图9为本申请实施例的定时任务的执行装置的一个可选的组成结构示意图,如图9所示,该定时任务的执行装置900可以包括:
第一处理模块901,用于在确定至少一个定时任务的下次执行时间的初始值后,根据上一次得出的至少一个定时任务的下次执行时间的值,在所述至少一个定时任务中筛选出符合第一设定条件的目标任务;所述第一设定条件包括:所述目标任务的下次执行时间处于从当前时间开始的第一预设时长内或者所述目标任务的下次执行时间晚于所述当前时间;
第二处理模块902,用于以所述上一次得出的至少一个定时任务的下次执行时间的值为基准,根据至少一个定时任务的下次任务计划信息,更新所述至少一个定时任务的下次执行时间的值,并将所述至少一个定时任务的上次执行时间的值更新为所述上一次得出的至少一个定时任务的下次执行时间的值;
第三处理模块903,用于在所述目标任务的分片到期时,执行所述目标任务的分片,根据目标任务的下次执行时间更新所述目标任务的分片的下次执行时间。
在本申请的一些实施例中,所述第三处理模块903,用于在所述目标任务的分片到期时,执行所述目标任务的分片,包括:
在所述目标任务的分片到期时,利用至少一个应用实例抢占执行所述目标任务的分片,所述应用实例表示用于执行任务的分片的服务。
在本申请的一些实施例中,所述第三处理模块903,用于利用至少一个应用实例抢占执行所述目标任务的分片,包括:
利用所述至少一个应用实例对所述目标任务的分片进行加锁的形式,抢占执行所述目标任务的分片;其中,处于加锁状态的目标任务的分片表示不能被其它应用实例执行的分片;
所述第三处理模块903,还用于在所述目标任务的任意一个分片执行完成后,对所述任意一个分片进行解锁。
在本申请的一些实施例中,所述第三处理模块903,用于利用所述至少一个应用实例对所述目标任务的分片进行加锁的形式,抢占执行所述目标任务的分片,包括:
确定抢占所述目标任务的任意一个分片的目标应用实例;
在所述任意一个分片处于未加锁状态,或者所述目标应用实例处于不可用状态,或者所述任意一个分片的加锁状态的时长超过第二预设时长时,利用所述目标应用实例对所述任意一个分片进行加锁,执行所述任意一个分片。
在本申请的一些实施例中,所述第三处理模块903,还用于:
在所述至少一个应用实例中的应用实例启动时,在所述至少一个定时任务中筛选出符合第二设定条件的至少一个第一任务,所述第二设定条件包括:所述第一任务的下次执行时间的值早于当前时间且所述第一任务未处于正在执行状态;
对所述至少一个第一任务进行加锁,更新所述至少一个第一任务的下次执行时间的值;其中,处于加锁状态的所述第一任务表示不能被执行的任务;
在更新所述至少一个第一任务的下次执行时间的值后,对所述至少一个第一任务进行解锁。
在本申请的一些实施例中,所述第三处理模块903,用于更新所述至少一个第一任务的下次执行时间的值,包括:
确定上一次得出的所述第一任务的下次执行时间的值与第一数值的较大值,将所述较大值确定为更新后的所述第一任务的下次执行时间的值;其中,所述第一数值表示:以当前时间为基准,根据所述第一任务的下次任务计划信息,更新的所述第一任务的下次执行时间的值。
在本申请的一些实施例中,所述第三处理模块903,还用于在更新所述至少一个第一任务的下次执行时间的值后,在对所述至少一个第一任务进行解锁之前,在确定所述第一任务满足需要进行重分片的条件时,对所述第一任务进行重分片。
在本申请的一些实施例中,所述第三处理模块903,还用于:
在所述至少一个应用实例中的应用实例启动时,在所述至少一个定时任务中筛选出符合第三设定条件的至少一个第二任务,所述第三设定条件包括:所述第二任务的下次执行时间的值早于当前时间且所述第一任务处于正在执行状态;
生成针对所述至少一个第二任务的异常预警信息,并确定需要对所述至少一个第二任务进行重分片。
在本申请的一些实施例中,所述第三处理模块903,还用于:预先获取灰度执行信息,所述灰度执行信息表示用于执行所述至少一个定时任务的分片的应用实例的灰度发布配置信息;
所述第三处理模块903,用于在所述目标任务的分片到期时,执行所述目标任务的分片,包括:在所述目标任务的分片到期时,根据所述灰度执行信息,执行所述目标任务的分片。
在本申请的一些实施例中,所述灰度发布信息包括:用于执行所述至少一个定时任务的分片的应用实例的灰度发布配置信息。
在本申请的一些实施例中,所述第三处理模块903,还用于在根据上一次得出的至少一个定时任务的下次执行时间的值,在所述至少一个定时任务中筛选出符合设定条件的目标任务之前,确定用于执行定时任务的每个应用实例的系统时间与预设标准时间的差值,在所述差值大于时长阈值时,生成提示信息。
在本申请的一些实施例中,所述下次任务计划信息包括CRON表达式;
所述第二处理模块902,用于以所述上一次得出的至少一个定时任务的下次执行时间的值为基准,根据至少一个定时任务的下次任务计划信息,更新所述至少一个定时任务的下次执行时间的值,包括:
将所述上一次得出的至少一个定时任务的下次执行时间的值作为所述CRON表达式中的参数,根据所述CRON表达式的计算结果更新所述至少一个定时任务的下次执行时间的值。
在本申请的一些实施例中,所述第二处理模块902,还用于在更新所述至少一个定时任务的下次执行时间的值时,将所述至少一个定时任务的上次执行时间的值更新为所述上一次得出的至少一个定时任务的下次执行时间的值;
根据所述至少一个定时任务的上次执行时间的值,确定所述至少一个定时任务的执行状态。
在本申请的一些实施例中,所述第二处理模块902,还用于:
在所述至少一个定时任务中确定未处于正在执行状态的第三任务;
对所述第三任务进行加锁,其中,处于加锁状态的所述第三任务表示不能被执行的任务;
在所述第三任务的下次任务计划信息被修改时,当前时间为基准,根据所述第三任务的修改后的下次任务计划信息,更新所述第三任务的下次执行时间的值;将所述第三任务的上次执行时间的值更新为当前时间;
在所述第三任务的下次任务计划信息未被修改时,确定上一次得出的所述第三任务的下次执行时间的值与第二数值的较大值,将所述较大值确定为更新后的所述第三任务的下次执行时间的值;将所述第三任务的上次执行时间的值更新为当前时间或保持所述第三任务的上次执行时间的值不变;其中,所述第二数值表示:以当前时间为基准,根据所述第三任务的下次任务计划信息,更新的所述第三任务的下次执行时间的值。
在本申请的一些实施例中,所述第二处理模块902,还用于:
在所述第三任务的分片信息被修改时,对所述第三任务进行重分片,根据所述第三任务的下次执行时间和上次执行时间的值,更新重分片后的第三任务的分片的下次执行时间和上次执行时间的值;
在所述第三任务的分片信息未被修改时,根据所述第三任务的下次执行时间和上次执行时间的值,更新第三任务的分片的下次执行时间和上次执行时间的值。
在本申请的一些实施例中,所述第三处理模块903,还用于:预先获取所述至少一个定时任务中每个定时任务的任务执行条件;
所述第三处理模块903,用于在所述目标任务的分片到期时,执行所述目标任务的分片,包括:在所述目标任务的分片到期时,且满足所述目标任务的任务执行条件时,执行所述目标任务的分片。
在本申请的一些实施例中,所述任务执行条件包括:为执行所述每个定时任务所需完成的前置任务。
在实际应用中,第一处理模块901、第二处理模块902和第三处理模块903均可以利用电子设备的处理器实现,上述处理器可以是ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作限制。
需要说明的是,以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是终端、服务器等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例再提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,该计算机可执行指令用于实现本申请实施例提供的任意一种定时任务的执行方法。
相应的,本申请实施例再提供一种计算机存储介质,所述计算机存储介质上存储有计算机可执行指令,该计算机可执行指令用于实现上述实施例提供的任意一种定时任务的执行方法。
本申请实施例还提供一种电子设备,图10为本申请实施例提供的电子设备的一个可选的组成结构示意图,如图10所示,所述电子设备1000包括:
存储器1001,用于存储可执行指令;
处理器1002,用于执行所述存储器1001中存储的可执行指令时,实现上述任意一种定时任务的执行方法。
上述处理器1002可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。
上述计算机可读存储介质/存储器可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一些实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一些实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本申请实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得设备自动测试线执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (20)
1.一种定时任务的执行方法,其特征在于,所述方法包括:
在确定至少一个定时任务的下次执行时间的初始值后,根据上一次得出的至少一个定时任务的下次执行时间的值,在所述至少一个定时任务中筛选出符合第一设定条件的目标任务;所述第一设定条件包括:所述目标任务的下次执行时间处于从当前时间开始的第一预设时长内或者所述目标任务的下次执行时间晚于所述当前时间;其中,所述目标任务包括至少一个分片;
以所述上一次得出的至少一个定时任务的下次执行时间的值为基准,根据至少一个定时任务的下次任务计划信息,更新所述至少一个定时任务的下次执行时间的值;
在所述目标任务的至少一个分片到期时,执行所述目标任务的至少一个分片,根据目标任务的下次执行时间更新所述目标任务的至少一个分片的下次执行时间。
2.根据权利要求1所述的方法,其特征在于,所述在所述目标任务的至少一个分片到期时,执行所述目标任务的至少一个分片,包括:
在所述目标任务的至少一个分片到期时,利用至少一个应用实例抢占执行所述目标任务的至少一个分片,所述应用实例表示用于执行任务的分片的服务。
3.根据权利要求2所述的方法,其特征在于,所述利用至少一个应用实例抢占执行所述目标任务的至少一个分片,包括:
利用所述至少一个应用实例对所述目标任务的至少一个分片进行加锁的形式,抢占执行所述目标任务的至少一个分片;其中,处于加锁状态的目标任务的分片表示不能被其它应用实例执行的分片;
所述方法还包括:在所述目标任务的任意一个分片执行完成后,对所述任意一个分片进行解锁。
4.根据权利要求3所述的方法,其特征在于,所述利用所述至少一个应用实例对所述目标任务的至少一个分片进行加锁的形式,抢占执行所述目标任务的至少一个分片,包括:
确定抢占所述目标任务的任意一个分片的目标应用实例;
在所述任意一个分片处于未加锁状态,或者所述目标应用实例处于不可用状态,或者所述任意一个分片的加锁状态的时长超过第二预设时长时,利用所述目标应用实例对所述任意一个分片进行加锁,执行所述任意一个分片。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述至少一个应用实例中的应用实例启动时,在所述至少一个定时任务中筛选出符合第二设定条件的至少一个第一任务,所述第二设定条件包括:所述第一任务的下次执行时间的值早于当前时间且所述第一任务未处于正在执行状态;
对所述至少一个第一任务进行加锁,更新所述至少一个第一任务的下次执行时间的值;其中,处于加锁状态的所述第一任务表示不能被执行的任务;
在更新所述至少一个第一任务的下次执行时间的值后,对所述至少一个第一任务进行解锁。
6.根据权利要求5所述的方法,其特征在于,所述更新所述至少一个第一任务的下次执行时间的值,包括:
确定上一次得出的所述第一任务的下次执行时间的值与第一数值的较大值,将所述较大值确定为更新后的所述第一任务的下次执行时间的值;其中,所述第一数值表示:以当前时间为基准,根据所述第一任务的下次任务计划信息,更新的所述第一任务的下次执行时间的值。
7.根据权利要求5所述的方法,其特征在于,在更新所述至少一个第一任务的下次执行时间的值后,在对所述至少一个第一任务进行解锁之前,所述方法还包括:
在确定所述第一任务满足需要进行重分片的条件时,对所述第一任务进行重分片。
8.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述至少一个应用实例中的应用实例启动时,在所述至少一个定时任务中筛选出符合第三设定条件的至少一个第二任务,所述第三设定条件包括:所述第二任务的下次执行时间的值早于当前时间且第一任务处于正在执行状态;
生成针对所述至少一个第二任务的异常预警信息,并确定需要对所述至少一个第二任务进行重分片。
9.根据权利要求2所述的方法,其特征在于,所述方法还包括:预先获取灰度执行信息,所述灰度执行信息表示用于执行所述至少一个定时任务的分片的应用实例的灰度发布配置信息;
相应地,所述在所述目标任务的分片到期时,执行所述目标任务的分片,包括:在所述目标任务的分片到期时,根据所述灰度执行信息,执行所述目标任务的分片。
10.根据权利要求9所述的方法,其特征在于,所述灰度发布信息包括:用于执行所述至少一个定时任务的分片的应用实例的灰度发布配置信息。
11.根据权利要求2所述的方法,其特征在于,在根据上一次得出的至少一个定时任务的下次执行时间的值,在所述至少一个定时任务中筛选出符合设定条件的目标任务之前,所述方法还包括:
确定用于执行定时任务的每个应用实例的系统时间与预设标准时间的差值,在所述差值大于时长阈值时,生成提示信息。
12.根据权利要求1所述的方法,其特征在于,所述下次任务计划信息包括CRON表达式;
相应地,所述以所述上一次得出的至少一个定时任务的下次执行时间的值为基准,根据至少一个定时任务的下次任务计划信息,更新所述至少一个定时任务的下次执行时间的值,包括:
将所述上一次得出的至少一个定时任务的下次执行时间的值作为所述CR ON表达式中的参数,根据所述CRON表达式的计算结果更新所述至少一个定时任务的下次执行时间的值。
13.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在更新所述至少一个定时任务的下次执行时间的值时,将所述至少一个定时任务的上次执行时间的值更新为所述上一次得出的至少一个定时任务的下次执行时间的值;
根据所述至少一个定时任务的上次执行时间的值,确定所述至少一个定时任务的执行状态。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
在所述至少一个定时任务中确定未处于正在执行状态的第三任务;
对所述第三任务进行加锁,其中,处于加锁状态的所述第三任务表示不能被执行的任务;
在所述第三任务的下次任务计划信息被修改时,当前时间为基准,根据所述第三任务的修改后的下次任务计划信息,更新所述第三任务的下次执行时间的值;将所述第三任务的上次执行时间的值更新为当前时间;
在所述第三任务的下次任务计划信息未被修改时,确定上一次得出的所述第三任务的下次执行时间的值与第二数值的较大值,将所述较大值确定为更新后的所述第三任务的下次执行时间的值;将所述第三任务的上次执行时间的值更新为当前时间或保持所述第三任务的上次执行时间的值不变;其中,所述第二数值表示:以当前时间为基准,根据所述第三任务的下次任务计划信息,更新的所述第三任务的下次执行时间的值。
15.根据权利要求14所述的方法,其特征在于,所述方法还包括:
在所述第三任务的分片信息被修改时,对所述第三任务进行重分片,根据所述第三任务的下次执行时间和上次执行时间的值,更新重分片后的第三任务的分片的下次执行时间和上次执行时间的值;
在所述第三任务的分片信息未被修改时,根据所述第三任务的下次执行时间和上次执行时间的值,更新第三任务的分片的下次执行时间和上次执行时间的值。
16.根据权利要求1所述的方法,其特征在于,所述方法还包括:预先获取所述至少一个定时任务中每个定时任务的任务执行条件;
相应地,所述在所述目标任务的分片到期时,执行所述目标任务的分片,包括:在所述目标任务的分片到期时,且满足所述目标任务的任务执行条件时,执行所述目标任务的分片。
17.根据权利要求16所述的方法,其特征在于,所述任务执行条件包括:为执行所述每个定时任务所需完成的前置任务。
18.一种定时任务的执行装置,其特征在于,所述装置包括:
第一处理模块,用于在确定至少一个定时任务的下次执行时间的初始值后,根据上一次得出的至少一个定时任务的下次执行时间的值,在所述至少一个定时任务中筛选出符合第一设定条件的目标任务;所述第一设定条件包括:所述目标任务的下次执行时间处于从当前时间开始的第一预设时长内或者所述目标任务的下次执行时间晚于所述当前时间;其中,所述目标任务包括至少一个分片;
第二处理模块,用于以所述上一次得出的至少一个定时任务的下次执行时间的值为基准,根据至少一个定时任务的下次任务计划信息,更新所述至少一个定时任务的下次执行时间的值;
第三处理模块,用于在所述目标任务的至少一个分片到期时,执行所述目标任务的至少一个分片,根据目标任务的下次执行时间更新所述目标任务的至少一个分片的下次执行时间。
19.一种电子设备,其特征在于,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至17任一项所述的定时任务的执行方法。
20.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时,实现权利要求1至17任一项所述的定时任务的执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110214331.5A CN112819600B (zh) | 2021-02-25 | 2021-02-25 | 定时任务的执行方法、装置、设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110214331.5A CN112819600B (zh) | 2021-02-25 | 2021-02-25 | 定时任务的执行方法、装置、设备及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112819600A CN112819600A (zh) | 2021-05-18 |
CN112819600B true CN112819600B (zh) | 2024-06-07 |
Family
ID=75865678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110214331.5A Active CN112819600B (zh) | 2021-02-25 | 2021-02-25 | 定时任务的执行方法、装置、设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112819600B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835859B (zh) * | 2021-09-24 | 2023-12-26 | 成都质数斯达克科技有限公司 | 一种任务调度方法、装置、设备及可读存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105096122A (zh) * | 2014-04-16 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 一种分片式交易匹配方法和装置 |
CN107548039A (zh) * | 2016-06-24 | 2018-01-05 | 中兴通讯股份有限公司 | 一种短消息重试处理方法及装置、系统 |
CN107748695A (zh) * | 2017-10-24 | 2018-03-02 | 平安科技(深圳)有限公司 | 定时任务处理方法、装置、存储介质和计算机设备 |
CN109558230A (zh) * | 2018-11-23 | 2019-04-02 | 北京百分点信息科技有限公司 | 一种分布式定时任务调度系统及方法 |
CN109947568A (zh) * | 2019-03-15 | 2019-06-28 | 深圳市牛鼎丰科技有限公司 | 定时任务处理方法、系统、计算机设备及存储介质 |
CN110262878A (zh) * | 2019-05-06 | 2019-09-20 | 平安科技(深圳)有限公司 | 定时任务处理方法、装置、设备及计算机可读存储介质 |
CN111309372A (zh) * | 2020-01-15 | 2020-06-19 | 中国平安财产保险股份有限公司 | 定时任务执行方法、装置、计算机设备和存储介质 |
CN111400015A (zh) * | 2020-03-24 | 2020-07-10 | 深圳前海微众银行股份有限公司 | 一种任务调度方法及装置 |
CN111666141A (zh) * | 2020-06-11 | 2020-09-15 | 深圳前海微众银行股份有限公司 | 任务调度方法、装置、设备及计算机存储介质 |
CN111722934A (zh) * | 2020-06-12 | 2020-09-29 | 南京甄视智能科技有限公司 | 分布式定时任务处理方法及系统 |
CN112148505A (zh) * | 2020-09-18 | 2020-12-29 | 京东数字科技控股股份有限公司 | 数据跑批系统、方法、电子设备和存储介质 |
WO2021022933A1 (zh) * | 2019-08-06 | 2021-02-11 | 平安科技(深圳)有限公司 | 多任务预测方法、装置、电子设备及存储介质 |
-
2021
- 2021-02-25 CN CN202110214331.5A patent/CN112819600B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105096122A (zh) * | 2014-04-16 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 一种分片式交易匹配方法和装置 |
CN107548039A (zh) * | 2016-06-24 | 2018-01-05 | 中兴通讯股份有限公司 | 一种短消息重试处理方法及装置、系统 |
CN107748695A (zh) * | 2017-10-24 | 2018-03-02 | 平安科技(深圳)有限公司 | 定时任务处理方法、装置、存储介质和计算机设备 |
CN109558230A (zh) * | 2018-11-23 | 2019-04-02 | 北京百分点信息科技有限公司 | 一种分布式定时任务调度系统及方法 |
CN109947568A (zh) * | 2019-03-15 | 2019-06-28 | 深圳市牛鼎丰科技有限公司 | 定时任务处理方法、系统、计算机设备及存储介质 |
CN110262878A (zh) * | 2019-05-06 | 2019-09-20 | 平安科技(深圳)有限公司 | 定时任务处理方法、装置、设备及计算机可读存储介质 |
WO2021022933A1 (zh) * | 2019-08-06 | 2021-02-11 | 平安科技(深圳)有限公司 | 多任务预测方法、装置、电子设备及存储介质 |
CN111309372A (zh) * | 2020-01-15 | 2020-06-19 | 中国平安财产保险股份有限公司 | 定时任务执行方法、装置、计算机设备和存储介质 |
CN111400015A (zh) * | 2020-03-24 | 2020-07-10 | 深圳前海微众银行股份有限公司 | 一种任务调度方法及装置 |
CN111666141A (zh) * | 2020-06-11 | 2020-09-15 | 深圳前海微众银行股份有限公司 | 任务调度方法、装置、设备及计算机存储介质 |
CN111722934A (zh) * | 2020-06-12 | 2020-09-29 | 南京甄视智能科技有限公司 | 分布式定时任务处理方法及系统 |
CN112148505A (zh) * | 2020-09-18 | 2020-12-29 | 京东数字科技控股股份有限公司 | 数据跑批系统、方法、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112819600A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8132046B2 (en) | Synchronizing replicas of a database | |
US8151257B2 (en) | Managing different versions of server components regarding compatibility with collaborating servers | |
CN107844343B (zh) | 一种复杂服务端应用系统的升级系统及方法 | |
US8250027B2 (en) | Computer system, database access method, application server, and program | |
JP2001356938A (ja) | コンピュータ識別装置 | |
CN112819600B (zh) | 定时任务的执行方法、装置、设备及计算机存储介质 | |
CN110063042A (zh) | 一种数据库故障的响应方法及其终端 | |
CN108737184B (zh) | 一种容灾系统的管理方法和装置 | |
CN108156203B (zh) | 一种存储系统及存储节点管理方法 | |
CN111694724A (zh) | 分布式表格系统的测试方法、装置、电子设备及存储介质 | |
KR101781527B1 (ko) | 모바일 어플리케이션 검증 방법 및 이를 적용한 단말 | |
CN111324668B (zh) | 数据库数据同步处理方法、装置及存储介质 | |
US7593941B2 (en) | Systems and methods of accessing and updating recorded data | |
CN114185639A (zh) | 一种应用容器扩展引擎平台 | |
CN113672337A (zh) | 一种应用迁移方法、装置、设备及计算机可读存储介质 | |
CN114900531B (zh) | 数据同步方法、装置和系统 | |
CN112394960B (zh) | 业务流量的控制方法、装置、电子设备和计算机存储介质 | |
US20050108194A1 (en) | System for verifying a state of an environment | |
CN112148463B (zh) | 一种业务流程控制方法及装置 | |
CN116663068B (zh) | 联盟链归档方法、相关装置和介质 | |
CN117313856B (zh) | 一种可靠性测试规划系统及方法 | |
WO2023051582A1 (zh) | 虚拟资源信息的同步方法、编排器、电子设备、可读介质 | |
CN115687126A (zh) | 测试账号共享方法及其系统、计算机设备 | |
CN109409040B (zh) | 一种操作系统时间可信度的判定方法及装置 | |
CN118170405A (zh) | 一种感知Pod应用状态自动更新应用配置的方法及装置 |
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 |