CN111143053A - 一种定时任务的调度方法、服务器以及存储装置 - Google Patents
一种定时任务的调度方法、服务器以及存储装置 Download PDFInfo
- Publication number
- CN111143053A CN111143053A CN201911120732.3A CN201911120732A CN111143053A CN 111143053 A CN111143053 A CN 111143053A CN 201911120732 A CN201911120732 A CN 201911120732A CN 111143053 A CN111143053 A CN 111143053A
- Authority
- CN
- China
- Prior art keywords
- task
- time
- scheduling
- timing task
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 230000015654 memory Effects 0.000 claims description 9
- 238000012163 sequencing technique Methods 0.000 abstract description 10
- 230000001960 triggered effect Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
Images
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种定时任务的调度方法、服务器以及存储装置,其中,该定时任务的调度方法包括:检测当前时刻,确定时间轮中当前时刻对应的定时任务;其中,时间轮的每一个单位时间刻度对应一个定时任务;通过定时任务对应的调度节点调度并执行定时任务。通过上述方式,本申请通过将定时任务与时间轮中的相应单位时间刻度相对应,以在检测到相应时刻时调度该定时任务执行,从而能够有效减少因对定时任务进行频繁排序所带来的性能开销,并有效地提升了对定时任务进行轮询的效率,同时也避免了因对定时任务轮询不及时而过期不执行的情况发生。
Description
技术领域
本申请涉及调度定时任务的技术领域,尤其涉及一种定时任务的调度方法、服务器以及存储装置。
背景技术
现今,随着IoT(Internet of Things,物联网)领域的快速发展,进行联网的智能设备也呈现出了爆发式的增长。而在进行联网的智能设备当中,有很大一部分是需要定时自动完成一些任务的,这便使得提供一个高效,稳定的定时调度系统来完成大量定时任务的调度显得尤为重要。
通常地,当需要调度的定时任务量较小时,可以把所有的定时任务存在一个持久化的数据库中,并通过调度节点从同一数据库中定时查询并加载最近需要执行的定时任务,以等到指定的时间点时触发该定时任务执行。
而采用这种方式在对待执行的定时任务进行查询时,会严重依赖于数据库对定时任务的排序,而频繁的查询排序,在定时任务量较大时会使得查询的效率低下,容易因查询超时而导致定时任务过期不被执行,此外,频繁的数据库查询也使得调度系统容易遇到IO(输入/输出)瓶颈;且当有多个调度节点从同一数据库中读写定时任务时,需要通过锁来保证相应的定时任务不被重复执行,而锁的存在又会大大降低整个调度系统的性能。
发明内容
本申请提供了一种定时任务的调度方法、服务器以及存储装置,该调度方法能够解决当调度节点频繁地对数据库的任务列表中的全量任务进行排序查询时,因排序带来严重的性能开销,而导致的效率低下,以及由于定时任务存储于数据库中,使调度节点频繁的对数据库进行读写,而造成的IO开销过大,操作过慢,从而导致因对定时任务查询不及时而过期不执行的问题。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种定时任务的调度方法,其中,该定时任务的调度方法包括:检测当前时刻,确定时间轮中当前时刻对应的定时任务;其中,时间轮的每一个单位时间刻度对应一个定时任务;通过定时任务对应的调度节点调度并执行定时任务。
其中,检测当前时刻,确定时间轮中当前时刻对应的定时任务的步骤之前还包括:接收添加定时任务的指令;获取定时任务最近一次的触发时间;将触发时间与时间轮的对应单位时刻建立对应关系,并将对应关系存储到任务列表中;检测当前时刻,确定时间轮中当前时刻对应的定时任务的步骤包括:检测到当前时刻,通过任务列表确定时间轮中当前时刻对应的定时任务。
其中,通过定时任务对应的调度节点调度并执行定时任务的步骤之后还包括:确定定时任务下一次的调度时间;将下一次的调度时间与时间轮的对应单位时刻建立对应关系,将对应关系存储到任务列表中,并删除本次已经执行的对应关系。
其中,检测当前时刻,确定时间轮中当前时刻对应的定时任务的步骤之前还包括:接收调度节点的注册请求;为调度节点分配唯一的身份识别号;将调度节点与定时任务建立对应关系,并存储到任务列表中。
其中,接收添加定时任务的指令的步骤包括:接收调用接口服务节点的注册请求;通过调用接口服务节点接收添加定时任务的指令。
为解决上述技术问题,本申请采用的又一个技术方案是:提供一种定时任务的调度方法,其中,该定时任务的调度方法包括:通过调度节点依次对与其对应的时间轮中每一单位时间刻度对应存储的任务列表进行轮询,其中,时间轮是以一天时间中每一单位时间刻度对应分区划分的分布式缓存系统;在调度节点轮询到时间轮中当前时刻对应存储的任务列表中的定时任务时,向相应的客户端发送任务触发指令,以触发客户端执行定时任务。
其中,通过调度节点依次对与其对应的时间轮中每一单位时间刻度对应存储的任务列表进行轮询的步骤之前还包括:通过调用接口服务节点接收客户端发送的定时任务,以将定时任务添加到时间轮中相应时刻对应存储的任务列表中。
其中,在调度节点轮询到时间轮中当前时刻对应存储的任务列表中的定时任务时,向相应的客户端发送任务触发指令,以触发客户端执行定时任务的步骤之后还包括:确定定时任务下一次的调度时间,以将定时任务存储到时间轮中与下一次的调度时间相对应的任务列表中,并删除时间轮中当前时刻对应存储的任务列表中的定时任务。
为解决上述技术问题,本申请采用的又一个技术方案是:提供一种服务器,其中,该服务器包括相互耦接的存储器和处理器;存储器存储有程序数据;处理器用于执行该程序数据以实现如上任一所述的定时任务的调度方法。
为解决上述技术问题,本申请采用的又一个技术方案是:提供一种存储装置,其中,该存储装置存储有程序数据,该程序数据能够被执行以实现如上任一所述的定时任务的调度方法。
本申请的有益效果是:区别于现有技术,本申请中的定时任务的调度方法包括:检测当前时刻,确定时间轮中当前时刻对应的定时任务;其中,时间轮的每一个单位时间刻度对应一个定时任务;通过定时任务对应的调度节点调度并执行定时任务。通过上述方式,本申请通过将定时任务与时间轮中的相应单位时间刻度相对应,以在检测到相应时刻时调度该定时任务执行,从而能够有效减少因对定时任务进行频繁排序所带来的性能开销,并有效地提升了对定时任务进行轮询的效率,同时也避免了因对定时任务轮询不及时而过期不执行的情况发生。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请定时任务的调度方法第一实施例的流程示意图;
图2是本申请定时任务的调度方法第二实施例的流程示意图;
图3是本申请定时任务的调度方法第三实施例的流程示意图;
图4是本申请定时任务的调度方法第四实施例的流程示意图;
图5是本申请定时任务的调度方法第五实施例的流程示意图;
图6是本申请定时任务的调度方法第六实施例的流程示意图;
图7是本申请中的时间轮一具体实施例的结构示意图;
图8是本申请定时任务的调度方法第七实施例的流程示意图;
图9是本申请定时任务的调度方法第八实施例的流程示意图;
图10是本申请定时任务的调度方法一具体应用场景中相应调度系统的结构示意图;
图11是本申请服务器一实施例的结构示意图;
图12是本申请存储装置一实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,均属于本申请保护的范围。
请参阅图1,图1为本申请定时任务的调度方法第一实施例的流程示意图,本实施方式包括如下步骤:
S110:检测当前时刻,确定时间轮中当前时刻对应的定时任务,其中,时间轮的每一个单位时间刻度对应一个定时任务。
在本实施例中,首先检测当前的时刻,以确定在时间轮中与当前时刻相对应的预设在当前时刻调度触发的定时任务,其中,该时间轮的每一个单位时间刻度均对应一个定时任务,而在其他实施例中,该时间轮的每一个单位时间刻度还可以对应多个定时任务,相应的调度系统或服务器能够在相应时刻对这多个定时任务进行并发调度处理。
可理解的是,该时间轮可以是以每一单位时间刻度为界线进行分区划分的分布式缓存系统或根据每一单位时间刻度对应分区划分的任务列表,而其中的每一单位时间刻度均是与实际一天时间中的每一单位时刻相对应的一个独立的单位存储单元或任务列表,而可存储至少一个定时任务。则由此可知,当检测到当前时刻时,可确定出存储于相应时间轮中与当前时刻对应的存储单元或任务列表中的定时任务。
其中,该时间轮也可以理解为集成于相应调度系统中的一个指示系统时间的时钟,而该时间轮中的每一单位时间刻度均与预设在该时刻调度触发的定时任务建立有相对应的映射关系,以在该调度系统检测到当前时刻时,根据当前时刻以及时间轮指向的映射关系确定与当前时刻相对应的定时任务。其中,该调度系统可具体为一服务器。
S120:通过定时任务对应的调度节点调度并执行定时任务。
在本实施例中,当确定时间轮中与当前时刻对应的定时任务时,进一步通过与该定时任务相对应的调度节点调度并执行该定时任务。则可理解的是,其中每一定时任务均唯一对应有一调度节点,该调度节点能够根据当前时刻对预设在当前时刻触发执行的定时任务进行调度,以触发执行该定时任务。
区别于现有技术,本申请中的定时任务的调度方法包括:检测当前时刻,确定时间轮中当前时刻对应的定时任务;其中,时间轮的每一个单位时间刻度对应一个定时任务;通过定时任务对应的调度节点调度并执行定时任务。通过上述方式,本申请通过将定时任务与时间轮中的相应单位时间刻度相对应,以在检测到相应时刻时调度该定时任务执行,从而能够有效减少因对定时任务进行频繁排序所带来的性能开销,并有效地提升了对定时任务进行轮询的效率,同时也避免了因对定时任务轮询不及时而过期不执行的情况发生。
请参阅图2,图2是本申请定时任务的调度方法第二实施例的流程示意图。可以理解的是,本实施方式的定时任务的调度方法是图1定时任务的调度方法一细化实施方式的流程示意图,包括如下步骤:
其中,图2中的S250与图1中的S120相同,具体请参阅图1及其相关的文字描述,在此不再赘述,而在S250之前,还包括如下步骤:
S210:接收添加定时任务的指令。
在本实施例中,时间轮中每一时刻对应的定时任务是由一客户端创建并发送给相应调度系统的,以使该调度系统能够对该定时任务进行调度执行,并首先接收由客户端发送的添加该定时任务的指令。
S220:获取定时任务最近一次的触发时间。
在本实施例中,在接收到添加定时任务的指令时,进一步获取到该定时任务距当前时刻最近一次需要被触发执行的时间。
S230:将触发时间与时间轮的对应单位时刻建立对应关系,并将对应关系存储到任务列表中。
在本实施例中,在接收到添加定时任务的指令,并获取到该定时任务最近一次的触发时间后,将获取到的该触发时间与相应时间轮中的对应单位时刻建立起对应关系,以将该对应关系存储到相应调度系统的任务列表中。
S240:检测到当前时刻,通过任务列表确定时间轮中当前时刻对应的定时任务,其中,时间轮的每一个单位时间刻度对应一个定时任务。
在本实施例中,在将定时任务的触发时间与时间轮的对应单位时刻建立的对应关系存储到待执行的任务列表后,检测当前时刻,以通过该任务列表确定时间轮中与当前时刻对应匹配的定时任务,其中,时间轮的每一个单位时间刻度对应一个定时任务。
请参阅图3,图3是本申请定时任务的调度方法第三实施例的流程示意图。可以理解的是,本实施方式的定时任务的调度方法是图2定时任务的调度方法一细化实施方式的流程示意图,包括如下步骤:
其中,图3中的S310、S320、S330、S340以及S350与图2中的S210、S220、S230、S240以及S250相同,具体请参阅图2及其相关的文字描述,在此不再赘述,而在S350之后,还包括如下步骤:
S360:确定定时任务下一次的调度时间。
在本实施例中,在检测到当前时刻,并通过与时间轮中当前时刻对应的定时任务相对应的调度节点调度并执行该定时任务后,进一步确定该定时任务预设在下一次调度触发执行的时间。
S370:将下一次的调度时间与时间轮的对应单位时刻建立对应关系,将对应关系存储到任务列表中,并删除本次已经执行的对应关系。
在本实施例中,在确定相应定时任务的下一次调度时间后,进一步将下一次的调度时间与时间轮的对应单位时刻建立起相对应的匹配关系,以将该对应的匹配关系存储到调度系统的任务列表中,并删除本次已经执行的当前时刻与时间轮的对应单位时刻建立的对应关系。
请参阅图4,图4是本申请定时任务的调度方法第四实施例的流程示意图。可以理解的是,本实施方式的定时任务的调度方法是图2定时任务的调度方法一细化实施方式的流程示意图,包括如下步骤:
其中,图4中的S410、S420、S430、S470以及S480分别与图2中的S210、S220、S230、S240以及S250相同,具体请参阅图2及其相关的文字描述,在此不再赘述,而在S430之后,S470之前,还包括如下步骤:
S440:接收调度节点的注册请求。
在本实施例中,在通过调度节点对相应定时任务进行调度执行之前,还需要首先接收相应调度节点的注册请求。
S450:为调度节点分配唯一的身份识别号。
在本实施例中,在接收到调度节点的注册请求后,向该调度节点分配唯一的身份识别号,其中,该调度节点还可以为至少两个,以在接收到相应调度节点的注册请求时,为每一调度节点分配唯一的身份识别号,以方便后续对执行定时任务的调度节点进行识别区分。
S460:将调度节点与定时任务建立对应关系,并存储到任务列表中。
在本实施例中,进一步将调度节点与相应时间轮中当前时刻对应的定时任务建立起对应关系,以将该对应关系存储到相应调度系统的任务列表中。
则可理解的是,在该调度系统中包括有一任务列表,而该任务列表中可添加定时任务的预设触发时间与时间轮中对应单位时刻建立的对应关系以及调度节点与该定时任务建立的对应关系,从而使得该调度系统能够在检测到当前时刻后,根据该任务列表中存储的对应关系确定当前时刻对应的定时任务和调度节点,以通过该调度节点对该定时任务进行调度,以触发该定时任务执行。
请参阅图5,图5是本申请定时任务的调度方法第五实施例的流程示意图。可以理解的是,本实施方式的定时任务的调度方法是图2定时任务的调度方法一细化实施方式的流程示意图,包括如下步骤:
其中,图5中的S530、S540、S550以及S560分别与图2中的S220、S230、S240以及S250相同,具体请参阅图2及其相关的文字描述,在此不再赘述,而在S530之前,还包括如下步骤:
S510:接收调用接口服务节点的注册请求。
在本实施例中,首先接收调用接口服务节点的注册请求,其中,该调用接口服务节点可理解为一个可用于接收定时任务指令的服务节点。
S520:通过调用接口服务节点的调用接口接收添加定时任务的指令。
在本实施例中,在接收到调用接口服务节点的注册请求后,则可通过该调用接口服务节点的调用接口来接收客户端添加定时任务的指令。其中,该调用接口服务节点也可以包括至少两个,以在接收到相应调用接口服务节点的注册请求时,向每一调用接口服务节点分配唯一的身份识别号,以使客户端能够随机从相应的注册中心查找到其中的一个身份识别号,以与相应的调用接口服务节点建立连接,并通过该调用接口服务节点的调用接口接收客户端发送的添加定时任务的指令。
基于总的发明构思,本申请还提供了一种定时任务的调度方法,请参阅图6,图6是本申请定时任务的调度方法第六实施例的流程示意图。
本实施方式包括如下步骤:
S610:通过调度节点依次对与其对应的时间轮中每一单位时间刻度对应存储的任务列表进行轮询,其中,时间轮是以一天时间中每一单位时间刻度对应分区划分的分布式缓存系统。
在本实施例中,服务器可通过调度节点依次对与该调度节点对应的时间轮中的每一单位时间刻度所对应的存储单元进行轮询,以查询其中每一存储单元中对应存储的任务列表中是否存储有定时任务,其中,该服务器可理解为一调度系统,其可对客户端发送的定时任务进行对应添加存储和实时调度,以在该定时任务的指定时刻调度并触发相应的客户端执行该定时任务。
其中,时间轮可以为以实际一天时间包括的单位时间刻度对应分区划分的分布式缓存系统。例如,当将单位时间定义为1秒时,因一天时间包括86400秒,则相应地将该分布式缓存系统划分为86400等份的独立存储单元。其中,如果以零点为起点,则可理解的是,相应的第一秒时刻可对应于86400等份中的其中一份,第二秒时刻对应于86400等份另一份,以此类推,一天中的每一秒时刻均唯一对应于86400等份中的其中一份,而在其他实施例中,也可以将单位时间定义为2秒、3秒、5秒或1分钟等,则相应地该分布式缓存系统被划分为43200等份、28800等份、17280等份或1440等份等,其中一天中的每一单位时间均唯一对应于其中的一等份,本申请对此不做限定。
则可理解的是,该分布式缓存系统中的每一等份,也即该时间轮的每一单位时间刻度均唯一对应有一个存储单元,而在该存储单元中存储有一任务列表,该任务列表中可添加至少一个预设在对应时刻触发执行的定时任务,以在被相应的调度节点轮询到时,触发该定时任务执行。
其中,为了实现调度节点对相应定时任务的高效并发处理,其中每一个任务列表还可以根据当前时刻任务量的多少进一步地进行分区,以提高相应调度系统的并发处理性能。
可选地,请参阅图7,其中,图7是本申请中的时间轮一具体实施例的结构示意图。从图7中可看出,该时间轮被等分为86400等份,其中箭头每指向一个时刻均对应现实中的1秒,且唯一对应于一存储单元,而在该存储单元中存储有一任务列表,该任务列表又进一步被分区划分为任务列表1、任务列表2以及任务列表3,其中,每一任务列表中均可被添加至少一个预设时刻会被触发执行的定时任务,例如,图7中所示的第21600秒对应任务列表中存储有该时刻会被触发执行的定时任务,则可知相应的调度节点会在第21600秒的时刻轮询到该定时任务时,触发该定时任务执行。
S620:在调度节点轮询到时间轮中当前时刻对应存储的任务列表中的定时任务时,向相应的客户端发送任务触发指令,以触发客户端执行定时任务。
在本实施例中,当调度节点在定时任务的指定触发时刻轮询到相应任务列表中存储的定时任务时,向创建并将该定时任务添加到相应时间轮中的客户端发送触发该定时任务执行的指令,以触发该客户端执行该定时任务。其中,该客户端可理解为一智能终端,用户可通过该智能终端创建其需要的定时任务,以将该定时任务添加到相应的时间轮中,而该定时任务则可理解为预设在一天中的一个指定时刻触发执行的系统任务。
可理解的是,调度节点唯一对应有一时间轮,该时间轮的每一单位时间刻度所对应的存储单元的任务列表中均可添加定时任务,而该调度节点可以根据实际时间在每隔200m或300ms对该时间轮扫描一次,以在轮询到该时间轮中存储的定时任务时,向相应的客户端发送任务触发指令,以触发客户端执行定时任务。其中,该调度节点的间隔扫描时间还可以是其他时间,本申请对此不做限定。
区别于现有技术,本申请中的调度方法包括:通过调度节点依次对与其对应的时间轮中每一单位时间刻度对应存储的任务列表进行轮询,其中,时间轮是以一天时间中每一单位时间刻度对应分区划分的分布式缓存系统;在调度节点轮询到时间轮中当前时刻对应存储的任务列表中的定时任务时,向相应的客户端发送任务触发指令,以触发客户端执行定时任务。通过上述方式,本申请通过将定时任务存储于与现实时间刻度保存一致的存储单元的任务列表中,以能够有效地减少频繁排序带来的性能开销,并有效地提升了对定时任务进行轮询的效率,从而避免了相应定时任务因轮询不及时而过期不被执行的情况发生。
请参阅图8,图8是本申请定时任务的调度方法第七实施例的流程示意图。可以理解的是,本实施方式的定时任务的调度方法是图6定时任务的调度方法一细化实施方式的流程示意图,包括如下步骤:
其中,图8中的S820和S830分别与图6中的S610和S620相同,具体请参阅图6及其相关的文字描述,在此不再赘述,而在S820之前,还包括如下步骤:
S810:通过调用接口服务节点的调用接口接收客户端发送的定时任务,以将定时任务添加到时间轮中相应时刻对应存储的任务列表中。
在本实施例中,服务器可通过相应的调用接口服务节点的调用接口来接收客户端发送的定时任务,以进一步将该定时任务添加到相应时间轮中相应时刻对应存储的任务列表中。
可理解的是,服务器可预先将能够接收定时任务请求的调用接口服务节点注册到一服务注册发现中心,以使客户端能够在该服务注册发现中心查找到相应的调用接口,以通过该调用接口与相应的调用接口服务节点建立连接。
其中,该调用接口服务节点可理解为调用接口对应的应用终端节点,而该应用终端节点能够通过在服务注册发现中心注册,以向客户端指示可接收定时任务的请求,以在客户端查找到相应的调用接口,并通过该调用接口与相应的调用接口服务节点建立连接时,接收客户端发送的定时任务。
请参阅图9,图9是本申请定时任务的调度方法第八实施例的流程示意图。可以理解的是,本实施方式的定时任务的调度方法是图6定时任务的调度方法一细化实施方式的流程示意图,包括如下步骤:
其中,图9中的S910和S920分别与图6中的S610和S620相同,具体请参阅图6及其相关的文字描述,在此不再赘述,而在S920之后,还包括如下步骤:
S930:确定定时任务下一次的调度时间,以将定时任务存储到时间轮中与下一次的调度时间相对应的任务列表中,并删除时间轮中当前时刻对应存储的任务列表中的定时任务。
在本实施例中,在调度节点轮询到相应时间轮中当前时刻对应存储的任务列表中的定时任务,并触发相应客户端执行该定时任务之后,进一步确定该定时任务下一次的调度以触发执行的时间,以将该定时任务存储到该时间轮中与下一次的调度时间相对应的任务列表中,并删除该时间轮中当前时刻对应存储的任务列表中已被执行的定时任务。因而可理解的是相应调度节点能够在下一次轮询到该定时任务时,直接触发相应客户端再次执行该定时任务,并将时间轮中当前时刻对应的存储单元的任务列表中存储的已被执行的定时任务移除,以防止该时刻的定时任务被重复调度执行,从而能够使相应调度节点无需对存储有定时任务的缓存系统、时间轮或数据库进行频繁地读写和调度,以导致因IO开销过大,操作过慢,而造成的任务查询不及时而过期不被执行的情况发生。
在一个可选的实施例中,服务器中的调度节点还可以包括多个,而其中的每一调度节点均唯一对应于一个时间轮。则相应地,其中每一调度节点均只对与其相对应的时间轮中对应存储的任务列表进行轮询,以在某一时刻轮询到相应定时任务时,触发相应的客户端执行该定时任务。其中,若存在一种场景,发生其中一个调度节点宕机时,则由其他的另一个调度节点顶替该宕机的调度节点对与其对应的时间轮以及自身对应的时间轮中每一单位时间刻度所对应的存储单元中的任务列表进行轮询,即采用一个调度节点对相应的两个或在其他场景中对更多个的时间轮进行轮询,以避免因存在有调度节点的宕机而使相应时间轮中的定时任务丢失不被执行的情况产生,而又因每一时间轮均只对应被其中一个调度节点轮询,并不存在有多个调度节点对同一时间轮中的任务列表进行查询排序,因而也便无需通过设置锁来避免定时任务被重复轮询以调度执行,从而避免了因锁的使用大大降低相应调度系统的性能。
在一个可选的实施例中,服务器可通过至少两个调用接口服务节点接收客户端创建并发送的至少两个定时任务,并向该服务器的主机中获取到调度节点集群中每一调度节点当前时刻或实际一天时间中负责轮询以调度触发执行的定时任务的任务量,以能够根据获取到的该任务量多少来制定负载存储策略,以依据该负载存储策略将接收到的客户端发送的多个定时任务对应添加到相应的至少两个时间轮中预设时刻对应的存储单元中的任务列表中。例如,可根据负载均衡策略以在需要尽量保证各个时间轮中存储定时任务量的均衡时,将当前时刻接收到的多个定时任务更多地添加到任务量少的时间轮中,而更少的添加到任务量多的时间轮中。
请参阅图10,图10是本申请定时任务的调度方法一具体应用场景中相应的调度系统的结构示意图。
在本实施例中,调度系统中的服务器在启动时,首先使Scheduler Node a、Scheduler Node b以及Scheduler Node c(调度节点a、b、c)在Master(主机)上完成注册,以由Master向每一Scheduler Node对应颁发唯一的ID(身份识别号),同时将每一Scheduler Node的ID信息保存至cluster metadata storage(群集元数据存储)。
其中,在初始状态时,每一Scheduler Node均唯一对应一个time wheel(时间轮)存储,而当Scheduler Node集群中存在有一scheduler node宕机退出集群时,则会由另一个Scheduler Node代替对应于相应的time wheel。例如,在初始状态时,Scheduler Nodea、Scheduler Node b以及Scheduler Node c分别与time wheel storage 1、time wheelstorage 2以及time wheel storage 3一一对应,而当Scheduler Node b宕机退出集群时,则由Scheduler Node a并行对time wheel storage 1和time wheel storage 2中存储的定时任务进行调度和处理。其中,每一time wheel storage均可以是如图7中所述的时间轮分布式存储系统,请具体参阅图7,及其相关文字描述,在此不再赘述。
其中,Apiserver a、Apiserver b以及Apiserver c(接口服务节点a、b、c)可以向Service Registration and Discovery(服务注册发现中心)注册调度系统服务,以在注册后接收客户端client发送的定时任务请求。
其中,客户端client可以在Service Registration and Discovery中查找完成注册的调度接口服务节点,以随机调用其中的一个调度接口服务节点,如apiserver a,对应的api(调度接口),以与apiserver a建立连接,从而能够向apiserver a发送预设的定时任务。而在其他实施例中客户端client还可以与多个apiserver建立连接,以通过多个apiserver向不同的多个time wheel中添加多个定时任务。
其中,Apiserver a可进一步从Master中获取到Scheduler Node集群的ID信息以及每一Scheduler Node对应的time wheel当前时刻或一天中存储的任务量,以制定相应的负载均衡策略,将接收到由客户端client发送的定时任务相对平均地存储到相应的时间轮中。而在其他实施例中,Apiserver a还可以根据不同的策略向不同的time wheel存储相应的定时任务,如优先将定时任务存储到time wheel storage 1(时间轮存储单元1)中,并在time wheel storage 1中存储的定时任务超过预设阈值时,将余下的定时任务添加到timewheel storage 2(时间轮存储单元2)中,依次类推依次存储到其他time wheel storage中。
其中,每一Scheduler Node均可根据当前时间对相应的每一time wheel进行轮询,例如,每隔如200ms扫描一下相应的time wheel是否存储有定时任务,以在轮询到该time wheel中相应任务列表中存储的定时任务时,向相应的客户端发送指令,以触发该客户端执行该定时任务,并进一步计算该定时任务下一次执行的时刻,以将该定时任务存储至相应time wheel对应时间刻度的任务列表中。
基于总的发明构思,本申请还提供了一种服务器,请参阅图11,图11是本申请服务器一实施例的结构示意图。其中,该服务器110包括相互耦接的存储器1110和处理器1120。
在本实施例中,服务器110可理解为一可实现定时任务调度服务的调度系统,其中,存储器1110中存储有用于实现对定时任务进行调度的相应程序数据,处理器1120用于执行该程序数据以实现如上任一所述的定时任务的调度方法。
基于总的发明构思,本申请还提供了一种存储装置,请参阅图12,图12是本申请存储装置一实施例的结构示意图。其中,存储装置120中存储有程序数据1210,该程序数据1210能够被执行以实现以上任一所述的定时任务的调度方法。
在一个实施例中,存储装置120可以是终端中的存储芯片、硬盘或者是移动硬盘或者优盘、光盘等其他可读写存储的工具,还可以是服务器等等。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,处理器或存储器的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个处理器与存储器实现的功能可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或连接可以是通过一些接口,装置或单元的间接耦合或连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
区别于现有技术,本申请中的定时任务的调度方法包括:检测当前时刻,确定时间轮中当前时刻对应的定时任务;其中,时间轮的每一个单位时间刻度对应一个定时任务;通过定时任务对应的调度节点调度并执行定时任务。通过上述方式,本申请通过将定时任务与时间轮中的相应单位时间刻度相对应,以在检测到相应时刻时调度该定时任务执行,从而能够有效减少因对定时任务进行频繁排序所带来的性能开销,并有效地提升了对定时任务进行轮询的效率,同时也避免了因对定时任务轮询不及时而过期不执行的情况发生。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种定时任务的调度方法,其特征在于,所述定时任务的调度方法包括:
检测当前时刻,确定时间轮中当前时刻对应的定时任务;其中,所述时间轮的每一个单位时间刻度对应一个定时任务;
通过所述定时任务对应的调度节点调度并执行所述定时任务。
2.根据权利要求1所述的定时任务的调度方法,其特征在于,所述检测当前时刻,确定时间轮中当前时刻对应的定时任务的步骤之前还包括:
接收添加所述定时任务的指令;
获取所述定时任务最近一次的触发时间;
将所述触发时间与所述时间轮的对应单位时刻建立对应关系,并将所述对应关系存储到任务列表中;
所述检测当前时刻,确定时间轮中当前时刻对应的定时任务的步骤包括:
检测到当前时刻,通过所述任务列表确定所述时间轮中当前时刻对应的所述定时任务。
3.根据权利要求2所述的定时任务的调度方法,其特征在于,所述通过所述定时任务对应的调度节点调度并执行所述定时任务的步骤之后还包括:
确定所述定时任务下一次的调度时间;
将所述下一次的调度时间与所述时间轮的对应单位时刻建立对应关系,将所述对应关系存储到任务列表中,并删除本次已经执行的对应关系。
4.根据权利要求2所述的定时任务的调度方法,其特征在于,所述检测当前时刻,确定时间轮中当前时刻对应的定时任务的步骤之前还包括:
接收所述调度节点的注册请求;
为所述调度节点分配唯一的身份识别号;
将所述调度节点与所述定时任务建立对应关系,并存储到所述任务列表中。
5.根据权利要求2所述的定时任务的调度方法,其特征在于,所述接收添加所述定时任务的指令的步骤包括:
接收调用接口服务节点的注册请求;
通过所述调用接口服务节点的调用接口接收添加所述定时任务的指令。
6.一种定时任务的调度方法,其特征在于,所述定时任务的调度方法包括:
通过调度节点依次对与其对应的时间轮中每一单位时间刻度对应存储的任务列表进行轮询,其中,所述时间轮是以一天时间中每一单位时间刻度对应分区划分的分布式缓存系统;
在所述调度节点轮询到所述时间轮中当前时刻对应存储的任务列表中的定时任务时,向相应的客户端发送任务触发指令,以触发所述客户端执行所述定时任务。
7.根据权利要求6所述的定时任务的调度方法,其特征在于,所述通过调度节点依次对与其对应的时间轮中每一单位时间刻度对应存储的任务列表进行轮询的步骤之前还包括:
通过调用接口服务节点的调用接口接收所述客户端发送的所述定时任务,以将所述定时任务添加到所述时间轮中相应时刻对应存储的任务列表中。
8.根据权利要求6所述的定时任务的调度方法,其特征在于,所述在所述调度节点轮询到所述时间轮中当前时刻对应存储的任务列表中的定时任务时,向相应的客户端发送任务触发指令,以触发所述客户端执行所述定时任务的步骤之后还包括:
确定所述定时任务下一次的调度时间,以将所述定时任务存储到所述时间轮中与下一次的调度时间相对应的任务列表中,并删除所述时间轮中当前时刻对应存储的任务列表中的所述定时任务。
9.一种服务器,其特征在于,所述服务器包括相互耦接的存储器和处理器;
所述存储器存储有程序数据;
所述处理器用于执行所述程序数据,以实现如权利要求1-5或6-8中任一项所述的定时任务的调度方法。
10.一种存储装置,其特征在于,所述存储装置存储有程序数据,所述程序数据能够被执行以实现如权利要求1-5或6-8中任一项所述的定时任务的调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911120732.3A CN111143053A (zh) | 2019-11-15 | 2019-11-15 | 一种定时任务的调度方法、服务器以及存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911120732.3A CN111143053A (zh) | 2019-11-15 | 2019-11-15 | 一种定时任务的调度方法、服务器以及存储装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111143053A true CN111143053A (zh) | 2020-05-12 |
Family
ID=70517162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911120732.3A Pending CN111143053A (zh) | 2019-11-15 | 2019-11-15 | 一种定时任务的调度方法、服务器以及存储装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111143053A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112835693A (zh) * | 2021-01-14 | 2021-05-25 | 北京金山云网络技术有限公司 | 任务的定时方法、装置及电子设备 |
CN114529301A (zh) * | 2022-02-21 | 2022-05-24 | 山东浪潮通软信息科技有限公司 | 一种凭证过账方法、装置、设备及介质 |
CN114741179A (zh) * | 2022-05-20 | 2022-07-12 | 北京宇信科技集团股份有限公司 | 异步通讯的任务执行方法、装置、电子设备和存储介质 |
CN116647530A (zh) * | 2023-06-06 | 2023-08-25 | 深圳花儿绽放网络科技股份有限公司 | 一种即时通信消息任务的自动执行系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084175A1 (en) * | 2001-11-01 | 2003-05-01 | Microsoft Corporation | Method and framework for processing network communication protocol timers |
CN1713630A (zh) * | 2004-06-25 | 2005-12-28 | 华为技术有限公司 | 一种触发相对定时器的方法 |
CN105468450A (zh) * | 2015-12-29 | 2016-04-06 | 华为技术有限公司 | 任务调度方法及系统 |
CN106126326A (zh) * | 2016-06-23 | 2016-11-16 | 东软集团股份有限公司 | 定时任务管理方法和装置 |
CN106815066A (zh) * | 2015-11-30 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 一种定时任务调度方法、装置及系统 |
WO2018050242A1 (en) * | 2016-09-16 | 2018-03-22 | Huawei Technologies Co., Ltd. | Efficient scheduler for short periodic tasks |
CN108292236A (zh) * | 2015-11-30 | 2018-07-17 | 华为技术有限公司 | 一种信息处理方法及装置 |
CN109445954A (zh) * | 2018-09-11 | 2019-03-08 | 百富计算机技术(深圳)有限公司 | 一种定时任务的执行方法、终端设备及存储介质 |
CN110018893A (zh) * | 2019-03-12 | 2019-07-16 | 平安普惠企业管理有限公司 | 一种基于数据处理的任务调度方法及相关设备 |
CN110046166A (zh) * | 2019-04-22 | 2019-07-23 | 网易(杭州)网络有限公司 | 基于区块链的定时任务调度方法及装置 |
CN110119323A (zh) * | 2019-05-13 | 2019-08-13 | 重庆八戒电子商务有限公司 | 一种基于时间轮执行延迟队列的方法及系统 |
-
2019
- 2019-11-15 CN CN201911120732.3A patent/CN111143053A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084175A1 (en) * | 2001-11-01 | 2003-05-01 | Microsoft Corporation | Method and framework for processing network communication protocol timers |
CN1713630A (zh) * | 2004-06-25 | 2005-12-28 | 华为技术有限公司 | 一种触发相对定时器的方法 |
CN106815066A (zh) * | 2015-11-30 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 一种定时任务调度方法、装置及系统 |
CN108292236A (zh) * | 2015-11-30 | 2018-07-17 | 华为技术有限公司 | 一种信息处理方法及装置 |
CN105468450A (zh) * | 2015-12-29 | 2016-04-06 | 华为技术有限公司 | 任务调度方法及系统 |
CN106126326A (zh) * | 2016-06-23 | 2016-11-16 | 东软集团股份有限公司 | 定时任务管理方法和装置 |
WO2018050242A1 (en) * | 2016-09-16 | 2018-03-22 | Huawei Technologies Co., Ltd. | Efficient scheduler for short periodic tasks |
CN109445954A (zh) * | 2018-09-11 | 2019-03-08 | 百富计算机技术(深圳)有限公司 | 一种定时任务的执行方法、终端设备及存储介质 |
CN110018893A (zh) * | 2019-03-12 | 2019-07-16 | 平安普惠企业管理有限公司 | 一种基于数据处理的任务调度方法及相关设备 |
CN110046166A (zh) * | 2019-04-22 | 2019-07-23 | 网易(杭州)网络有限公司 | 基于区块链的定时任务调度方法及装置 |
CN110119323A (zh) * | 2019-05-13 | 2019-08-13 | 重庆八戒电子商务有限公司 | 一种基于时间轮执行延迟队列的方法及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112835693A (zh) * | 2021-01-14 | 2021-05-25 | 北京金山云网络技术有限公司 | 任务的定时方法、装置及电子设备 |
CN114529301A (zh) * | 2022-02-21 | 2022-05-24 | 山东浪潮通软信息科技有限公司 | 一种凭证过账方法、装置、设备及介质 |
CN114741179A (zh) * | 2022-05-20 | 2022-07-12 | 北京宇信科技集团股份有限公司 | 异步通讯的任务执行方法、装置、电子设备和存储介质 |
CN116647530A (zh) * | 2023-06-06 | 2023-08-25 | 深圳花儿绽放网络科技股份有限公司 | 一种即时通信消息任务的自动执行系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111143053A (zh) | 一种定时任务的调度方法、服务器以及存储装置 | |
CN107491355A (zh) | 一种基于共享内存的进程间功能调用方法及装置 | |
CN108108463B (zh) | 基于时间片调度的同步任务处理方法及装置 | |
CN110247984B (zh) | 业务处理方法、装置及存储介质 | |
US8190857B2 (en) | Deleting a shared resource node after reserving its identifier in delete pending queue until deletion condition is met to allow continued access for currently accessing processor | |
CN105468718B (zh) | 数据一致性处理方法、装置和系统 | |
CN106933672B (zh) | 一种分布式环境协调消费队列方法和装置 | |
CN109033814B (zh) | 智能合约触发方法、装置、设备及存储介质 | |
CN109787884B (zh) | 一种消息推送方法和装置 | |
CN115599300A (zh) | 一种任务分配方法、装置、设备及介质 | |
CN111126604A (zh) | 模型训练方法、装置、服务器及存储介质 | |
CN109819674B (zh) | 计算机存储介质、嵌入式调度方法及系统 | |
CN113342863A (zh) | 业务单据处理方法、装置、计算机设备和存储介质 | |
CN112099864A (zh) | 一种异步数据的处理方法及装置 | |
CN106598706B (zh) | 一种提高服务器的稳定性的方法、装置及服务器 | |
CN111597056A (zh) | 一种分布式调度方法、系统、存储介质和设备 | |
CN108833532B (zh) | 基于物联网的服务处理方法、装置和系统 | |
CN109067864B (zh) | 通知消息推送方法、装置及电子设备 | |
CN111092956A (zh) | 资源同步方法、装置、存储介质及设备 | |
CN116304079A (zh) | 基于时序的图谱数据管理方法、设备和可读存储介质 | |
CN114089912B (zh) | 基于消息中间件的数据处理方法及装置、存储介质 | |
CN114860408A (zh) | 线程池资源管理方法及装置 | |
CN113839783A (zh) | 一种任务处理方法、装置及设备 | |
CN112217849B (zh) | Sd-wan系统中的任务调度方法、系统和计算机设备 | |
CN107967181B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200512 |