CN110196761B - 延迟任务处理方法及装置 - Google Patents
延迟任务处理方法及装置 Download PDFInfo
- Publication number
- CN110196761B CN110196761B CN201910300781.9A CN201910300781A CN110196761B CN 110196761 B CN110196761 B CN 110196761B CN 201910300781 A CN201910300781 A CN 201910300781A CN 110196761 B CN110196761 B CN 110196761B
- Authority
- CN
- China
- Prior art keywords
- task
- time
- tasks
- queue
- waiting time
- 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
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开公开了一种延迟任务处理方法、装置、服务器及计算机可读存储介质,其中,所述方法包括:接收业务服务器通过服务接口发送的至少一个任务;确定各任务的剩余等待时间;其中,剩余等待时间为任务从当前时间到执行时间的差值;将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。本公开通过确定接收的各任务的剩余等待时间;将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理,提供了一种高性能高可用的延迟队列解决方案。
Description
技术领域
本公开涉及信息处理技术领域,尤其涉及一种延迟任务处理方法、装置、服务器及计算机可读存储介质。
背景技术
在日常服务器开发中,会有很多延迟处理或者定时处理某些事件的需求,例如需要定时在每天凌晨4:00执行某个任务,或者需要在某些任务失败后若干时间进行重试,或者需要在用户的某些操作之后的若干时间给用户发一个消息等,因此,延迟队列是一个较为通用的需求。
在现有技术中,使用Java自带的延迟队列DelayQueue实现延迟任务处理,但是其无法做到分布式处理,存在存储性能瓶颈,并且在Java进程退出或崩溃后,未执行的任务会丢失。
发明内容
为克服相关技术中存在的问题,本公开提供一种延迟任务处理方法、装置、服务器及计算机可读存储介质。
根据本公开实施例的第一方面,提供一种延迟任务处理方法,包括:
接收业务服务器通过服务接口发送的至少一个任务;
确定各任务的剩余等待时间;其中,剩余等待时间为任务从当前时间到执行时间的差值;
将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
进一步的,所述将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理,包括:
针对每个任务,分别确定对应的剩余等待时间是否小于最大提前执行时间;其中,最大提前执行时间为预先设定的提前执行任务的时长;
将所述剩余等待时间小于所述最大提前执行时间的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
进一步的,所述方法还包括:
若所述剩余等待时间大于或等于所述最大提前执行时间,则确定所述剩余等待时间是否小于最大缓存时间;其中,最大缓存时间为预先设定的将任务放入缓存中的时长;
将所述剩余等待时间小于最大缓存时间的任务添加到缓存中。
进一步的,所述方法还包括:
将所述剩余等待时间大于或等于所述最大缓存时间的任务添加到数据库中。
进一步的,所述方法还包括:
定时检测添加到所述数据库中的任务,并筛选出所述剩余等待时间小于所述最大缓存时间的任务;
将所述剩余等待时间小于所述最大缓存时间的任务添加到所述缓存中。
进一步的,所述将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理,包括:
定时检测添加到所述数据库中的任务,并筛选出所述剩余等待时间小于所述最大缓存时间的任务;
针对筛选出的而每个任务,分别确定对应的剩余等待时间是否小于所述最大提前执行时间;
将所述剩余等待时间小于所述最大提前执行时间的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
进一步的,所述将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理,包括:
定时检测添加到所述缓存中的任务,并筛选出所述剩余等待时间小于所述最大提前执行时间的任务;
将筛选出的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
进一步的,所述服务接口为grpc接口。
进一步的,所述任务队列为kafka队列。
根据本公开实施例的第二方面,提供一种延迟任务处理装置,包括:
任务接收模块,被配置为接收业务服务器通过服务接口发送的至少一个任务;
时间确定模块,被配置为确定各任务的剩余等待时间;其中,剩余等待时间为任务从当前时间到执行时间的差值;
队列添加模块,被配置为将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
进一步的,所述队列添加模块具体被配置为:针对每个任务,分别确定对应的剩余等待时间是否小于最大提前执行时间;其中,最大提前执行时间为预先设定的提前执行任务的时长;将所述剩余等待时间小于所述最大提前执行时间的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
进一步的,所述队列添加模块还被配置为:若所述剩余等待时间大于或等于所述最大提前执行时间,则确定所述剩余等待时间是否小于最大缓存时间;其中,最大缓存时间为预先设定的将任务放入缓存中的时长;将所述剩余等待时间小于最大缓存时间的任务添加到缓存中。
进一步的,所述队列添加模块还被配置为:将所述剩余等待时间大于或等于所述最大缓存时间的任务添加到数据库中。
进一步的,所述队列添加模块还被配置为:定时检测添加到所述数据库中的任务,并筛选出所述剩余等待时间小于所述最大缓存时间的任务;将所述剩余等待时间小于所述最大缓存时间的任务添加到所述缓存中。
进一步的,所述队列添加模块具体被配置为:定时检测添加到所述数据库中的任务,并筛选出所述剩余等待时间小于所述最大缓存时间的任务;针对筛选出的而每个任务,分别确定对应的剩余等待时间是否小于所述最大提前执行时间;将所述剩余等待时间小于所述最大提前执行时间的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
进一步的,所述队列添加模块具体被配置为:定时检测添加到所述缓存中的任务,并筛选出所述剩余等待时间小于所述最大提前执行时间的任务;将筛选出的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
进一步的,所述服务接口为grpc接口。
进一步的,所述任务队列为kafka队列。
根据本公开实施例的第三方面,提供一种服务器,包括:
处理器;
用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:通过执行指令以实现上述任一项所述的延迟任务处理方法。
根据本公开实施例的第四方面,提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述任一项所述的延迟任务处理方法,所述方法包括:接收业务服务器通过服务接口发送的至少一个任务;确定各任务的剩余等待时间;将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
根据本公开实施例的第五方面,提供一种应用程序,当所述应用程序中的指令由服务器的处理器执行时,使得服务器能够执行一种延迟任务处理方法,所述方法包括:接收业务服务器通过服务接口发送的至少一个任务;确定各任务的剩余等待时间;将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
本公开的实施例提供的技术方案可以包括以下有益效果:通过确定接收的各任务的剩余等待时间;其中,剩余等待时间为任务从当前时间到执行时间的差值;将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理,提供了一种高性能高可用的延迟队列解决方案。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本公开实施例一提供的一种延迟任务处理方法的流程图。
图2是本公开实施例二提供的一种延迟任务处理方法的流程图。
图3是本公开实施例三提供的一种延迟任务处理方法的流程图。
图4是本公开实施例四提供的一种延迟任务处理装置的结构框图。
图5是本公开实施例五提供的一种服务器的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所述的本公开的一些方面相一致的装置和方法的例子。
实施例一
图1是本公开实施例一提供的一种延迟任务处理方法的流程图,本实施例提供的延迟任务处理方法的执行主体,可为本公开实施例提供的延迟任务处理装置,该延迟任务处理装置可以采用硬件或软件实现,该装置可以集成于服务器(例如,延迟队列服务器等)中,该服务器可以为分布式服务器,该分布式服务器可以提供无状态服务,以提高性能和高可用性。如图1所示,包括以下步骤:
在步骤S11中,接收业务服务器通过服务接口发送的至少一个任务。
其中,服务接口可以为grpc接口。
此外,还接收业务服务器通过服务接口发送的任务信息,包括但不限于处理任务需要的上下文信息、任务到期接收该任务的队列、任务执行周期和任务执行次数中的至少一种。
在步骤S12中,确定各任务的剩余等待时间。
其中,剩余等待时间为任务从当前时间到执行时间的差值。
具体的,在接收到任务之后,会检测每个任务的剩余等待时间。
在步骤S13中,将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
其中,为了降低网络及执行所造成的延迟,每个任务会提前一段时间执行,预设要求可以设定为最大提前执行时间。
其中,所述任务队列可以为kafka队列。具体可以将所述剩余等待时间满足预设要求的任务添加到kafka队列的回调kafka主题队列callbackKafkaTopic中。具体的,任务队列使用kafka队列,一方面可以利用kafka队列较高的性能,另一方面可避免业务服务器故障时对延迟队列服务器造成影响,提升了延迟队列服务器的可用性。
本实施例通过确定接收的各任务的剩余等待时间;将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理,提供了一种高性能高可用的延迟队列解决方案。
在一个可选的实施例中,步骤S13包括:
针对每个任务,分别确定对应的剩余等待时间是否小于最大提前执行时间;其中,最大提前执行时间为预先设定的提前执行任务的时长;
将所述剩余等待时间小于所述最大提前执行时间的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
在一个可选的实施例中,所述方法还包括:
若所述剩余等待时间大于或等于所述最大提前执行时间,则确定所述剩余等待时间是否小于最大缓存时间;其中,最大缓存时间为预先设定的将任务放入缓存中的时长;
将所述剩余等待时间小于最大缓存时间的任务添加到缓存中。
具体的,只有剩余等待时间小于最大缓存时间的任务才被放到缓存中,这样可以节省缓存占用。将任务加入缓存中,缓存使用zset格式对任务进行存储,以执行时间作为score,且使用多个key进行随机打散存储,可以防止访问热点和大key问题。
在一个可选的实施例中,所述方法还包括:
将所述剩余等待时间大于或等于所述最大缓存时间的任务添加到数据库中。
其中,数据库可以为MySQL。
具体的,MySQL对任务进行分库分表处理,以增加性能,存储到MySQL的任务包含唯一标识、任务数据、执行时间等,且以执行时间建立索引,便于后续的高效查询及处理。
在一个可选的实施例中,所述方法还包括:
定时检测添加到所述数据库中的任务,并筛选出所述剩余等待时间小于所述最大缓存时间的任务;
将所述剩余等待时间小于所述最大缓存时间的任务添加到所述缓存中。
在一个可选的实施例中,步骤S13包括:
定时检测添加到所述数据库中的任务,并筛选出所述剩余等待时间小于所述最大缓存时间的任务;
针对筛选出的而每个任务,分别确定对应的剩余等待时间是否小于所述最大提前执行时间;
将所述剩余等待时间小于所述最大提前执行时间的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
具体的,对于所述剩余等待时间小于所述最大提前执行时间的任务,将其添加到任务队列中,此外,可以将其从数据库中删除。对于所述剩余等待时间大于或等于所述最大提前执行时间的任务,将其添加到缓存中。在一个可选的实施例中,步骤S13包括:
定时检测添加到所述缓存中的任务,并筛选出所述剩余等待时间小于所述最大提前执行时间的任务;
将筛选出的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
此外,从缓存中删除已被添加到任务队列中的任务。
实施例二
图2是本公开实施例二提供的一种延迟任务处理方法的流程图,本实施例为一具体实施例,用于对本公开进行解释说明,本实施例的执行主体为延迟队列服务器,该延迟队列服务器为分布式服务器,可以提供无状态服务,以提高性能和高可用性。如图2所示,包括以下步骤:
在步骤S21中,延迟队列服务器接收业务服务器通过grpc服务接口发送的至少一个任务。
其中,还包括任务需要的上下文数据、任务到期后接收该任务的kafka队列callbackKafkaTopic、任务执行周期、任务执行次数等。
在步骤S22中,延迟队列服务器确定各任务的剩余等待时间。
在步骤S23中,针对每个任务,延迟队列服务器分别确定对应的剩余等待时间是否小于最大提前执行时间。
其中,最大提前执行时间为预先设定的提前执行任务的时长。
若小于最大提前执行时间,则执行步骤S24~S25,若大于或等于最大提前执行时间,则执行步骤S26。
在步骤S24中,延迟队列服务器将所述剩余等待时间小于最大提前执行时间的任务添加到kafka队列callbackKafkaTopic中。
在步骤S25中,业务服务器监听所述kafka队列callbackKafkaTopic,并对已经到期的任务进行处理。
在步骤S26中,延迟队列服务器确定所述剩余等待时间是否小于最大缓存时间。
其中,最大缓存时间为预先设定的将任务放入缓存中的时长。
若小于最大缓存时间,则执行步骤S27,若大于或等于最大缓存时间,则执行步骤S28。
在步骤S27中,延迟队列服务器将所述剩余等待时间小于最大缓存时间的任务添加到缓存中。
在步骤S28中,延迟队列服务器将所述剩余等待时间大于或等于所述最大缓存时间的任务添加到MySQL中。本实施例通过将延迟队列服务器设计为分布式无状态服务,并使用grpc服务接口进行任务提交,使用MySQL数据库加缓存进行任务的存储,并使用kafka队列进行任务回调,充分利用了各组件的优势,并避免了相关的不足。
实施例三
图3是本公开实施例三提供的一种延迟任务处理方法的流程图,本实施例为另一具体实施例,用于对本公开进行解释说明,本实施例的执行主体为延迟队列服务器,该延迟队列服务器为分布式服务器,可以提供无状态服务,以提高性能和高可用性。如图3所示,包括以下步骤:
在步骤S31中,延迟队列服务器接收业务服务器通过grpc服务接口发送的至少一个任务。
在步骤S32中,延迟队列服务器确定各任务的剩余等待时间。
其中,剩余等待时间为任务从当前时间到执行时间的差值。
在步骤S33中,延迟队列服务器定时检测添加到MySQL中的任务,并筛选出所述剩余等待时间小于所述最大缓存时间的任务。
在步骤S34中,延迟队列服务器针对筛选出的而每个任务,分别确定对应的剩余等待时间是否小于所述最大提前执行时间。
若小于所述最大提前执行时间,则执行步骤S35~S36,若大于或等于所述最大提前执行时间,则执行步骤S37。
在步骤S35中,延迟队列服务器将所述剩余等待时间小于所述最大提前执行时间的任务添加到kafka队列callbackKafkaTopic中。
在步骤S36中,延迟队列服务器对于已经加入到kafka队列中的任务,从MySQL中将其删除。
在步骤S37中,延迟队列服务器将所述剩余等待时间大于或等于所述最大提前执行时间的任务添加到缓存中。
在步骤S38中,延迟队列服务器对于已经加入到kafka队列中的任务,将其从缓存中删除。
在步骤S39中,延迟队列服务器定时检测添加到所述缓存中的任务,并筛选出所述剩余等待时间小于所述最大提前执行时间的任务添加到kafka队列callbackKafkaTopic中。
在步骤S310中,业务服务器监听kafka队列callbackKafkaTopic,并对到期的任务进行处理。
本实施例通过将延迟队列服务器设计为分布式无状态服务,并使用grpc服务接口进行任务提交,使用MySQL数据库加缓存进行任务的存储,并使用kafka队列进行任务回调,充分利用了各组件的优势,并避免了相关的不足。
实施例四
图4是本公开实施例四提供的一种延迟任务处理装置框图。该延迟任务处理装置可以采用硬件或软件实现,该装置可以集成于服务器(例如,延迟队列服务器等)中,该服务器可以为分布式服务器,该分布式服务器可以提供无状态服务,以提高性能和高可用性。参照图4,该装置包括任务接收模块41、时间确定模块42和队列添加模块43。其中,任务接收模块41、时间确定模块42和队列添加模块43依次连接。
任务接收模块41被配置为接收业务服务器通过服务接口发送的至少一个任务;
时间确定模块42被配置为确定各任务的剩余等待时间;其中,剩余等待时间为任务从当前时间到执行时间的差值;
队列添加模块43被配置为将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
进一步的,所述队列添加模块43具体被配置为:针对每个任务,分别确定对应的剩余等待时间是否小于最大提前执行时间;其中,最大提前执行时间为预先设定的提前执行任务的时长;将所述剩余等待时间小于所述最大提前执行时间的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
进一步的,所述队列添加模块43还被配置为:若所述剩余等待时间大于或等于所述最大提前执行时间,则确定所述剩余等待时间是否小于最大缓存时间;其中,最大缓存时间为预先设定的将任务放入缓存中的时长;将所述剩余等待时间小于最大缓存时间的任务添加到缓存中。
进一步的,所述队列添加模块43还被配置为:将所述剩余等待时间大于或等于所述最大缓存时间的任务添加到数据库中。
进一步的,所述队列添加模块43还被配置为:定时检测添加到所述数据库中的任务,并筛选出所述剩余等待时间小于所述最大缓存时间的任务;将所述剩余等待时间小于所述最大缓存时间的任务添加到所述缓存中。
进一步的,所述队列添加模块43具体被配置为:定时检测添加到所述数据库中的任务,并筛选出所述剩余等待时间小于所述最大缓存时间的任务;针对筛选出的而每个任务,分别确定对应的剩余等待时间是否小于所述最大提前执行时间;将所述剩余等待时间小于所述最大提前执行时间的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
进一步的,所述队列添加模块43具体被配置为:定时检测添加到所述缓存中的任务,并筛选出所述剩余等待时间小于所述最大提前执行时间的任务;将筛选出的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
进一步的,所述服务接口为grpc接口。
进一步的,所述任务队列为kafka队列。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
实施例五
本公开实施例提供一种服务器,包括:
处理器;
用于存储处理器可执行指令的存储器;其中,该处理器被配置为:
接收业务服务器通过服务接口发送的至少一个任务;
确定各任务的剩余等待时间;其中,剩余等待时间为任务从当前时间到执行时间的差值;
将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
其中,图5是根据一示例性实施例示出的一种用于服务器的结构框图。例如,装置可以被提供为一服务器。参照图5,装置包括处理组件522,其进一步包括一个或多个处理器,以及由存储器532所代表的存储器资源,用于存储可由处理组件522的执行的指令,例如应用程序。存储器532中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件522被配置为执行指令,以执行上述方法。
装置还可以包括一个电源组件526被配置为执行装置的电源管理,一个有线或无线网络接口550被配置为将装置连接到网络,和一个输入输出(I/O)接口558。该装置可以操作基于存储在存储器532的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器532,上述指令可由服务器的处理器522执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种应用程序,例如包括指令的存储器532,上述指令可由服务器的处理器522执行以完成上述方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (18)
1.一种延迟任务处理方法,其特征在于,包括:
接收业务服务器通过服务接口发送的至少一个任务;
确定各任务的剩余等待时间;其中,剩余等待时间为任务从当前时间到执行时间的差值;
将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理;
其中,所述将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理,包括:针对每个任务,分别确定对应的剩余等待时间是否小于最大提前执行时间;其中,最大提前执行时间为预先设定的提前执行任务的时长;将所述剩余等待时间小于所述最大提前执行时间的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
2.根据权利要求1所述的延迟任务处理方法,其特征在于,所述方法还包括:
若所述剩余等待时间大于或等于所述最大提前执行时间,则确定所述剩余等待时间是否小于最大缓存时间;其中,最大缓存时间为预先设定的将任务放入缓存中的时长;
将所述剩余等待时间小于最大缓存时间的任务添加到缓存中。
3.根据权利要求2所述的延迟任务处理方法,其特征在于,所述方法还包括:
将所述剩余等待时间大于或等于所述最大缓存时间的任务添加到数据库中。
4.根据权利要求3所述的延迟任务处理方法,其特征在于,所述方法还包括:
定时检测添加到所述数据库中的任务,并筛选出所述剩余等待时间小于所述最大缓存时间的任务;
将所述剩余等待时间小于所述最大缓存时间的任务添加到所述缓存中。
5.根据权利要求3所述的延迟任务处理方法,其特征在于,所述将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理,包括:
定时检测添加到所述数据库中的任务,并筛选出所述剩余等待时间小于所述最大缓存时间的任务;
针对筛选出的而每个任务,分别确定对应的剩余等待时间是否小于所述最大提前执行时间;
将所述剩余等待时间小于所述最大提前执行时间的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
6.根据权利要求2所述的延迟任务处理方法,其特征在于,所述将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理,包括:
定时检测添加到所述缓存中的任务,并筛选出所述剩余等待时间小于所述最大提前执行时间的任务;
将筛选出的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
7.根据权利要求1-6任一项所述的延迟任务处理方法,其特征在于,所述服务接口为grpc接口。
8.根据权利要求1-6任一项所述的延迟任务处理方法,其特征在于,所述任务队列为kafka队列。
9.一种延迟任务处理装置,其特征在于,包括:
任务接收模块,被配置为接收业务服务器通过服务接口发送的至少一个任务;
时间确定模块,被配置为确定各任务的剩余等待时间;其中,剩余等待时间为任务从当前时间到执行时间的差值;
队列添加模块,被配置为将所述剩余等待时间满足预设要求的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理;
其中,所述队列添加模块具体被配置为:针对每个任务,分别确定对应的剩余等待时间是否小于最大提前执行时间;其中,最大提前执行时间为预先设定的提前执行任务的时长;将所述剩余等待时间小于所述最大提前执行时间的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
10.根据权利要求9所述的延迟任务处理装置,其特征在于,所述队列添加模块还被配置为:若所述剩余等待时间大于或等于所述最大提前执行时间,则确定所述剩余等待时间是否小于最大缓存时间;其中,最大缓存时间为预先设定的将任务放入缓存中的时长;将所述剩余等待时间小于最大缓存时间的任务添加到缓存中。
11.根据权利要求10所述的延迟任务处理装置,其特征在于,所述队列添加模块还被配置为:将所述剩余等待时间大于或等于所述最大缓存时间的任务添加到数据库中。
12.根据权利要求11所述的延迟任务处理装置,其特征在于,所述队列添加模块还被配置为:定时检测添加到所述数据库中的任务,并筛选出所述剩余等待时间小于所述最大缓存时间的任务;将所述剩余等待时间小于所述最大缓存时间的任务添加到所述缓存中。
13.根据权利要求11所述的延迟任务处理装置,其特征在于,所述队列添加模块具体被配置为:定时检测添加到所述数据库中的任务,并筛选出所述剩余等待时间小于所述最大缓存时间的任务;针对筛选出的而每个任务,分别确定对应的剩余等待时间是否小于所述最大提前执行时间;将所述剩余等待时间小于所述最大提前执行时间的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
14.根据权利要求10所述的延迟任务处理装置,其特征在于,所述队列添加模块具体被配置为:定时检测添加到所述缓存中的任务,并筛选出所述剩余等待时间小于所述最大提前执行时间的任务;将筛选出的任务添加到任务队列中,以使所述业务服务器监听所述任务队列,并对已经到期的任务进行处理。
15.根据权利要求9-14任一项所述的延迟任务处理装置,其特征在于,所述服务接口为grpc接口。
16.根据权利要求9-14任一项所述的延迟任务处理装置,其特征在于,所述任务队列为kafka队列。
17.一种服务器,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
通过执行指令以实现权利要求1-8任一项所述的延迟任务处理方法。
18.一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行权利要求1-8任一项所述的延迟任务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910300781.9A CN110196761B (zh) | 2019-04-15 | 2019-04-15 | 延迟任务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910300781.9A CN110196761B (zh) | 2019-04-15 | 2019-04-15 | 延迟任务处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110196761A CN110196761A (zh) | 2019-09-03 |
CN110196761B true CN110196761B (zh) | 2021-10-19 |
Family
ID=67751937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910300781.9A Active CN110196761B (zh) | 2019-04-15 | 2019-04-15 | 延迟任务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110196761B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111104257A (zh) * | 2019-11-30 | 2020-05-05 | 浪潮(北京)电子信息产业有限公司 | 一种备份日志数据的防超时方法、装置、设备及介质 |
CN111222947A (zh) * | 2020-01-02 | 2020-06-02 | 北京字节跳动网络技术有限公司 | 延迟事件的处理方法、装置、电子设备和存储介质 |
CN112286655A (zh) * | 2020-10-19 | 2021-01-29 | 江苏银承网络科技股份有限公司 | 分布式延时调度方法、装置及系统 |
CN112286704B (zh) * | 2020-11-19 | 2023-08-15 | 每日互动股份有限公司 | 延时任务的处理方法、装置、计算机设备及存储介质 |
CN112596882A (zh) * | 2020-12-25 | 2021-04-02 | 上海悦易网络信息技术有限公司 | 一种延时任务调度的方法、设备及系统 |
CN113238849A (zh) * | 2021-05-31 | 2021-08-10 | 杭州网易云音乐科技有限公司 | 定时任务处理方法、装置、存储介质与电子设备 |
CN113360263B (zh) * | 2021-06-08 | 2023-01-31 | 展讯通信(天津)有限公司 | 一种任务处理方法、系统及相关设备 |
CN113590708B (zh) * | 2021-06-17 | 2024-02-20 | 贝壳找房(北京)科技有限公司 | 自适应延迟消费方法、程序产品及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001075822A (ja) * | 1999-09-08 | 2001-03-23 | Nec Ic Microcomput Syst Ltd | リアルタイムosのメモリ領域及びそのメモリ領域を用いたタスク管理方法 |
CN102662744A (zh) * | 2012-04-19 | 2012-09-12 | 上海大学 | 一种基于条件抢占的fpga任务调度方法 |
CN104915253A (zh) * | 2014-03-12 | 2015-09-16 | 中国移动通信集团河北有限公司 | 一种作业调度的方法及作业处理器 |
CN105512297A (zh) * | 2015-12-10 | 2016-04-20 | 中国测绘科学研究院 | 一种基于分布式流式计算的空间数据处理方法与系统 |
CN107291566A (zh) * | 2017-06-15 | 2017-10-24 | 北京京东尚科信息技术有限公司 | 延迟任务执行的方法和装置 |
CN109582466A (zh) * | 2017-09-29 | 2019-04-05 | 北京金山软件有限公司 | 一种定时任务执行方法、分布式服务器集群及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2540809B (en) * | 2015-07-29 | 2017-12-13 | Advanced Risc Mach Ltd | Task scheduling |
-
2019
- 2019-04-15 CN CN201910300781.9A patent/CN110196761B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001075822A (ja) * | 1999-09-08 | 2001-03-23 | Nec Ic Microcomput Syst Ltd | リアルタイムosのメモリ領域及びそのメモリ領域を用いたタスク管理方法 |
CN102662744A (zh) * | 2012-04-19 | 2012-09-12 | 上海大学 | 一种基于条件抢占的fpga任务调度方法 |
CN104915253A (zh) * | 2014-03-12 | 2015-09-16 | 中国移动通信集团河北有限公司 | 一种作业调度的方法及作业处理器 |
CN105512297A (zh) * | 2015-12-10 | 2016-04-20 | 中国测绘科学研究院 | 一种基于分布式流式计算的空间数据处理方法与系统 |
CN107291566A (zh) * | 2017-06-15 | 2017-10-24 | 北京京东尚科信息技术有限公司 | 延迟任务执行的方法和装置 |
CN109582466A (zh) * | 2017-09-29 | 2019-04-05 | 北京金山软件有限公司 | 一种定时任务执行方法、分布式服务器集群及电子设备 |
Non-Patent Citations (2)
Title |
---|
DelayQueue系列(一):源码分析;逍遥jc;《https://juejin.cn/post/6844903745667481613》;20181223;第1-4页 * |
延时任务队列的原理与实现总结;jiangmo;《https://www.jianshu.com/p/a8c1458998aa》;20171130;第1-7页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110196761A (zh) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110196761B (zh) | 延迟任务处理方法及装置 | |
US11210185B2 (en) | Method and system for data recovery in a data system | |
CN108600005A (zh) | 一种防御微服务雪崩效应的方法 | |
US8447757B1 (en) | Latency reduction techniques for partitioned processing | |
JPH10214199A (ja) | プロセスリスタート方法およびプロセスリスタートを実現するためのシステム | |
CN111338773A (zh) | 一种分布式定时任务调度方法、调度系统及服务器集群 | |
US10691496B2 (en) | Dynamic micro-services related job assignment | |
US11159604B2 (en) | Processing an operation with a plurality of processing steps | |
CN113037862B (zh) | 业务请求的处理方法、装置、设备及存储介质 | |
CN110012062B (zh) | 一种多机房任务调度方法、装置及存储介质 | |
WO2017185615A1 (zh) | 一种业务处理设备的业务状态确定方法及调度设备 | |
CN108829519A (zh) | 基于云平台的任务调度方法、云平台及计算机可读存储介质 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
CN113360577A (zh) | 一种mpp数据库数据处理方法、装置、设备及存储介质 | |
CN107819855B (zh) | 一种消息分发方法及装置 | |
CN112825525B (zh) | 用于处理事务的方法和装置 | |
CN111835809B (zh) | 工单消息分配方法、装置、服务器及存储介质 | |
US11153399B2 (en) | Facilitating inter-proxy communication via an existing protocol | |
US10154088B2 (en) | System and method for migrating an agent server to an agent client device | |
CN113965563B (zh) | 基于模型的业务处理方法及装置、服务器 | |
CN111245909B (zh) | 分布式动态调度方法、装置、电子设备及存储介质 | |
CN114385351A (zh) | 云管理平台负载均衡性能优化方法、装置、设备、介质 | |
CN113296968A (zh) | 地址列表更新方法、装置、介质及电子设备 | |
CN113761051A (zh) | 消息推送方法、数据获取方法、装置、系统、设备和介质 | |
CN113407331A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |