CN112948081B - 延时处理任务的方法、装置、设备以及存储介质 - Google Patents
延时处理任务的方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN112948081B CN112948081B CN202110215500.7A CN202110215500A CN112948081B CN 112948081 B CN112948081 B CN 112948081B CN 202110215500 A CN202110215500 A CN 202110215500A CN 112948081 B CN112948081 B CN 112948081B
- Authority
- CN
- China
- Prior art keywords
- task
- delay
- ready queue
- execution time
- 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
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
-
- 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
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/407—Cancellation of a transaction
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请公开了一种延时处理任务的方法、装置、设备以及存储介质,涉及云计算技术领域,可应用于云平台。该方法的一具体实施方式包括:接收任务,将任务的元信息存储在工作池中;将任务的ID存入延迟桶中,计算任务的绝对执行时间;实时扫描各个延迟桶,若已达到任务的绝对执行时间,将任务的ID存入就绪队列中,并从工作池中获取任务的元信息;实时监听就绪队列,执行就绪队列中的待消费任务。该实施方式一种延时处理任务的方法,实现了消息的延迟消费,从而解决了实际业务场景中的需求。
Description
技术领域
本申请实施例涉及计算机领域,具体涉及云计算技术领域,尤其涉及延时处理任务的方法、装置、设备以及存储介质。
背景技术
随着开放平台的某些业务场景需要对一些业务进行延迟处理,如用户下单成功后15分钟内未支付,给用户发个短信提醒,30分钟未支付订单自动取消;外卖商家超时未接单,则自动取消;网站新注册用户,3天内未完成信息认证,发送短信提醒等。随着业务量以及用户的增加,延迟任务数量也会很大。
目前的解决办法是定时去扫表,但是由于扫表需要与数据库长时间链接,在数据量大的情况下容易出现连接异常中断的情况,需要更多的异常处理,对编码能力要求高。另外,每个业务都需要维护一个自己的扫表逻辑,当业务越来越多时会出现扫表逻辑重复开发的情况,使开发人员进行重复劳动,浪费时间和精力。
发明内容
本申请实施例提出了一种延时处理任务的方法、装置、设备以及存储介质。
第一方面,本申请实施例提出了一种延时处理任务的方法,包括:接收任务,将任务的元信息存储在工作池中;将任务的ID存入延迟桶中,计算任务的绝对执行时间;实时扫描各个延迟桶,若已达到任务的绝对执行时间,将任务的ID存入就绪队列中,并从工作池中获取任务的元信息;实时监听就绪队列,执行就绪队列中的待消费任务。
第二方面,本申请实施例提出了一种延时处理任务的装置,包括:接收模块,被配置成接收任务,将任务的元信息存储在工作池中;计算模块,被配置成将任务的ID存入延迟桶中,计算任务的绝对执行时间;第一存储模块,被配置成实时扫描各个延迟桶,若已达到任务的绝对执行时间,将任务的ID存入就绪队列中,并从工作池中获取任务的元信息;执行模块,被配置成实时监听就绪队列,执行就绪队列中的待消费任务。
第三方面,本申请实施例提出了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如第一方面中任一实现方式描述的方法。
第四方面,本申请实施例提出了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行如第一方面中任一实现方式描述的方法。
第五方面,本申请实施例提出了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现如第一方面中任一实现方式描述的方法。
本申请实施例提供的延时处理任务的方法、装置、设备以及存储介质,首先接收任务,将任务的元信息存储在工作池中;之后将任务的ID存入延迟桶中,计算任务的绝对执行时间;然后实时扫描各个延迟桶,若已达到任务的绝对执行时间,将任务的ID存入就绪队列中,并从工作池中获取任务的元信息;最后实时监听就绪队列,执行就绪队列中的待消费任务。本申请提供了一种延时处理任务的方法,实现了任务的延迟消费,提高处理任务的合理性和效率,减少了延时任务占用的系统资源,也解决了实际业务场景中的需求。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显。附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的延时处理任务的方法的一个实施例的流程图;
图3是根据本申请的延时处理任务的方法的另一个实施例的流程图;
图4是本申请的延时处理任务的方法的实现框图;
图5是根据本申请的延时处理任务的装置的一个实施例的结构示意图;
图6是用来实现本申请实施例的延时处理任务的方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的延时处理任务的方法或延时处理任务的装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括服务器101、102、103,网络104和服务器105。网络104用以在服务器101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
服务器101、102、103通过网络104与服务器105交互,以接收或发送任务等。
服务器105可以提供各种服务。例如,服务器105可以对从服务器101、102、103获取到的任务进行处理,并生成处理结果(例如待消费任务)。
需要说明的是,服务器105可以是硬件,也可以是软件。当服务器105为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器105为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
需要说明的是,本申请实施例所提供的延时处理任务的方法一般由服务器105执行,相应地,延时处理任务的装置一般设置于服务器105中。
应该理解,图1中的网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的网络和服务器。
继续参考图2,其示出了根据本申请的延时处理任务的方法的一个实施例的流程200。该延时处理任务的方法包括以下步骤:
步骤201,接收任务,将任务的元信息存储在工作池中。
在本实施例中,延时处理任务的方法的执行主体(例如图1所示的服务器105)可以接收用户提交的延时任务,并将任务的元信息存储在工作池中。任务的元信息是描述用户提交的任务信息以及任务状态的信息。作为示例,任务可以为:订单是否支付的任务(用户下单成功,15分钟内未支付,给用户发个短信提醒,30分钟未支付订单自动取消),定期发送消息的任务(网站新注册用户,3天内未完成信息认证,发送短信提醒)等等。
当用户提交任务后,上述执行主体会接收该任务,并将该任务的元信息存储在工作池中,工作池使用KV(Key-Value)类型数据结构,其中,Key为任务的ID(Identitydocument,身份标识号),Value的数据结构为字典,字典以键值对的形式存储。工作池中存储的基本数据可表示为以下结构:{"raw":"原始数据","status":"消息状态},其中,原始数据中存储了任务的相关信息,例如任务提交时的唯一ID、任务延迟执行的时间、任务的具体内容等,且原始数据使用msgpack编码格式进行编码,msgpack是一个基于二进制高效的对象序列化,该编码格式相比json(JavaScript Object Notation,JS对象简谱)格式能节省大约30%的存储空间。另外,基本数据中的消息状态表明了该任务的状态,例如消息状态可以为:0、1或2,其中,0代表初始化,1代表待消费(从延迟桶在迁移而来),2代表待消费(从失败队列迁移而来)。
在本实施例的一些可选实现方式中,任务包含任务的延迟执行时间、通用唯一识别码UUID(Universally Unique Identifier)和消息体;以及上述任务的ID为该任务的UUID。作为示例,当用户会员购买成功后,会向延时队列中写入一个任务,该任务的结构可以表示为:{"uuid":"jmxXFcon4PZu2PXnr6IbSzpuDff","delay":1800,"message":"xxx"},其中,uuid为任务提交时唯一的id;delay为该任务的延迟执行时间,delay为1800表示该任务的延迟执行时间为1800,即在1800秒后开始处理该任务;message为该任务的消息体,其中包含着该任务对应的业务逻辑信息。
步骤202,将任务的ID存入延迟桶中,计算任务的绝对执行时间。
在本实施例中,上述执行主体可以将任务的ID存入延迟桶中,并计算任务的绝对执行时间。延迟桶是一组以时间为维度的有序队列,其中存放所有需要延迟的任务的ID(也即任务的结构中的UUID字段),可将任务的延迟执行时间作为排序因子,分为多个有序队列,将其分为多个有序队列是为了提高扫描速度,降低消息延迟。例如,可分为16个有序队列,也可以根据实际数据情况增加或减少该值,分的个数越多承载的数据量越大。将延迟执行时间不超过预设阈值的任务的ID存入延迟桶中,作为示例,可以轮询的方式将延迟执行时间不超过3个月的任务的ID存入延迟桶中,在将延迟执行时间不超过预设阈值的任务的ID存入延迟桶中后,会计算上述任务的绝对执行时间,作为示例,可基于任务的delay时间与当前时间计算出该任务的绝对执行时间,假设任务1的delay时间为300秒、当前时间为北京时间13:00,可知任务1希望在300秒即5分钟后被处理,所以可以得到任务1的绝对执行时间为北京时间13:05。
步骤203,实时扫描各个延迟桶,若已达到任务的绝对执行时间,将任务的ID存入就绪队列中,并从工作池中获取任务的元信息。
在本实施例中,上述执行主体可以实时扫描各个延迟桶,在已达到任务的绝对执行时间的情况下,将任务的ID存入就绪队列中,并从工作池中获取任务的元信息。上述执行主体实时扫描各个延迟桶,以对各个延迟桶中的任务进行实时监听,当已达到任务的延迟执行时间,即达到了该任务的绝对执行时间,则将该任务的ID存入就绪队列中,并根据该任务的ID从工作池中获取该任务的元信息,之后再将该任务的ID从延迟桶中移除,以避免系统资源的浪费,合理管理和使用系统资源。其中,就绪队列中存储的是已到期(已到绝对执行时间)的任务,供消费者程序消费,就绪队列中存储的都是待消费任务。
步骤204,实时监听就绪队列,执行就绪队列中的待消费任务。
在本实施例中,上述执行主体可以实时监听就绪队列,执行就绪队列中的待消费任务。当达到任务的绝对执行时间时,该任务的ID会被存入就绪队列,所以服务端实时监听就绪队列,以便实时获取就绪队列中的待消费任务,当监听到有任务已到期被存入就绪队列中后,就从就绪队列中取出待消费任务的数据,执行相应的业务逻辑,也即任务中消息体对应的业务逻辑信息,并从工作池中删除该任务对应的元信息。
本申请实施例提供的延时处理任务的方法,首先接收任务,将任务的元信息存储在工作池中;之后将任务的ID存入延迟桶中,计算任务的绝对执行时间;然后实时扫描各个延迟桶,若已达到任务的绝对执行时间,将任务的ID存入就绪队列中,并从工作池中获取任务的元信息;最后实时监听就绪队列,执行就绪队列中的待消费任务。本申请提供了一种延时处理任务的方法,实现了消息的延迟消费,提高了处理任务的合理性和效率,减少了延时任务占用的系统资源,从而解决了实际业务场景中的需求。
继续参考图3,图3示出了根据本申请的延时处理任务的方法的另一个实施例的流程300。该延时处理任务的方法包括以下步骤:
步骤301,接收任务,将任务的元信息存储在工作池中。
在本实施例中,延时处理任务的方法的执行主体可以接收用户提交的任务,并将任务的元信息存储在工作池中,任务包括任务的延迟执行时间、UUID和消息体信息。步骤301与前述实施例的步骤201相对应,具体实现方式可以参考前述对步骤201的描述,此处不再赘述。
步骤302,判断任务的延时执行时间是否超过预设阈值,基于判断结果将该任务存储到相应的区域。
在本实施例中,上述执行主体会判断任务的延时执行时间是否超过预设阈值,并基于判断结果将该任务存储到相应的区域。
在本实施例的一些可选实现方式中,若任务的延时执行时间超过预设阈值,则将任务存入延迟数据存储区。上述执行主体可以在任务的延时执行时间超过预设阈值的情况下,将任务存入延迟数据存储区中。延迟数据存储区中存放超长过期时间的任务,即延时执行时间超过预设阈值的任务,例如一年后执行的任务。将延时执行时间超过预设阈值的任务存到延迟数据存储区中,以降低延迟桶模块的数据压力,在任务即将到期的Y时间内,再将任务迁移到延迟桶中。
在本实施例的一些可选实现方式中,在任务的延时执行时间超过预设阈值的情况下,将任务存入延迟数据存储区后,还会实时扫描延迟数据存储区,将延时执行时间小于预定时间的任务存入延迟桶中。当任务的延时执行时间小于预定时间,说明即将要达到该任务的执行时间。可选地,可由定时器实时扫描延迟数据存储区,以实时将要被处理的任务迁移到延迟桶中,以能够实时获取将要被处理的任务。
在本实施例的一些可选实现方式中,若任务的延时执行时间没有超过预设阈值,则继续执行步骤303。
步骤303,将任务的ID存入延迟桶中,计算任务的绝对执行时间。
在本实施例中,上述执行主体可以将任务的ID存入延迟桶中,并计算任务的绝对执行时间。步骤303与前述实施例的步骤202相对应,具体实现方式可以参考前述对步骤202的描述,此处不再赘述。
步骤304,由定时器实时扫描各个延迟桶,若已达到任务的绝对执行时间,将任务的ID存入就绪队列中,并从工作池中获取任务的元信息。
在本实施例中,由定时器实时扫描各个延迟桶,若已达到任务的绝对执行时间,将任务的ID存入就绪队列中,并从工作池中获取所述任务的元信息。定时器负责实时扫描各个延迟桶,当达到了延迟桶中的任务的绝对执行时间,则将该任务的ID存入就绪队列中,并根据该任务的ID从工作池中获取该任务的元信息,然后将该任务的ID从延迟桶中移除。
步骤305,实时监听就绪队列,执行就绪队列中的待消费任务。
在本实施例中,上述执行主体可以实时监听就绪队列,执行就绪队列中的待消费任务。步骤305与前述实施例的步骤204相对应,具体实现方式可以参考前述对步骤204的描述,此处不再赘述。
在本实施例的一些可选实现方式中,上述执行主体在实时监听就绪队列,执行就绪队列中的待消费任务后,还会从工作池中删除待消费任务对应的元信息,删除已消费任务的信息,从而实时管理工作池的存储空间,合理利用系统资源。
在本实施例的一些可选实现方式中,当就绪队列中的待消费任务执行操作失败时,将待消费任务存入失败队列中,由对应的线程处理失败队列中的任务。失败队列存放从就绪队列中取出但未处理成功的待消费任务的ID。当就绪队列中的待消费任务执行失败时,将该任务存入失败队列中,失败队列中的任务由对应的、单独的线程去处理,因而不会影响就绪队列中的其他任务的执行。
本申请实施例提供的延时处理任务的方法,首先接收任务,将任务的元信息存储在工作池中;之后判断任务的延时执行时间是否超过预设阈值,基于判断结果将该任务存储到相应的区域;然后将任务的ID存入延迟桶中,计算任务的绝对执行时间;并由定时器实时扫描各个延迟桶,若已达到任务的绝对执行时间,将任务的ID存入就绪队列中,并从工作池中获取任务的元信息;最后实时监听就绪队列,执行就绪队列中的待消费任务。本申请提供了一种延时处理任务的方法,实现了消息的延迟消费,提高处理任务的合理性和效率,减少了延时任务占用的系统资源,从而解决了实际业务场景中的需求。
继续参考图4,图4是本申请的延时处理任务的方法的实现框图。如图4所示,接收用户提交的任务,并将任务的元信息存储在工作池(Job Pool)中;若任务的延时执行时间超过预设阈值,则将任务存入延迟数据存储区(DB Storage)中,同时由定时器实时扫描延迟数据存储区,将延时执行时间小于预定时间的任务存入延迟桶中;若任务的延时执行时间没有超过预设阈值,以轮询的方式将任务的ID存入延迟桶(Delay Bucket)中,并基于任务的延迟执行时间计算该任务的绝对执行时间,Delay Bucket中包括多个有序队列,如有序队列1、有序队列2、有序队列3等等;之后由定时器实时扫描各个Delay Bucket,当过了任务的延迟执行时间时,根据该任务的ID从Job Pool中获取该任务的元信息,并将该任务的ID存入就绪队列(Ready Queue)中;之后实时监听Ready Queue,从Ready Queue取出待消费任务的数据,执行该待消费任务对应的业务逻辑;最后在就绪队列中的待消费任务执行操作失败的情况下,将待消费任务存入失败队列(Failed Queue)中,由对应的线程处理失败队列中的任务。
进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种延时处理任务的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的延时处理任务的装置500可以包括:接收模块501、计算模块502、第一存储模块503和执行模块504。其中,接收模块501,被配置成接收任务,将任务的元信息存储在工作池中;计算模块502,被配置成将任务的ID存入延迟桶中,计算任务的绝对执行时间;第一存储模块503,被配置成实时扫描各个延迟桶,若已达到任务的绝对执行时间,将任务的ID存入就绪队列中,并从工作池中获取任务的元信息;执行模块504,被配置成实时监听就绪队列,执行就绪队列中的待消费任务。
在本实施例中,延时处理任务的装置500中:接收模块501、计算模块502、第一存储模块503和执行模块504的具体处理及其所带来的技术效果可分别参考图2对应实施例中的步骤201-204的相关说明,在此不再赘述。
在本实施例的一些可选的实现方式中,任务包含任务的延迟执行时间、通用唯一识别码UUID和消息体;以及任务的ID为任务的UUID。
在本实施例的一些可选的实现方式中,上述延时处理任务的装置还包括:第二存储模块,被配置成若任务的延时执行时间超过预设阈值,则将该任务存入延迟数据存储区。
在本实施例的一些可选的实现方式中,上述延时处理任务的装置还包括:第三存储模块,被配置成实时扫描延迟数据存储区,将延时执行时间小于预定时间的任务存入延迟桶中。
在本实施例的一些可选的实现方式中,上述延时处理任务的装置还包括:删除模块,被配置成从工作池中删除待消费任务对应的元信息。
在本实施例的一些可选的实现方式中,上述延时处理任务的装置还包括:第四存储模块,被配置成若就绪队列中的待消费任务执行操作失败,则将待消费任务存入失败队列中,由对应的线程处理失败队列中的任务。
根据本申请的实施例,本申请还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图6示出了可以用来实施本公开的实施例的示例电子设备600的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如延时处理任务的方法。例如,在一些实施例中,延时处理任务的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM 603并由计算单元601执行时,可以执行上文描述的延时处理任务的方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行延时处理任务的方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (8)
1.一种延时处理任务的方法,包括:
接收任务,将所述任务的元信息存储在工作池中;
将所述任务的ID存入延迟桶中,计算所述任务的绝对执行时间;
实时扫描各个延迟桶,若已达到所述任务的绝对执行时间,将所述任务的ID存入就绪队列中,并从所述工作池中获取所述任务的元信息;
实时监听就绪队列,执行所述就绪队列中的待消费任务;
其中,在所述将所述任务的ID存入延迟桶中,计算所述任务的绝对执行时间之前,所述方法还包括:
若所述任务的延时执行时间超过预设阈值,则将所述任务存入延迟数据存储区;
实时扫描所述延迟数据存储区,将所述延时执行时间小于预定时间的任务存入所述延迟桶中;
其中,在所述实时监听就绪队列,执行所述就绪队列中的待消费任务之后,所述方法还包括:
若所述就绪队列中的待消费任务执行操作失败,则将所述待消费任务存入失败队列中,由对应的线程处理所述失败队列中的任务。
2.根据权利要求1所述的方法,其中,所述任务包含所述任务的延迟执行时间、通用唯一识别码UUID和消息体;以及
所述任务的ID为所述任务的UUID。
3.根据权利要求1所述的方法,其中,在所述实时监听就绪队列,执行所述就绪队列中的待消费任务之后,所述方法还包括:
从所述工作池中删除所述待消费任务对应的元信息。
4.一种延时处理任务的装置,包括:
接收模块,被配置成接收任务,将所述任务的元信息存储在工作池中;
计算模块,被配置成将所述任务的ID存入延迟桶中,计算所述任务的绝对执行时间;
第一存储模块,被配置成实时扫描各个延迟桶,若已达到所述任务的绝对执行时间,将所述任务的ID存入就绪队列中,并从所述工作池中获取所述任务的元信息;
执行模块,被配置成实时监听就绪队列,执行所述就绪队列中的待消费任务;
所述装置还包括:
第二存储模块,被配置成若所述任务的延时执行时间超过预设阈值,则将所述任务存入延迟数据存储区;
第三存储模块,被配置成实时扫描所述延迟数据存储区,将所述延时执行时间小于预定时间的任务存入所述延迟桶中;
第四存储模块,被配置成若所述就绪队列中的待消费任务执行操作失败,则将所述待消费任务存入失败队列中,由对应的线程处理所述失败队列中的任务。
5.根据权利要求4所述的装置,其中,所述任务包含所述任务的延迟执行时间、通用唯一识别码UUID和消息体;以及
所述任务的ID为所述任务的UUID。
6.根据权利要求4所述的装置,其中,所述装置还包括:
删除模块,被配置成从所述工作池中删除所述待消费任务对应的元信息。
7.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-3中任一项所述的方法。
8.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求1-3中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110215500.7A CN112948081B (zh) | 2021-02-26 | 2021-02-26 | 延时处理任务的方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110215500.7A CN112948081B (zh) | 2021-02-26 | 2021-02-26 | 延时处理任务的方法、装置、设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112948081A CN112948081A (zh) | 2021-06-11 |
CN112948081B true CN112948081B (zh) | 2023-08-01 |
Family
ID=76246406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110215500.7A Active CN112948081B (zh) | 2021-02-26 | 2021-02-26 | 延时处理任务的方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112948081B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986097B (zh) * | 2021-10-20 | 2024-02-27 | 上海淇玥信息技术有限公司 | 一种任务调度的方法、装置及电子设备 |
CN113791889B (zh) * | 2021-11-18 | 2022-03-11 | 中国科学院成都文献情报中心 | 一种基于多级轮询队列控制器部署学习模型的方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309496A (zh) * | 2020-02-10 | 2020-06-19 | 北京无限光场科技有限公司 | 延时任务实现方法、系统、装置、设备、存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352946B2 (en) * | 2009-08-11 | 2013-01-08 | International Business Machines Corporation | Managing migration ready queue associated with each processor based on the migration ready status of the tasks |
US10200330B2 (en) * | 2015-12-10 | 2019-02-05 | Facebook, Inc. | Techniques for ephemeral messaging with a message queue |
US10645040B2 (en) * | 2017-12-29 | 2020-05-05 | Facebook, Inc. | Techniques for consistent writes in a split message store |
-
2021
- 2021-02-26 CN CN202110215500.7A patent/CN112948081B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309496A (zh) * | 2020-02-10 | 2020-06-19 | 北京无限光场科技有限公司 | 延时任务实现方法、系统、装置、设备、存储介质 |
Non-Patent Citations (2)
Title |
---|
Meta-models for Ignition Delay Times with Applications to Surrogate Fuel Mixture Generation;RA Whitesides;US Combustion Meeting;全文 * |
一种面向应用服务器的分布式缓存机制;郭唐宝;张延园;林奕;;科学技术与工程(第36期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112948081A (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112948081B (zh) | 延时处理任务的方法、装置、设备以及存储介质 | |
CN115544044A (zh) | 一种数据一致性保持方法、装置、设备和存储介质 | |
CN115964153A (zh) | 一种异步任务处理方法、装置、设备以及存储介质 | |
CN113742389A (zh) | 一种业务处理方法和装置 | |
CN112671892A (zh) | 数据传输方法、装置、电子设备、介质和计算机程序产品 | |
CN114612212A (zh) | 一种基于风险控制的业务处理方法、装置和系统 | |
CN116431313A (zh) | 一种轮询任务的调度方法、装置、设备及介质 | |
CN112667368A (zh) | 一种任务数据处理方法和装置 | |
CN115529186A (zh) | 基于软负载均衡的ssl证书卸载方法、装置及系统 | |
CN113590447B (zh) | 埋点处理方法和装置 | |
CN112925623B (zh) | 任务处理方法、装置、电子设备和介质 | |
CN114666319A (zh) | 数据下载方法、装置、电子设备和可读存储介质 | |
CN114218313A (zh) | 数据管理方法、装置、电子设备、存储介质及产品 | |
CN113656239A (zh) | 针对中间件的监控方法、装置及计算机程序产品 | |
CN112817992A (zh) | 执行更改任务的方法、装置、电子设备以及可读存储介质 | |
CN109087097B (zh) | 一种更新链码同一标识的方法和装置 | |
CN113377295A (zh) | 多生产者单消费者的数据存储和读取方法、装置、设备 | |
CN112860796A (zh) | 用于同步数据的方法、装置、设备以及存储介质 | |
CN115718608A (zh) | 一种参数更新方法、装置、电子设备和存储介质 | |
CN115658026A (zh) | 一种业务处理方法、装置、设备及存储介质 | |
CN116109387A (zh) | 电子合同处理方法、装置、电子设备及介质 | |
CN117081939A (zh) | 一种流量数据处理方法、装置、设备及存储介质 | |
CN115983222A (zh) | 基于EasyExcel的文件数据读取方法、装置、设备及介质 | |
CN115906982A (zh) | 分布式训练方法、梯度通信方法、装置及电子设备 | |
CN114372858A (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 |