CN116820697A - 定时任务调度方法、装置、设备和存储介质 - Google Patents
定时任务调度方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN116820697A CN116820697A CN202210279905.1A CN202210279905A CN116820697A CN 116820697 A CN116820697 A CN 116820697A CN 202210279905 A CN202210279905 A CN 202210279905A CN 116820697 A CN116820697 A CN 116820697A
- Authority
- CN
- China
- Prior art keywords
- task
- target
- scheduling
- time
- scheduler
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 104
- 238000003860 storage Methods 0.000 title claims abstract description 40
- 238000012545 processing Methods 0.000 claims description 28
- 238000013507 mapping Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 abstract description 8
- 238000013473 artificial intelligence Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 12
- 238000012384 transportation and delivery Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000012216 screening Methods 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 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
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供了一种定时任务调度方法、装置、设备和存储介质,涉及计算机技术领域,可以应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景,方法包括通过目标调度器将当前时间片对应的至少一个目标定时任务添加至对应的待处理任务队列,目标调度器为多个调度器中对当前时间片加锁成功的调度器;控制目标调度器更新任务记录中至少一个目标定时任务的调度执行信息;控制目标调度器根据调度状态信息和调度时间信息,在多个历史时间片对应的历史定时任务中检测调度时长超过预设时长的目标超期任务;若检测到目标超期任务且调度辅助状态为空,通过目标调度器将目标超期任务添加至对应的待处理任务队列。本申请能够有效提高定时任务的调度时效性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种定时任务调度方法、装置、设备和存储介质。
背景技术
定时任务是业务开发和应用中常见的任务类型,其应用场景十分广泛,包括定时支付、数据汇总、数据更新和消息发送等场景,如24小时后清理未使用券,12小时后扣费,注册一个月后赠送成长值等。由于定时任务数量较大,在调度过程中会存在遗漏、超期或调度失败的异常调度任务,现有方案通常设置多种类型的调度器,通过一种调度器实时调度任务,通过其它类调度器延迟不同的时长来捞取异常调度任务,如通过即时调度器实时捞取定时任务,通过延时调度器捞取1小时前的异常调度任务,然而该方案通过部署不同类型的调度器进行遗漏和失败任务捞取,时效性较低且增加调度器的维护开销,并且定时任务的调度成功率依赖于延时捞取任务的调度器,可靠性差。
发明内容
本申请提供了一种定时任务调度方法、装置、设备和存储介质,可以显著提高定时任务调度的时效性和可靠性。
一方面,本申请提供了一种定时任务调度方法,所述方法包括:
通过目标调度器将当前时间片对应的至少一个目标定时任务添加至对应的待处理任务队列,其中,所述目标调度器为多个调度器中对所述当前时间片加锁成功的调度器;
控制所述目标调度器更新任务记录中所述至少一个目标定时任务的调度执行信息,其中,所述任务记录中包括多个历史时间片对应的历史定时任务的调度执行信息,所述调度执行信息包括调度状态信息、调度时间信息和调度辅助状态;
控制所述目标调度器根据所述调度状态信息和所述调度时间信息,在所述多个历史时间片对应的历史定时任务中检测调度时长超过预设时长的目标超期任务;
在检测到所述目标超期任务且所述目标超期任务的调度辅助状态为空的情况下,通过所述目标调度器将所述目标超期任务添加至对应的待处理任务队列。
另一方面提供了一种定时任务调度装置,所述装置包括:
即时任务调度模块:用于通过目标调度器将当前时间片对应的至少一个目标定时任务添加至对应的待处理任务队列,其中,所述目标调度器为多个调度器中对所述当前时间片加锁成功的调度器;
任务记录更新模块:用于控制所述目标调度器更新任务记录中所述至少一个目标定时任务的调度执行信息,其中,所述任务记录中包括多个历史时间片对应的历史定时任务的调度执行信息,所述调度执行信息包括调度状态信息、调度时间信息和调度辅助状态;
超期检测模块:用于控制所述目标调度器根据所述调度状态信息和所述调度时间信息,在所述多个历史时间片对应的历史定时任务中检测调度时长超过预设时长的目标超期任务;
超期任务调度模块:用于在检测到所述目标超期任务且所述目标超期任务的调度辅助状态为空的情况下,通过所述目标调度器将所述目标超期任务添加至对应的待处理任务队列。
另一方面提供了一种计算机设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如上述的定时任务调度方法。
另一方面提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如上述的定时任务调度方法。
另一方面提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如上述的定时任务调度方法。
另一方面提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如上述的定时任务调度方法。
另一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令被处理器执行时实现如上述的定时任务调度方法。
本申请提供的定时任务调度方法、装置、设备、存储介质、服务器、终端、计算机程序和计算机程序产品,具有如下技术效果:
本申请的技术方案通过目标调度器将当前时间片对应的至少一个目标定时任务添加至对应的待处理任务队列,其中,目标调度器为多个调度器中对当前时间片加锁成功的调度器,如此,通过加锁机制避免定时任务被重复处理,提高调度可靠性和可控性,并能够在调度器重启场景下实现断点重续,避免重新抢锁,降低任务遗漏率;然后,控制目标调度器更新任务记录中至少一个目标定时任务的调度执行信息,其中,任务记录中包括多个历史时间片对应的历史定时任务的调度执行信息,调度执行信息包括调度状态信息、调度时间信息和调度辅助状态;控制目标调度器根据调度状态信息和调度时间信息,在多个历史时间片对应的历史定时任务中检测调度时长超过预设时长的目标超期任务;在检测到目标超期任务且目标超期任务的调度辅助状态为空的情况下,通过目标调度器将目标超期任务添加至对应的待处理任务队列。如此,目标调度器完成当前时间片的目标定时任务后,通过获取任务记录同时实现调度执行信息更新和超期任务筛选,无需额外开销,并且利用调度时间筛选超期任务,并利用调度辅助状态过滤未被其它调度器处理的超期任务,避免多个调度器执行同一超期任务导致的调度冲突,此外,通过目标调度器实现超期任务的及时回溯和调度,以分摊其它调度器的调度任务量,无需依赖兜底服务器,有效提高任务调度时效性和可靠性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种应用环境的示意图;
图2是本申请实施例提供的一种定时任务调度方法的流程示意图;
图3是本申请实施例提供的一个基于时间轴的定时任务调度原理示意图;
图4是本申请实施例提供的一个时间轴的示意图;
图5是本申请实施例提供的另一个时间轴的示意图;
图6是与图5对应的现有技术的时间轴示意图;
图7是本申请实施例提供的另一种定时任务调度方法的流程示意图;
图8是本申请实施例提供的另一种定时任务调度方法的流程示意图;
图9是本申请实施例提供的一种基于时间轮的新增定时任务分配原理示意图;
图10是本申请实施例提供的另一种定时任务调度方法的流程示意图;
图11是本申请实施例提供的另一种定时任务调度方法的流程示意图;
图12是本申请实施例提供一种定时任务调度装置的框架示意图;
图13是本申请实施例提供的一种定时任务调度方法的电子设备的硬件结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或子模块的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或子模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或子模块。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
定时器:在指定时间执行任务,或者按照指定时间间隔执行任务的研发组件。
调度器:负责处理到达触发时间的定时任务的组件。
时间片:是分时操作系统分配给每个正在运行的进程微观上的一段CPU时间(在抢占内核中是:从进程开始运行直到被抢占的时间)。
消息队列(Message Queue,MQ):一种“先进先出”的数据结构,通常用来解决应用解耦、异步消息和流量削峰等问题。
工作窃取算法(Work-stealing算法):指某个线程从其他队列中窃取任务来执行;一个大任务分割为若干个互不依赖的子任务,为了减少线程间的竞争,把这些子任务放到不同的队列里,并为每个队列分配一个单独的进程来处理任务;当队列1任务已完成,队列2任务未完成,队列1的进程就去窃取队列2的任务,帮忙处理任务,以提高任务执行效率。
请参阅图1,图1是本申请实施例提供的一种应用环境的示意图,如图1所示,该应用环境可以至少包括终端01和服务器02。在实际应用中,终端01和服务器02可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
本申请实施例中的服务器02可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
具体地,云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术能够应用于各种领域,如医疗云、云物联、云安全、云教育、云会议、人工智能云服务、云应用、云呼叫和云社交等,云技术基于云计算(cloudcomputing)商业模式应用,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”,“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务))平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
按照逻辑功能划分,在IaaS层上可以部署PaaS(Platform as a Service,平台即服务)层,PaaS层之上再部署SaaS(Software as a Service,软件即服务)层,也可以直接将SaaS部署在IaaS上。PaaS为软件运行的平台,如数据库、web容器等。SaaS为各式各样的业务软件,如web门户网站、短信群发器等。一般来说,SaaS和PaaS相对于IaaS是上层。
具体地,上述涉及的服务器02可以包括实体设备,可以具体包括有网络通信子模块、处理器和存储器等等,也可以包括运行于实体设备中的软体,可以具体包括有应用程序等。
具体地,终端01可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、智能语音交互设备、智能家电、智能可穿戴设备、车载终端设备等类型的实体设备,也可以包括运行于实体设备中的软体,例如应用程序等。
本申请实施例中,服务器02上可以部署至少一种类型的调度器,如即时调度器,通过调度器将加锁的时间片对应的定时任务添加至待处理任务队列,以实现该时间片的定时任务调度,并在将该时间片的全部定时任务添加至待处理任务队列后,更新任务记录;并基于任务记录对历史定时任务进行超期检测,在检测到目标超期任务的情况下,利用该调度器对目标超期任务进行调度处理,以将其投递至待处理任务队列。终端01可以用于提供定时任务调度的配置服务,还可以用于提供新增定时任务的任务类型、执行时间和其它相关信息的配置服务,并将相应的配置信息发送至服务器02端,服务器02基于上述配置信息执行新增定时任务的分配和调度。
此外,可以理解的是,图1所示的仅仅是一种定时任务调度方法的应用环境,该应用环境可以包括更多或更少的节点,本申请在此不做限制。
本申请实施例涉及的应用环境,或应用环境中的终端01和服务器02等可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。分布式系统可以为区块链系统,该区块链系统可以提供上述的定时任务调度服务和数据存储服务等。
以下基于上述应用环境介绍本申请的一种定时任务调度方法,本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。请参考图2,图2是本申请实施例提供的一种定时任务调度方法的流程示意图,本说明书提供了如实施例或流程图的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体地,如图2所示,方法可以包括下述步骤S201-S207。
S201:通过目标调度器将当前时间片对应的至少一个目标定时任务添加至对应的待处理任务队列。
本申请实施例中,可以部署多个同一调度类型的调度器,同一调度类型的多个调度器可以部署于不同的节点,调度器用于将达到调度触发时间的定时任务从存储中读取出来,然后投递到待处理任务队列中,目标调度器为多个调度器中对当前时间片加锁成功的调度器。具体地,时间片的长度可以根据实际需求设定,例如1s,单个时间片可以对应若干个需要调度的定时任务,即上述若干个定时任务的调度触发时间在该时间片内。具体地,当前时间片为任务调度进度中所执行到的时间片,对应有一个或多个当前需要被调度的目标定时任务。请参考图3,图3示出了包括多个时间片的时间轴示意图,图中时间片T1(2021年12月17日12:00:00)和T5(2021年12月17日12:00:04)分别对应多个定时任务,T2-T4未挂载定时任务,若T1前的时间片已被其它调度器加锁,T1未加锁,则T1为当前时间片,T1的定时任务为目标定时任务。
实际应用中,每一时间片对应一个锁,每个时间片对应的定时任务中包括至少一个子任务,相应的,在S201之前,方法还包括:通过多个调度器竞争当前时间片的锁,即多个调度器并发获取当前时间片的锁,以对当前时间片进行加锁处理,加锁成功的调度器(目标调度器)能够锁定当前时间片的目标定时任务,进而执行目标定时任务的调度处理。具体地,目标调度器从存储中读取目标定时任务,并将其投递至待处理任务队列,待处理任务队列可以为消息队列。在目标定时任务包括多个需投递的子任务时,通过目标调度器的多个线程并行处理子任务投递。可以理解的,对当前时间片加锁的多个调度器为当前可调用的空闲调度器。请参考图3,以T1为当前时间片为例,调度器1、调度器2和调度器3同时获取T1的锁,具体过程为:读取时间片T1,并发给时间片T1的数据版本加1,以抢占时间片T1的锁,若调度器1加1成功,则加锁成功,将T1对应的目标定时任务添加至对应的待处理任务队列中;相应的,且调度器2和调度器3在识别到T1数据版本已加1的情况下,代表对T1加锁失败,调度器2和调度器3进入睡眠状态,或者,对下一时间片或下一待调度时间片进行加锁处理,待调度时间片是指时序晚于当前时间片且对应至少一个定时任务的时间片。如图4所示,在另一示例中,调度器1对时间片T1加锁成功,调度器2对时间片T2加锁成功,调度器3对时间片T3加锁成功,则当前的调度进度进行到时间片T4,T4为当前时间片。
具体地,可以通过全局锁维护各时间片的锁,全局锁可以为分布式锁,一个实施例中,全局锁采用乐观锁(Optimistic Locking)机制。基于全局锁的分布式调度,在任务调度能力出现瓶颈时,可通过新增节点进行快速扩容。
实际应用中,上述调度器的调度类型可以为即时调度器,即时调度器是指对定时任务进行实时调度的调度器,如定时任务在T1时间片触发,即时调度器就在当前时刻与T1时间片匹配时,从存储中获取T1的定时任务,并将其添加至待处理任务队列。具体地,每一执行定时任务调度的节点上均部署即时调度器进程。需要说明的是,上述调度器仅对定时任务的调度,不执行定时任务的处理,如此,将任务调度和任务处理解耦,提高任务调度和处理效率,避免任务量激增对任务调度效率的不利影响。
可以理解的,通过加锁机制,将目标调度器与当前时间片、以及当前时间片的定时任务绑定,在当前时间片的目标定时任务调度完成前,目标调度器不执行其它时间片的任务调度,且在当前时间片的目标定时任务解锁前,目标定时任务为锁定状态,不能够被其它调度器获取和执行。如此,能够避免定时任务被重复处理,提高调度可靠性,并且,当执行时间片Tn的定时任务调度时,可以确保之前最多存在N-1个时间片处于被调度状态,N为即时调度器进程数,能够有效提高任务调度的可控性,其中,若单个节点部署一个即时调度器,则N同时为节点数。此外,在任一即时调度器进程出现崩溃或者节点被重启等情况下,当调度器进程重新启动后,能够实现断点重续,以继续执行对应时间片中未完成调度的定时任务,避免重新抢锁和已锁定任务被遗漏等情况。
S203:控制目标调度器更新任务记录中至少一个目标定时任务的调度执行信息。
本申请实施例中,任务记录中包括多个历史时间片对应的历史定时任务的调度执行信息,即通过任务记录维护各时间片及定时任务的调度执行信息,历史时间片为时序早于当前时间片的时间片,历史定时任务为在当前时间片前需被其它多个调度器调度处理的定时任务,其它多个调度器与目标调度器的调度类型相同,如均为即时调度器,可以不包括目标调度器,也可以包括目标调度器。
具体地,调度执行信息可以包括但不限于调度时间信息、调度状态信息和调度辅助状态,以及还可以包括时间片绑定的调度器IP地址(或调度器标识)、定时任务标识、时间片执行状态和调度器绑定状态等。其中,调度时间信息指示相应时间片被调度器锁定的时间,调度状态信息表征定时任务是否成功添加至待处理任务队列,调度辅助状态表征是否存在其它调度器对相应时间片的定时任务进行辅助调度,调度器IP地址可以为进程IP或者节点IP,调度器标识为调度器的唯一标识,可以基于调度器IP生成,定时任务标识为定时任务的唯一标识,时间片执行状态表征时间片对应的所有定时任务全部调度完成或处于调度中,调度器绑定状态表征调度器当前正在调度绑定的时间片的定时任务或完成绑定的时间片的定时任务的调度。
一个实施例中,任务记录采用Protobuf数据存储格式,相应的,以下示出一个任务记录的部分示例,该部分用于记录调度器与时间片绑定的契约。
需要说明的是,任务记录也可以采用xml或Json等数据存储格式,本申请不做限制。
具体地,调度器在获取锁及完成所锁定时间片的定时任务调度后,获取并更新任务记录,如更新其中的调度时间信息、定时任务的调度状态信息、时间片绑定的调度器IP和调度器标识以及时间片执行状态等。
一些实施例中,还设置有调度运行记录,用于记录定时器及调度器的运行信息,包括但不限于调度类型、标识校验结果、任务调度时间片和调度器调度进度等,其中,调度类型包括即时调度器和延时调度器等,标识校验结果为堆调度器标识进行校验得到的结果,任务调度时间片为当前执行到的时序最晚的时间片,能够指示时间片的调度进度,调度器调度进度指示调度器当前执行到的定时任务。一个实施例中,部分调度运行记录如下所示。
S205:控制目标调度器根据调度状态信息和调度时间信息,在多个历史时间片对应的历史定时任务中检测调度时长超过预设时长的目标超期任务。
如前述的,任务记录维护各时间片及定时任务的调度执行信息,目标调度器获取到任务记录并遍历读取其中历史定时任务的调度执行信息,进而实现超期任务检测,判断历史时间片对应的历史定时任务中是否存在需辅助调度的目标超期任务。其中,未被调度器加锁处理过或未被调度器调度过的历史定时任务为遗漏任务,被调度器调度过但超过预设时长未调度完成的任务为超期任务。
具体地,目标调度器根据调度状态信息确定出多个历史时间片对应的历史定时任务中未完成调度的定时任务,即未成功添加至待处理任务队列的历史定时任务,并根据调度时间信息确定未完成调度的定时任务的调度时长,将其中调度时长超过预设时长的定时任务确定为目标超期任务。其中,这里的调度时间信息表征调度器锁定该历史时间片的锁定时间,相应的,将锁定时间与当前时刻间的时间间隔确定为调度时长,预设时长可以基于实际需求和硬件资源配置设定,如1min。
进一步地,在确定出目标超期任务后,判断目标超期任务的调度辅助状态(如helper IP)是否为空,若为空,表征没有其它调度器对该目标超期任务进行辅助调度,则该目标超期任务为需辅助调度的目标超期任务,若不为空,表征已有其它调度器执行辅助调度,该目标超期任务不需要辅助调度。
现有技术中通常部署多种调度类型的调度器,如即时调度器和延时调度器,通过延时调度器延迟不同的时间捞取超期任务或遗漏任务,如定时任务1的调度触发时间为2021年12月17日11:00:00,即时调度器准实时调度2021年12月17日11:00:00的定时任务1,若该任务调度失败或该即时调度器崩溃,延时调度器在1h后(2021年12月17日12:00:00)捞取2021年12月17日11:00:00的定时任务,即能够对调度失败的定时任务1进行处理,但该方式延时时间过长,时效性低,同时需要依赖和维护大量延时调度器,可靠性差且增加资源占用。而通过上述本申请的技术方案,在目标调度器读取和更新任务记录的过程中,同时进行超期任务筛选,一方面基于同一调度类型的调度器实现超期任务的及时捞取和调度,在调度器进程无法恢复,如机器故障、机房故障等情况下,通过多个即时调度器及时回溯超期任务,实现任务兜底,无需依赖延时调度器,有效提高任务调度的时效性和可靠性;另一方面,调度器通过任务记录能够同时实现调度执行信息更新和超期任务筛选,无需额外的资源开销。
一些实施例中,目标调度器仅针对目标历史时间片的历史定时任务进行超期任务筛选,目标历史时间片为与当前时间片间的时间间隔满足预设间隔条件的历史时间片,其中,满足预设间隔条件包括上述时间间隔为预设间隔时长或在预设时长范围内。预设间隔时长可以与前述的预设时长相同,如1min,也可以与预设时长不同,如预设间隔时长可以为时间片对应时长的m倍,m为大于等于2的整数,预设时长范围可以基于实际需求设定,例如为50-60s。如此,实现调度器针对超期任务的有序查找和处理,降低重复查找和记录查询的资源消耗。
S207:在检测到目标超期任务且目标超期任务的调度辅助状态为空的情况下,通过目标调度器将目标超期任务添加至对应的待处理任务队列。
一些情况下,存在多个调度辅助状态为空的目标超期任务,则将其中历史时间片最早的目标超期任务确定为目标调度器对应的需辅助调度的目标超期任务,如此,避免同一调度器持续处理超期任务,而无法进行后续时间片的任务调度。
具体地,目标调度器在进行当前时间片后的其它时间片的任务调度前,先辅助其它调度器完成目标超期任务的投递,以提高调度时效。需要说明的是,在历史时间片的调度时长超过预设时长的情况下,解除该历史时间片的锁,以使该超期任务能够被新的调度器获取。
在一个示例中,请参考图5,图中调度器1出现进程崩溃(crash),历史时间片T1的历史定时任务无法完成调度,T2-T4的历史定时任务已完成调度(done),调度器3正在调度当前时间片T5的定时任务(doing),调度器2完成了T5前某一时间片的定时任务,尚未开始时间片T6的任务调度(not start),则调度器2在处理T6的任务调度前,先回溯并执行调度时长超过1min还未完成调度的历史定时任务,即捞取并调度T1的历史定时任务,然后再执行T6的任务调度。其中,调度器超过预设时长还未完成定时任务调度的原因包括但不限于:调度器状态正常,但该时间片的定时任务过多,处理超载,或者调度器崩溃,从而无法及时完成任务调度。本申请的技术方案通过目标调度器(如即时调度器)对调度时长超过预设时长的定时任务进行兜底,而现有技术的方案,请参考图6,调度器1崩溃后,调度器2顺序执行时间片T6的任务调度,而时间片T1的超期任务需要等待延时调度器2在1h后捞取,相较于现有技术,本申请能够确保定时任务的及时性,大幅降低异常情况下定时任务的延时,有效提高调度时效,降低维护成本。并且即使部分定时器或调度器进程崩溃,已锁定的定时任务也能被执行任务回溯的调度器接管,只要有进程幸存,就能够继续调度定时任务。
具体地,前述的超期检测和目标超期任务的调度处理可以基于工作窃取算法实现。
此外,通过读取任务记录中历史定时任务的调度执行信息,还可以检测是否存在遗漏时间片或遗漏任务,遗漏时间片为时序早于当前时间片且未被加锁处理过的时间片,类似的,遗漏任务为时序早于当前时间片且未被调度器调度过的定时任务。在检测到目标遗漏任务或目标遗漏时间片的情况下,目标调度器将目标遗漏时间片对应的历史定时任务或目标遗漏任务添加至对应的待处理任务队列。其中,目标遗漏任务为调度辅助状态为空的遗漏任务,目标遗漏时间片为调度器标识为空的遗漏时间片。
一些实施例中,目标调度器在完成当前时间片的任务调度后,可以先获取下一待调度时间片的锁;然后获取任务记录、更新任务记录和进行超期检测,在检测到目标超期任务的情况下,目标调度器先对目标超期任务进行调度,然后再处理待调度时间片对应的定时任务,在未检测到目标超期任务的情况下,直接处理待调度时间片对应的定时任务。
另一些实施例中,目标调度器在完成当前时间片的任务调度后,可以先获取任务记录、更新任务记录和进行超期检测;在检测到目标超期任务的情况下,对目标超期任务进行调度,然后再获取下一待调度时间片的锁,进而处理待调度时间片对应的定时任务,在未检测到目标超期任务的情况下,直接获取下一待调度时间片的锁。如此,避免调度器锁定时间片后出现空置时间,进一步优化调度时效。
基于上述部分或全部实施方式,本申请实施例中,可能存在分布式系统中全部定时器故障或崩溃的情况,该场景下,定时器无法工作,进而使调度器无法获取时间片的锁及进行定时任务调度,定时器恢复后,才能够重新进行任务调度处理。相应的,请参考图7,方法还可以包括下述步骤S209-S213。
S209:确定当前时间片与当前时刻间的时间间隔。
S211:在时间间隔未超过预设阈值的情况下,控制未加锁调度器进入睡眠状态。
其中,未加锁调度器为多个调度器中未对当前时间片加锁成功的调度器。
S213:在时间间隔超过预设阈值的情况下,控制未加锁调度器依次对累积时间片进行加锁处理。
其中,累积时间片为当前时间片与当前时刻(当前真实时间)间的未加锁的时间片。
实际应用中,定时器恢复后,多个调度器对当前时间片加锁,加锁成功的调度器为目标调度器,用于执行当前时间片的目标定时任务调度;同时,若确定时间间隔未超过预设阈值,未加锁调度器进入睡眠状态,至时间到达下一待调度时间片时被唤醒,以对待调度时间片进行加锁处理,若确定时间间隔超过预设阈值,多个调度器中的一个或多个未加锁调度器依时序,依次对全部的累积时间片进行加锁处理,并执行累积时间片的任务调度。
进一步地,在处理累积时间片对应的定时任务的过程中,获取累积时间片所对应的定时任务的任务调度速率;在任务调度速率小于等于预设速率的情况下,对至少一个调度器进行扩容处理,增加调度器进程数量,提高任务调度速率。
示例性的,时间片长度为1s,预设阈值为30min,调度器进程数量为10,在当前时间片Ti(2022-03-03 12:00:00)时,所有定时器节点故障,2h后定时器恢复,当前时刻为2022-03-03 14:00:00,则调度运行记录中的当前时间片还停留在Ti(2022-03-03 12:00:00),且时间间隔2h显然超过预设阈值30min。从而,10个调度器中的部分或全部并发抢占Ti的锁,加锁成功的一个调度器为目标调度器,其余9个未加锁调度器不会进入睡眠状态,立即抢占Ti后下一待调度时间片的锁,10个调度器全量满载工作,以10s的梯度进行任务追赶,至完成累积时间片的任务调度或至更新的当前时间片与当前时刻(当前真实时间)相匹配。如此,通过控制全量调度器并行工作,追赶真实时间进度,实现调度进度的快速恢复。
进一步地,若任务调度速率小于等于预设速率,可以快速扩容K个节点,控制K+10个调度器并行工作,每次可调度N+10个时间片的定时任务,追赶上真实时间后,调度器抢锁失败后,会重新进入睡眠,扩容的K个节点也可以相应缩容,以降低成本。
基于上述部分或全部实施方式,本申请实施例中,在S201之前,响应于业务模块针对新增定时任务的插入操作,需要对新增定时任务进行存储处理,相应的,请参考图8,方法还可以包括下述步骤S301-S305。
S301:获取新增定时任务和新增定时任务的执行时间信息。
具体地,执行时间信息为业务模块在插入新增定时任务时指定的,指示新增定时任务的调度触发时间,执行时间信息可以为时间戳格式。
S303:根据执行时间信息确定新增定时任务对应的目标任务表。
具体地,基于执行时间信息可以生成新增定时任务对应的目标标识,进而确定目标任务表。
一些实施例中,定时器可以为时间轮定时器,时间轮定时器的时间格(bucket,桶)与时间片相关联,执行时间信息为执行时间戳,S303可以包括下述步骤S3031-S3033。
S3031:获取定时器的任务表满载量。
其中,任务表满载量为单个时间轮定时器能够关联的任务表的最高数量。
S3032:基于任务表满载量对执行时间信息进行取模处理,得到新增定时任务对应的目标标识。
S3033:将任务表标识与目标标识一致的任务表确定为目标任务表。
其中,这里的取模处理为求执行时间戳和任务表满载量相除的余数,示例性的,假设当前时刻是2021-08-05 11:17:33(UNIX的时间戳是1628176653),一个新增定时任务在10s后被触发,即执行时间戳start_time=1628176653+10=1628176663,任务表满载量为10000000,则目标标识为start_time%10000000=8176663,确定任务表标识为8176663的任务表为目标任务表。可以理解的,基于时间轮机制,单个时间轮可以多圈轮转,则执行时间戳为1628176663+10000000*j(j为自然数)的新增定时任务,所对应的目标标识也为8176663。具体地,定时器时间轮的时间格、目标标识及任务表一一对应,通过同一标识码对时间格和任务表进行标识,实现时间格与任务表的映射,提高任务存取效率。
S305:通过定时器将新增定时任务存储至目标任务表中。
具体地,目标标识相同的新增定时任务都存储到同一目标任务表中,并与同一时间格关联。如前述的执行时间戳为1628176663+10000000*j都存入标识为8176663的任务表中,并关联至标识为8176663的时间格。
实际应用中,时间轮定时器可以基于单时间轮、改进单时间轮或多时间轮等机制。在一个实施例中,定时器使用改进单时间轮算法,单个任务表为改进单时间轮中的slot(间隔),每一时间格对应一个任务表,任务表维护系统基于TableKV构建。TableKV为基于Paxos(帕克索斯)算法的分布式存储组件,无需水平分表或垂直分表,天然支持分表,能够支持和维护千万数量级的任务表分表数量,同时,该分表可以直接关联时间轮中的时间格,无需额外的设置和改造,相较于Mysql(structured query language,关系型数据库管理系统)和Redis(Remote Dictionary Server,远程字典服务)等,TableKV具有更强的容灾能力和高可用性,在分布式场景下可用性达99.999%,能够确保定时器存储层的高可用。请参考图9,时间轮包括8个时间格,任务表满载量(buket_size)为10000000,目标标识=执行时间戳%任务表满载量(route_key=start_time%buket_size),执行时间戳为1628176663和1638176663,任务表维护系统存储任务表,以及任务表标识、任务表和时间格的映射关系。
一些实施例中,根据任务类型对定时任务进行隔离部署,相应的,在S305之前,方法还可以包括下述步骤S401-S403。
S401:获取新增定时任务的目标任务类型。
S403:基于预设映射信息确定目标任务类型对应的目标定时器,其中,预设映射信息表征多种任务类型与多个定时器间的对应关系。
相应的,S303包括:根据执行时间信息从目标定时器关联的任务表中确定出目标任务表。
具体地,上述新增定时任务的任务类型可以由业务模块设定。一些情况下,预设映射信息中的对应关系为任务类型与定时器一一对应,另一些情况下,同一定时器对应预设种类的任务类型,如定时器1对应任务类型1和任务类型2。则根据该预设映射信息,可以确定当前新增定时任务所对应的目标定时器,进而目标定时器根据执行时间信息对应的目标标识,从目标定时器关联的任务表中确定出目标任务表。如此,不同任务类型可以对应不同的定时器,进而利用不同的定时器针对任务类型对定时任务进行隔离部署,以分别对各类型任务进行资源分配,避免某一类型任务的定时器故障或资源过载影响其它类型任务的部署和调度。
具体地,可以针对不同的定时器维护不同的调度器资源池,如针对每一任务类型对应的定时器构建对应的调度器资源池,以进行资源分配,在某一任务类型的任务过多,任务投递速率超过阈值的情况下,调用其它任务类型的资源池中的空闲调度器,进行任务投递辅助,以合理调配。
一些实施例中,还可以针对任务类型配置单个时间片能够挂载的任务量上限,即配置任务类型对应的满载任务量,相应的,在S305之前,方法还可以包括下述步骤S501-S503。
S501:根据执行时间信息确定新增定时任务对应的目标时间片。
S503:获取目标任务类型对应的满载任务量,其中,满载任务量指示单个时间片对应的定时任务量上限。
S505:在目标任务表中目标任务类型对应的定时任务量达到满载任务量的情况下,将新增定时任务存储至关联任务表中,其中,关联任务表为目标定时器中时序晚于目标时间片的时间片所对应的任务表。
具体地,可以根据执行时间信息确定新增定时任务的调度触发时间,将调度触发时间所属的时间片确定为目标时间片,如执行时间信息为1628176663,则调度触发时间为2021-08-05 11:17:43,时间片的长度为1s,则目标时间片也为2021-08-05 11:17:43。
进一步地,获取目标任务表中已存储的、属于目标任务类型的定时任务的任务量,若达到满载任务量,则将新增定时任务存储至关联任务表中,如优先将与目标时间片相邻的下一时间片作为关联时间片,对应的任务表作为关联任务表。若下一时间片的任务表也达到满载任务量,则再继续选择下一时间片,至确定出能够存储该新增定时任务的关联任务表。可以理解的,在任务类型与定时器一一对应,或任务类型与任务表一一对应的情况下,单个任务表能够存储的任务额定量即为上述满载任务量。
示例性的,每个业务模块定义一个接入的任务类型,每个业务类型都可以配置满载任务量,如任务类型1为24小时后清理未使用券,任务类型2为24小时后扣费,时间片的长度为1s,任务类型1配置的满载任务量为30000,即1秒处理的任务上限是30000个,任务类型2配置的满载任务量为20000;若实际有40000个任务类型1的定时任务要求在T1时间片调度,且时间片T1+1的任务表的剩余任务容量大于等于10000个,则超出对应满载任务量的10000个定时任务会被分配到T1+1秒执行;假如有50000个任务类型2的定时任务要求在T1时间调度,已存储20000个至T1,则超过满载任务量的30000个任务中,在T1+1和T1+2任务容量足够的情况下,20000个任务会被分配到T1+1秒执行,10000个会被分配到T1+2秒执行。如此,将热点任务平摊到后续的时间,实现热点任务的分散分配,避免对回调模块造成冲击,以降低对下游模块的影响。
此外,在一些实施例中,除部署调度类型为执行即时调度任务的即时调度器外,还可以部署其它不同类型的延时调度器,以延迟定期捞取未完成调度或遗漏的历史定时任务,请参考下表一,每个节点上部署即时调度器以及包括延迟调度器、兜底调度器和清理调度器的延时调度器,表中示例以当前时间片为T1(2022-03-03 12:00:00)为例。
如此,部署多级调度器,支持不同的任务捞取策略,除了捞取当前时间的任务,还可以捞取超时1小时和2小时等未执行的任务,避免任务遗漏,进一步提高任务调度可靠性。
以下结合图10介绍本申请的定时任务调度流程,请参考图10,定时任务的调度流程包括下述步骤:
S1.业务模块插入新增定时任务,并指定执行时间为t1,根据t1确定目标时间片为T1时间片。
S2.定时器进程将新增定时任务基于执行时间存储新增定时任务至任务存储的目标任务表中。
S3.基于时间驱动调度器1和调度器2进行定时任务的调度,具体地,调度器1和调度器2轮询需要调度的任务,直至到达时间T1。
S4.调度器1与调度器2同时读取时间T1,并发抢锁,以获取T1时间片的锁。
S5.调度器1抢锁成功,获取对应的定时任务。
S6.调度器1投递定时任务至待处理任务队列,并更新任务调度状态,T1时间片的定时任务全部投递完成后,调度器1可抢占下一个时间片的锁。
S7.调度器2抢锁失败,进入睡眠状态。
S8.调度器1检测目标超期任务。
S9.若检测到目标超期任务,投递目标超期任务至待处理任务队列。
具体地,任务投递完成后,待处理队列根据定时任务的回调信息请求到对应的回调模块,接收回调模块反馈的回调结果并进行存储。
进一步地,结合图11,以即时调度器1和即时调度器2介绍存在进程崩溃时定时任务的调度过程,具体地,包括下述步骤。
1.即时调度器1和即时调度器2并行获取T1时间片的锁。
2.即时调度器1成功获取到锁,获取T1时间片的定时任务,即时调度器2未获取到锁,进入睡眠。
3.即时调度器1进程崩溃。
4.即时调度器2从睡眠状态中被唤醒,并判断即时调度器1的定时任务是否超过1min未完成。
5.若是,即时调度器2获取T1时间片的定时任务。
6.即时调度器2投递T1时间片的定时任务至待处理任务队列。
7.T1时间片的定时任务投递完成后,即时调度器2获取T6时间片的锁。
8.若获取成功,即时调度器2获取T6时间片的定时任务。
9.即时调度器2投递T6时间片的定时任务至待处理任务队列。
综上,任一即时调度器的定时任务超期、失败或遗漏时,其它即时调度器能够在预设时长内捞取并辅助调度,并且控制单个即时调度器在完成辅助的调度任务后,再进行新时间片的任务调度,显著提高定时任务的准确性和可靠性。上述方案广泛适用于各种定时任务调度场景,如委托代扣或延迟扣费等业务场景。
本申请实施例还提供了一种定时任务调度装置12,如图12所示,图12示出了本申请实施例提供的一种定时任务调度装置的结构示意图,装置可以包括下述模块。
即时任务调度模块10:用于通过目标调度器将当前时间片对应的至少一个目标定时任务添加至对应的待处理任务队列,其中,目标调度器为多个调度器中对当前时间片加锁成功的调度器;
任务记录更新模块20:用于控制目标调度器更新任务记录中至少一个目标定时任务的调度执行信息,其中,任务记录中包括多个历史时间片对应的历史定时任务的调度执行信息,调度执行信息包括调度状态信息、调度时间信息和调度辅助状态;
超期检测模块30:用于控制目标调度器根据调度状态信息和调度时间信息,在多个历史时间片对应的历史定时任务中检测调度时长超过预设时长的目标超期任务;
超期任务调度模块40:用于在检测到目标超期任务且目标超期任务的调度辅助状态为空的情况下,通过目标调度器将目标超期任务添加至对应的待处理任务队列。
一些实施例中,装置还可以包括下述模块。
时间间隔确定模块:用于确定当前时间片与当前时刻间的时间间隔;
未加锁调度控制模块:用于在时间间隔未超过预设阈值的情况下,控制未加锁调度器进入睡眠状态,其中,未加锁调度器为多个调度器中未对当前时间片加锁成功的调度器。
一些实施例中,装置还可以包括累积任务处理模块:用于在时间间隔超过预设阈值的情况下,控制未加锁调度器依次对累积时间片进行加锁处理,其中,累积时间片为当前时间片与当前时刻间的未加锁的时间片。
一些实施例中,装置还可以包括下述模块。
任务调度速率获取模块:用于获取累积时间片所对应的定时任务的任务调度速率;
扩容处理模块:用于在任务调度速率小于等于预设速率的情况下,对至少一个调度器进行扩容处理。
一些实施例中,装置还可以包括下述模块。
新增任务获取模块:用于在通过目标调度器将当前时间片对应的至少一个目标定时任务添加至对应的待处理任务队列之前,获取新增定时任务和新增定时任务的执行时间信息;
目标任务表确定模块:用于根据执行时间信息确定新增定时任务对应的目标任务表;
新增任务存储模块:用于通过定时器将新增定时任务存储至目标任务表中。
一些实施例中,目标时间片确定模块可以包括下述单元。
任务表满载量获取单元:用于获取定时器的任务表满载量;
取模处理单元:用于基于任务表满载量对执行时间信息进行取模处理,得到新增定时任务对应的目标标识;
任务表确定单元:用于将任务表标识与目标标识一致的任务表确定为目标任务表。
一些实施例中,装置还可以包括下述模块。
任务类型获取模块:用于在根据执行时间信息确定新增定时任务对应的目标任务表之前,获取新增定时任务的目标任务类型;
定时器确定模块:用于基于预设映射信息确定目标任务类型对应的目标定时器,其中,预设映射信息表征多种任务类型与多个定时器间的对应关系;
相应的,目标任务表确定模块可以用于根据执行时间信息从目标定时器关联的任务表中确定出目标任务表。
一些实施例中,装置还可以包括下述模块。
时间片确定模块:用于根据执行时间信息确定新增定时任务对应的目标时间片;
满载任务量获取模块:用于在将新增定时任务存储至与目标时间片对应的目标任务表中之前,获取目标任务类型对应的满载任务量,其中,满载任务量指示单个时间片对应的定时任务量上限;
新增任务存储模块还用于在目标任务表中的任务量达到满载任务量的情况下,将新增定时任务存储至关联任务表中,其中,关联任务表为目标定时器中时序晚于目标时间片的时间片所对应的任务表。
需要说明的是,上述装置实施例与方法实施例基于相同的实施方式。
本申请实施例提供了一种定时任务调度设备,该调度设备可以为终端或服务器,包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的定时任务调度方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及定时任务调度。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置等电子设备中执行。图13是本申请实施例提供的一种定时任务调度方法的电子设备的硬件结构框图。如图13所示,该电子设备900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)910(处理器910可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器930,一个或一个以上存储应用程序923或数据922的存储介质920(例如一个或一个以上海量存储设备)。其中,存储器930和存储介质920可以是短暂存储或持久存储。存储在存储介质920的程序可以包括一个或一个以上模块,每个模块可以包括对电子设备中的一系列指令操作。更进一步地,中央处理器910可以设置为与存储介质920通信,在电子设备900上执行存储介质920中的一系列指令操作。电子设备900还可以包括一个或一个以上电源960,一个或一个以上有线或无线网络接口950,一个或一个以上输入输出接口940,和/或,一个或一个以上操作系统921,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
输入输出接口940可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括电子设备900的通信供应商提供的无线网络。在一个实例中,输入输出接口940包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口940可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图13所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子设备900还可包括比图13中所示更多或者更少的组件,或者具有与图13所示不同的配置。
本申请的实施例还提供了一种计算机可读存储介质,存储介质可设置于电子设备之中以保存用于实现方法实施例中一种定时任务调度方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的定时任务调度方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
由上述本申请提供的定时任务调度方法、装置、设备、服务器、终端、存储介质和程序产品的实施例可见,本申请的技术方案通过目标调度器将当前时间片对应的至少一个目标定时任务添加至对应的待处理任务队列,其中,目标调度器为多个调度器中对当前时间片加锁成功的调度器,如此,通过加锁机制避免定时任务被重复处理,提高调度可靠性和可控性,并能够在调度器重启场景下实现断点重续,避免重新抢锁,降低任务遗漏率;然后,控制目标调度器更新任务记录中至少一个目标定时任务的调度执行信息,其中,任务记录中包括多个历史时间片对应的历史定时任务的调度执行信息,调度执行信息包括调度状态信息、调度时间信息和调度辅助状态;控制目标调度器根据调度状态信息和调度时间信息,在多个历史时间片对应的历史定时任务中检测调度时长超过预设时长的目标超期任务;在检测到目标超期任务且目标超期任务的调度辅助状态为空的情况下,通过目标调度器将目标超期任务添加至对应的待处理任务队列。如此,目标调度器完成当前时间片的目标定时任务后,通过获取任务记录同时实现调度执行信息更新和超期任务筛选,无需额外开销,并且利用调度时间筛选超期任务,并利用调度辅助状态过滤未被其它调度器处理的超期任务,避免多个调度器执行同一超期任务导致的调度冲突,此外,通过目标调度器实现超期任务的及时回溯和调度,以分摊其它调度器的调度任务量,无需依赖兜底服务器,有效提高任务调度时效性和可靠性。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (12)
1.一种定时任务调度方法,其特征在于,所述方法包括:
通过目标调度器将当前时间片对应的至少一个目标定时任务添加至对应的待处理任务队列,其中,所述目标调度器为多个调度器中对所述当前时间片加锁成功的调度器;
控制所述目标调度器更新任务记录中所述至少一个目标定时任务的调度执行信息,其中,所述任务记录中包括多个历史时间片对应的历史定时任务的调度执行信息,所述调度执行信息包括调度状态信息、调度时间信息和调度辅助状态;
控制所述目标调度器根据所述调度状态信息和所述调度时间信息,在所述多个历史时间片对应的历史定时任务中检测调度时长超过预设时长的目标超期任务;
在检测到所述目标超期任务且所述目标超期任务的调度辅助状态为空的情况下,通过所述目标调度器将所述目标超期任务添加至对应的待处理任务队列。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述当前时间片与当前时刻间的时间间隔;
在所述时间间隔未超过预设阈值的情况下,控制未加锁调度器进入睡眠状态,其中,所述未加锁调度器为所述多个调度器中未对所述当前时间片加锁成功的调度器。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述时间间隔超过所述预设阈值的情况下,控制所述未加锁调度器依次对累积时间片进行加锁处理,其中,所述累积时间片为所述当前时间片与所述当前时刻间的未加锁的时间片。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
获取所述累积时间片所对应的定时任务的任务调度速率;
在所述任务调度速率小于等于预设速率的情况下,对所述至少一个调度器进行扩容处理。
5.根据权利要求1-4中任一项所述的方法,其特征在于,在所述通过目标调度器将当前时间片对应的至少一个目标定时任务添加至对应的待处理任务队列之前,所述方法还包括:
获取新增定时任务和所述新增定时任务的执行时间信息;
根据所述执行时间信息确定所述新增定时任务对应的目标任务表;
通过定时器将所述新增定时任务存储至所述目标任务表中。
6.根据权利要求5所述的方法,其特征在于,所述根据所述执行时间信息确定所述新增定时任务对应的目标任务表包括:
获取所述定时器的任务表满载量;
基于所述任务表满载量对所述执行时间信息进行取模处理,得到所述新增定时任务对应的目标标识;
将任务表标识与所述目标标识一致的任务表确定为所述目标任务表。
7.根据权利要求5所述的方法,其特征在于,在所述根据所述执行时间信息确定所述新增定时任务对应的目标任务表之前,所述方法还包括:
获取所述新增定时任务的目标任务类型;
基于预设映射信息确定所述目标任务类型对应的目标定时器,其中,所述预设映射信息表征多种任务类型与多个定时器间的对应关系;
所述根据所述执行时间信息确定所述新增定时任务对应的目标任务表包括:
根据所述执行时间信息从所述目标定时器关联的任务表中确定出所述目标任务表。
8.根据权利要求7所述的方法,其特征在于,在所述将所述新增定时任务存储至所述目标任务表中之前,所述方法还包括:
根据所述执行时间信息确定所述新增定时任务对应的目标时间片;
获取所述目标任务类型对应的满载任务量,其中,所述满载任务量指示单个时间片对应的定时任务量上限;
在所述目标任务表中所述目标任务类型对应的定时任务量达到所述满载任务量的情况下,将所述新增定时任务存储至关联任务表中,其中,所述关联任务表为所述目标定时器中时序晚于所述目标时间片的时间片所对应的任务表。
9.一种定时任务调度装置,其特征在于,所述装置包括:
即时任务调度模块:用于通过目标调度器将当前时间片对应的至少一个目标定时任务添加至对应的待处理任务队列,其中,所述目标调度器为多个调度器中对所述当前时间片加锁成功的调度器;
任务记录更新模块:用于控制所述目标调度器更新任务记录中所述至少一个目标定时任务的调度执行信息,其中,所述任务记录中包括多个历史时间片对应的历史定时任务的调度执行信息,所述调度执行信息包括调度状态信息、调度时间信息和调度辅助状态;
超期检测模块:用于控制所述目标调度器根据所述调度状态信息和所述调度时间信息,在所述多个历史时间片对应的历史定时任务中检测调度时长超过预设时长的目标超期任务;
超期任务调度模块:用于在检测到所述目标超期任务且所述目标超期任务的调度辅助状态为空的情况下,通过所述目标调度器将所述目标超期任务添加至对应的待处理任务队列。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-8中任一项所述的定时任务调度方法。
11.一种计算机设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如权利要求1-8中任一项所述的定时任务调度方法。
12.一种计算机程序产品或计算机程序,其特征在于,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令被处理器执行时实现如权利要求1-8中任一项所述的定时任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210279905.1A CN116820697A (zh) | 2022-03-21 | 2022-03-21 | 定时任务调度方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210279905.1A CN116820697A (zh) | 2022-03-21 | 2022-03-21 | 定时任务调度方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116820697A true CN116820697A (zh) | 2023-09-29 |
Family
ID=88113255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210279905.1A Pending CN116820697A (zh) | 2022-03-21 | 2022-03-21 | 定时任务调度方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116820697A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421106A (zh) * | 2023-12-11 | 2024-01-19 | 湖南行必达网联科技有限公司 | 一种嵌入式软件的任务调度方法、系统及设备 |
CN118075333A (zh) * | 2024-04-17 | 2024-05-24 | 天津华来科技股份有限公司 | 一种物联网虚拟化设备通信中间件框架构建方法 |
-
2022
- 2022-03-21 CN CN202210279905.1A patent/CN116820697A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421106A (zh) * | 2023-12-11 | 2024-01-19 | 湖南行必达网联科技有限公司 | 一种嵌入式软件的任务调度方法、系统及设备 |
CN117421106B (zh) * | 2023-12-11 | 2024-03-08 | 湖南行必达网联科技有限公司 | 一种嵌入式软件的任务调度方法、系统及设备 |
CN118075333A (zh) * | 2024-04-17 | 2024-05-24 | 天津华来科技股份有限公司 | 一种物联网虚拟化设备通信中间件框架构建方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116820697A (zh) | 定时任务调度方法、装置、设备和存储介质 | |
CN111338773B (zh) | 一种分布式定时任务调度方法、调度系统及服务器集群 | |
CN108563502B (zh) | 一种任务调度方法和装置 | |
CN107302488B (zh) | 虚拟物品的分配方法、系统及服务器 | |
CN109117265A (zh) | 在集群中调度作业的方法、装置、设备及存储介质 | |
US10200295B1 (en) | Client selection in a distributed strict queue | |
Wang et al. | Pigeon: An effective distributed, hierarchical datacenter job scheduler | |
CN113760513B (zh) | 一种分布式任务调度方法、装置、设备和介质 | |
CN111427670A (zh) | 任务调度方法和系统 | |
US20150381709A1 (en) | Input/output management in a distributed strict queue | |
CN110704173A (zh) | 任务调度方法、调度系统、电子设备及计算机存储介质 | |
CN110611707B (zh) | 一种任务调度的方法及装置 | |
US9584593B2 (en) | Failure management in a distributed strict queue | |
CN106302709B (zh) | 一种网络文件管理的实现方法和系统 | |
CN110928655A (zh) | 一种任务处理方法及装置 | |
JPWO2007072544A1 (ja) | 情報処理装置、計算機、リソース割り当て方法及びリソース割り当てプログラム | |
CN112416581A (zh) | 定时任务的分布式调用系统 | |
CN103500119A (zh) | 一种基于预调度的任务分配方法 | |
CN112698929A (zh) | 一种信息采集方法及装置 | |
CN115951983A (zh) | 任务调度方法、装置、系统和电子设备 | |
CN108733515A (zh) | 文件备份的调度方法、文件备份方法、装置及存储介质 | |
CN110895486A (zh) | 分布式任务调度系统 | |
CN109284190A (zh) | 一种任务处理方法及装置 | |
CN113626213A (zh) | 一种事件处理方法、装置、设备及计算机可读存储介质 | |
CN113419836B (zh) | 任务处理方法、装置、电子设备和计算机可读存储介质 |
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 |