CN108733462A - 延迟任务的方法和装置 - Google Patents

延迟任务的方法和装置 Download PDF

Info

Publication number
CN108733462A
CN108733462A CN201710252093.0A CN201710252093A CN108733462A CN 108733462 A CN108733462 A CN 108733462A CN 201710252093 A CN201710252093 A CN 201710252093A CN 108733462 A CN108733462 A CN 108733462A
Authority
CN
China
Prior art keywords
task
delay
queue
executed
needing
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
Application number
CN201710252093.0A
Other languages
English (en)
Inventor
朱亚军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201710252093.0A priority Critical patent/CN108733462A/zh
Publication of CN108733462A publication Critical patent/CN108733462A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/486Scheduler internals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及延迟任务的方法和装置。该延迟任务的方法包括:针对需要延迟的任务,封装需要延迟的任务;将所述需要延迟的任务的执行时间放入数据库的延迟队列中,并将所述需要延迟的任务的内容放入数据库的不同于延迟队列的集群中;启动定时任务计时器扫描所述延迟队列以获取需执行的延迟任务。此外,本发明还涉及实现延迟任务的方法的电子设备和计算机可读存储介质。

Description

延迟任务的方法和装置
技术领域
本发明涉及计算机领域,尤其涉及延迟任务的方法、装置、电子设备和计算机可读存储介质。
背景技术
在会话聊天记录处理过程中,需要在会话关闭时,查询出该会话的所有聊天记录,用以计算出相关指标。但是,在会话关闭时,聊天记录消息有可能并未达到,因此查询出的会话聊天记录不全,从而导致相关指标的计算不准确。所以在收到会话关闭消息后,需要延迟计算相关指标。
根据现有技术,如图1所示,在接收到消息队列(mq消息)后,将消息内容和执行时间戳放入redis FIFO队列(先入先出队列)中,并不断地轮询从消息队列中取出的任务(任务A、任务B等),判断该任务是否已经到达执行时间点。如果到达执行时间点则执行,如果未到达执行时间点则再放入redis FIFO队列中,并继续轮询。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:轮询性能消耗严重,而且在任务数量较多的情况下,延迟任务的执行时间不准。此外,在重启会话聊天应用时可能会丢失延迟任务。
发明内容
有鉴于此,本发明实施例提供一种延迟任务的方法、装置、电子设备和计算机可读存储介质,从而能够解决延迟任务丢失以及延迟任务执行时间不准确的问题,实现延迟任务的高性能。
为实现上述目的,根据本发明实施例的一个方面,提供了一种延迟任务的方法。
根据本发明实施例,延迟任务的方法包括:针对需要延迟的任务,封装需要延迟的任务;将需要延迟的任务的执行时间放入延迟队列(delay queue)中,并将需要延迟的任务的内容(job)放入数据库的不同于延迟队列的集群中;启动定时任务计时器(timer)扫描延迟队列以获取需执行的延迟任务,并将该任务放入业务队列(Biz topic)中执行。
可选地,数据库可以是redis数据库。
可选地,在封装需要延迟的任务时,在收到需要延迟任务的消息后,首先生成唯一标识符(优选通用唯一标识符,Uuid),然后将需要延迟的任务以带有该唯一标识符的键值对(key-value)方式放入所述数据库中。
可选地,key可以为通用唯一标识符,而value可以为需要延迟的任务的执行时间或需要延迟的任务的内容。
可选地,需要延迟的任务的执行时间可以以唯一标识符(优选通用唯一标识符)+执行时间戳的方式放入延迟队列中。
可选地,需要延迟的任务的内容可以以唯一标识符(优选通用唯一标识符)+需要延迟的任务的内容的方式放入数据库的不同于延迟队列的集群中。
可选地,需要延迟的任务的内容可以以json格式存储。
可选地,延迟队列可以采用redis数据库的zsortset数据结构,它以字符串+分数(score)方式存储并且可以基于分数排序。
可选地,分数可以为需要延迟的任务的执行时间戳,而字符串标识可以为唯一标识符(优选通用唯一标识符)。在此,需要延迟的任务可以按需要延迟的任务的执行时间戳自动排序,最近执行的任务会优先排列到延迟队列开头。
可选地,借助定时任务计时器可以轮询访问延迟队列。由于延迟队列会自动将最近执行的任务优先排列到延迟队列开头,因此每次可以高效地批量查询出需要延迟的任务的执行时间早于或等于当前时间的多个需要延迟的任务,以确保需要延迟的任务的执行时间较准确。
可选地,获取到需执行的延迟任务的唯一标识符(优选通用唯一标识符)后,通过该唯一标识符(优选通用唯一标识符)获取该需执行的延迟任务的内容,并将它放入待执行的业务队列中。当成功放入后,通过该唯一标识符(优选通用唯一标识符)删除延迟队列中的相应的需执行的延迟任务,从而确保需要延迟的任务不丢失。
为实现上述目的,根据本发明实施例的另一方面,提供了一种延迟任务的装置。
根据本发明实施例,延迟任务的装置包括:
封装模块,用于针对需要延迟的任务消息,封装需要延迟的任务,其中,所述封装模块将需要延迟的任务的执行时间放入数据库的延迟队列中,并将需要延迟的任务的内容放入数据库的不同于延迟队列的集群中;
扫描模块,用于启动定时任务计时器扫描延迟队列以获取需执行的延迟任务;以及
执行模块,用于将该任务放入业务队列中执行。
可选地,数据库是redis数据库(高性能键值缓存数据库)。
可选地,在封装需要延迟的任务时,封装模块可以在收到需要延迟任务的消息后,首先生成唯一标识符(优选通用唯一标识符),然后可以将延迟任务以带有该唯一标识符的键值对(key-value)方式放入数据库中。
可选地,key可以为通用唯一标识符,而value可以为需要延迟的任务的执行时间或需要延迟的任务的内容。
可选地,需要延迟的任务的执行时间可以以唯一标识符(优选通用唯一标识符)+执行时间戳的方式放入延迟队列中。
可选地,需要延迟的任务的内容可以以唯一标识符(优选通用唯一标识符)+需要延迟的任务的内容的方式放入数据库的不同于延迟队列的集群中。
可选地,需要延迟的任务的内容可以以json格式存储。
可选地,延迟队列可以采用redis数据库的zsortset数据结构,它以字符串+分数方式存储,而且可以基于分数排序。
可选地,分数可以为需要延迟的任务的执行时间戳,而字符串标识可以为唯一标识符(优选通用唯一标识符)。在此,需要延迟的任务可以按需要延迟的任务的执行时间戳自动排序,最近执行的任务会优先排列到延迟队列开头。
可选地,扫描模块还用于使定时任务计时器轮询访问延迟队列。由于延迟队列会自动将最近执行的任务优先排列到延迟队列开头,因此每次可以高效地批量查询出需要延迟的任务的执行时间早于或等于当前时间的多个需要延迟的任务,以确保需要延迟的任务的执行时间较准确。
可选地,延迟任务的装置还包括删除模块。
可选地,扫描模块还用于在获取到需执行的延迟任务的唯一标识符(优选通用唯一标识符)后,通过该唯一标识符(优选通用唯一标识符)获取该需执行的延迟任务的内容,并将它放入待执行的业务队列中。当成功放入后,删除模块能通过该唯一标识符(优选通用唯一标识符)删除延迟队列中的相应的需执行的延迟任务,从而确保需要延迟的任务不丢失。
为实现上述目的,根据本发明实施例的再一方面,提供了一种实现延迟任务的方法的电子设备。
根据本发明实施例,实现延迟任务的方法的电子设备包括:一个或多个处理器以及存储装置,其用于存储一个或多个程序。当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明所提供的延迟任务的方法。
为实现上述目的,根据本发明实施例的又一方面,提供了一种计算机可读存储介质。
根据本发明实施例,计算机可读存储介质上存储有计算机程序,这些计算机程序被处理器执行时实现本发明所提供的延迟任务的方法。
上述本发明的实施例具有如下优点或有益效果:通过将需要延迟的任务以通用唯一标示符+执行时间戳的方式放入延迟队列中,并且按执行时间进行排序,从而使延迟任务的执行时间的准确性得以提高;采用了延迟队列+任务内容的方式存储延迟任务,从而使每个需要延迟的任务的内容不用都存在延迟队列中,所有需要延迟的任务的内容可以分散存储到数据库的各个分片中,从而减少了延迟队列所在分片的存储压力,进而提升了延迟队列的查询以及排序的性能并增大了延迟队列所能存放的任务数量;以及在将需要执行的延迟任务成功放入业务队列中后,才删除延迟队列中的相应的延迟任务,从而确保了需要延迟的任务不丢失。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据现有技术的延迟任务的方法的示意图;
图2是根据本发明实施例的延迟任务的方法的示意图;
图3是根据本发明实施例的延迟任务的装置的示意图;以及
图4是适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据现有技术的延迟任务的方法的示意图。如图1所示,在接收到消息队列(mq消息)后,将消息内容和执行时间戳放入redisFIFO队列(先入先出队列)中。
不断地轮询从消息队列中取出的任务(任务A、任务B等)。
判断该任务是否已经到达执行时间点。如果到达执行时间点则执行,如果未到达执行时间点则再放入redis FIFO队列中,并继续轮询。
图2是根据本发明实施例的延迟任务的方法的示意图,在此以redis数据库为例,该方法主要包括:针对需要延迟的任务消息,封装需要延迟的任务;将需要延迟的任务的执行时间放入redis数据库的延迟队列Delay queue中,并将需要延迟的任务的内容(或者说延迟任务的消息体)job放入redis数据库的redis集群中;启动定时任务计时器timer不断地扫描延迟队列以获取需执行的延迟任务,并将该任务放入业务队列Biz topic中执行。
在封装延迟任务步骤中,在收到需要延迟任务的消息后,首先生成通用唯一标识符(Uuid),然后将延迟任务以key-value键值对方式放入redis数据库的redis集群中。在此,key为通用唯一标识符,如Uuid,而value为需要延迟的任务的执行时间或需要延迟的任务的内容。
于是,将需要延迟的任务的执行时间以Uuid+执行时间戳的方式放入redis数据库的延迟队列中,而需要延迟的任务的内容则以格式为“Uuid+需要延迟的任务的内容”的消息体job的方式放入redis数据库中。
在此,需要延迟的任务的内容以json格式存储。于是,存放于redis集群中的消息体job的格式为:Uuid+json消息体。
在封装延迟任务步骤中,此外还进行延迟队列的构建。延迟队列在本实施例中采用redis数据库的zsortset数据结构,它是以字符串+分数(score)方式存储,而且可以基于分数排序。
分数为需要延迟的任务的执行时间戳,而字符串标识为通用唯一标识符,于是得到:Uuid+执行时间戳,或者说Uuid+score,数据。在此,需要延迟的任务可以按需要延迟的任务的执行时间戳自动排序,最近执行的任务会优先排列到延迟队列开头。
在封装延迟任务之后,每个应用的定时任务计时器timer会去轮询访问延迟队列Delay queue。由于延迟队列会自动将最近执行的任务优先排列到延迟队列开头,因此每次可以高效地批量查询出需要延迟的任务的执行时间早于或等于当前时间的多个延迟任务,以确保需要延迟的任务的执行时间较准确。
在获取到将执行的延迟任务的通用唯一标识符Uuid后,通过该Uuid获取相应的job的内容,并将它放入待执行的业务队列Biz topic中。当成功放入后,通过通用唯一标识符Uuid删除延迟队列中相应的延迟任务,从而确保需要延迟的任务不丢失。
图3是根据本发明实施例的延迟任务的装置的示意图,在此以redis数据库为例,该装置30包括:
封装模块301,用于针对需要延迟的任务消息,封装需要延迟的任务,其中,封装模块301将需要延迟的任务的执行时间放入延迟队列中,并将需要延迟的任务的内容放入redis数据库中;
扫描模块302,用于启动定时任务计时器不断地扫描延迟队列以获取需执行的延迟任务;
执行模块303,用于将该任务放入业务队列中执行;以及
删除模块304,用于在执行模块303将需执行的延迟任务放入业务队列中执行之后,从延迟队列中删除该需执行的延迟任务。
在封装延迟任务中,封装模块301在收到需要延迟任务的消息后,首先生成通用唯一标识符,然后将延迟任务以key-value键值对方式放入redis数据库中。
在此,key可以为通用唯一标识符,而value可以为需要延迟的任务的执行时间或需要延迟的任务的内容。
封装模块301可以将需要延迟的任务的执行时间以Uuid+执行时间戳的方式放入redis数据库的延迟队列中,并且可以将需要延迟的任务的内容以Uuid+需要延迟的任务的内容的方式放入redis数据库的redis集群中。
需要延迟的任务的内容可以以json格式存储。
延迟队列可以采用redis数据库的zsortset数据结构,它是以字符串+分数(score)方式存储并且可以基于分数排序。
分数为需要延迟的任务的执行时间戳,而字符串标识为通用唯一标识符。在此,需要延迟的任务可以按延迟任务的执行时间戳自动排序,最近执行的任务会优先排列到延迟队列开头。
扫描模块302还用于使定时任务计时器轮询访问延迟队列。由于延迟队列会自动将最近执行的任务优先排列到延迟队列开头,因此每次可以高效地批量查询出需要延迟的任务的执行时间早于或等于当前时间的多个延迟任务,以确保需要延迟的任务的执行时间较准确。
扫描模块302还用于获取到需执行的延迟任务的通用唯一标识符后,通过通用唯一标识符获取job的内容,并通过执行模块303将它放入待执行的业务队列中。当成功放入后,删除模块304通过通用唯一标识符删除延迟队列中的相应的需要延迟的任务,从而确保需要延迟的任务不丢失。
下面参考图4,其示出了适于用来实现本发明实施例的终端设备的计算机系统400的结构示意图。图4示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,计算机系统400包括中央处理单元(CPU)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储部分408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM 403中,还存储有系统400操作所需的各种程序和数据。CPU 401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
以下部件连接至I/O接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至I/O接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。
特别地,根据本公开的实施例,上文主要步骤图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。在该计算机程序被中央处理单元(CPU)401执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的主要步骤图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括发送模块、获取模块、确定模块和第一处理模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,发送模块还可以被描述为“向所连接的服务端发送图片获取请求的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
针对需要延迟的任务,封装需要延迟的任务,在封装过程中将需要延迟的任务的执行时间放入数据库的延迟队列中,并将需要延迟的任务的内容放入数据库的不同于延迟队列的集群中。
启动定时任务计时器扫描延迟队列以获取需执行的延迟任务。
将需执行的延迟任务放入业务队列中执行。
在封装需要延迟的任务时,在收到需要延迟任务的消息后,首先生成唯一标识符,然后将需要延迟的任务以带有该唯一标识符的键值对方式放入数据库中。
将需要延迟的任务的执行时间以唯一标识符+执行时间戳的方式放入延迟队列中。
将需要延迟的任务的内容以唯一标识符+需要延迟的任务的内容的方式放入数据库的不同于延迟队列的集群中。
需要延迟的任务按需要延迟的任务的执行时间戳自动排序,其中,最近执行的任务优先排列到延迟队列的开头。
通过所述唯一标识符获取需执行的延迟任务。
在将需执行的延迟任务放入业务队列中执行之后,才从延迟队列中删除该需执行的延迟任务。
根据本发明实施例的技术方案能够实现如下优点或有益效果:通过将需要延迟的任务以通用唯一标示符+执行时间戳的方式放入延迟队列中,并且按执行时间进行排序,从而使延迟任务的执行时间的准确性得以提高;采用了延迟队列+任务内容的方式存储延迟任务,从而使每个需要延迟的任务的内容不用都存在延迟队列中,所有需要延迟的任务的内容可以分散存储到数据库的各个分片中,从而减少了延迟队列所在分片的存储压力,进而提升了延迟队列的查询以及排序的性能并增大了延迟队列所能存放的任务数量;以及在将需要执行的延迟任务成功放入业务队列中后,才删除延迟队列中的相应的延迟任务,从而确保了需要延迟的任务不丢失。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (26)

1.一种延迟任务的方法,其特征在于,所述方法包括:
针对需要延迟的任务,封装所述需要延迟的任务,在封装过程中将所述需要延迟的任务的执行时间放入数据库的延迟队列中,并将所述需要延迟的任务的内容放入数据库的不同于延迟队列的集群中;
启动定时任务计时器扫描所述延迟队列以获取需执行的延迟任务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述需执行的延迟任务放入业务队列中执行。
3.根据权利要求1或2所述的方法,其特征在于,所述数据库是redis数据库。
4.根据权利要求3所述的方法,其特征在于,在封装需要延迟的任务时,在收到需要延迟任务的消息后,首先生成唯一标识符,然后将所述需要延迟的任务以带有该唯一标识符的键值对方式放入所述数据库中。
5.根据权利要求4所述的方法,其特征在于,将所述需要延迟的任务的执行时间以唯一标识符+执行时间戳的方式放入所述延迟队列中。
6.根据权利要求4所述的方法,其特征在于,将所述需要延迟的任务的内容以唯一标识符+需要延迟的任务的内容的方式放入所述数据库的不同于延迟队列的集群中。
7.根据权利要求6所述的方法,其特征在于,所述需要延迟的任务的内容以json格式存储。
8.根据权利要求5所述的方法,其特征在于,所述延迟队列采用所述redis数据库的zsortset数据结构,所述zsortset数据结构以字符串+分数的方式存储并且能基于所述分数排序。
9.根据权利要求8所述的方法,其特征在于,所述分数为所述需要延迟的任务的执行时间戳,而所述字符串为所述唯一标识符。
10.根据权利要求5所述的方法,其特征在于,所述需要延迟的任务按所述需要延迟的任务的执行时间戳自动排序,其中,最近执行的任务优先排列到所述延迟队列的开头。
11.根据权利要求5所述的方法,其特征在于,通过所述唯一标识符获取所述需执行的延迟任务。
12.根据权利要求2所述的方法,其特征在于,在将所述需执行的延迟任务放入业务队列中执行之后,才从所述延迟队列中删除该需执行的延迟任务。
13.一种延迟任务的装置,其特征在于,所述装置包括:
封装模块,用于针对需要延迟的任务,封装所述需要延迟的任务,其中,所述封装模块将所述需要延迟的任务的执行时间放入数据库的延迟队列中,并将所述需要延迟的任务的内容放入数据库的不同于延迟队列的集群中;以及
扫描模块,用于启动定时任务计时器扫描所述延迟队列以获取需执行的延迟任务。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:执行模块,用于将所述需执行的延迟任务放入业务队列中执行。
15.根据权利要求13或14所述的装置,其特征在于,所述数据库是redis数据库。
16.根据权利要求15所述的装置,其特征在于,在封装需要延迟的任务时,所述封装模块能在收到需要延迟任务的消息后,首先生成唯一标识符,然后能将所述需要延迟的任务以带有该唯一标识符的键值对方式放入所述延迟队列或所述数据库中。
17.根据权利要求16所述的装置,其特征在于,所述封装模块能将所述需要延迟的任务的执行时间以唯一标识符+执行时间戳的方式放入所述延迟队列中。
18.根据权利要求16所述的装置,其特征在于,所述封装模块能将所述需要延迟的任务的内容以唯一标识符+需要延迟的任务的内容的方式放入所述数据库的不同于延迟队列的集群中。
19.根据权利要求18所述的装置,其特征在于,所述需要延迟的任务的内容能以json格式存储。
20.根据权利要求17所述的装置,其特征在于,所述延迟队列能采用所述redis数据库的zsortset数据结构,所述zsortset数据结构以字符串+分数的方式存储并且能基于所述分数排序。
21.根据权利要求20所述的装置,其特征在于,所述分数为所述需要延迟的任务的执行时间戳,而所述字符串为所述唯一标识符。
22.根据权利要求17所述的装置,其特征在于,所述需要延迟的任务能按所述需要延迟的任务的执行时间戳自动排序,其中,最近执行的任务会优先排列到所述延迟队列的开头。
23.根据权利要求17所述的装置,其特征在于,所述扫描模块能通过所述唯一标识符获取所述需执行的延迟任务。
24.根据权利要求14所述的装置,其特征在于,所述装置还包括:删除模块,用于在所述执行模块将所述需执行的延迟任务放入业务队列中执行之后,才从所述延迟队列中删除该需执行的延迟任务。
25.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至12中任一所述的方法。
26.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至12中任一所述的方法。
CN201710252093.0A 2017-04-18 2017-04-18 延迟任务的方法和装置 Pending CN108733462A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710252093.0A CN108733462A (zh) 2017-04-18 2017-04-18 延迟任务的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710252093.0A CN108733462A (zh) 2017-04-18 2017-04-18 延迟任务的方法和装置

Publications (1)

Publication Number Publication Date
CN108733462A true CN108733462A (zh) 2018-11-02

Family

ID=63924250

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710252093.0A Pending CN108733462A (zh) 2017-04-18 2017-04-18 延迟任务的方法和装置

Country Status (1)

Country Link
CN (1) CN108733462A (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110119323A (zh) * 2019-05-13 2019-08-13 重庆八戒电子商务有限公司 一种基于时间轮执行延迟队列的方法及系统
CN110262910A (zh) * 2019-06-24 2019-09-20 四川新网银行股份有限公司 基于延时队列的分布式任务轮询的方法
CN110471752A (zh) * 2019-08-07 2019-11-19 网易(杭州)网络有限公司 任务执行方法、装置、电子设备以及计算机可读存储介质
CN111026524A (zh) * 2019-10-25 2020-04-17 北京奇艺世纪科技有限公司 处理延时任务的方法、装置、计算机设备和存储介质
CN111225041A (zh) * 2019-12-26 2020-06-02 的卢技术有限公司 一种实现延时消息队列的方法及系统
CN111309496A (zh) * 2020-02-10 2020-06-19 北京无限光场科技有限公司 延时任务实现方法、系统、装置、设备、存储介质
CN112015572A (zh) * 2020-08-25 2020-12-01 广州鲁邦通物联网科技有限公司 一种延时任务的执行方法、中心和系统
CN112148442A (zh) * 2020-08-06 2020-12-29 武汉达梦数据库有限公司 一种etl流程调度的方法和装置
CN112286660A (zh) * 2020-10-30 2021-01-29 上海二三四五网络科技有限公司 一种延时触发交易的控制方法以及控制装置
CN113051089A (zh) * 2021-04-01 2021-06-29 深圳市特游网文化技术有限公司 一种结合workerman的计划任务消息队列php实现方法
CN113238845A (zh) * 2021-05-17 2021-08-10 北京沃东天骏信息技术有限公司 一种延迟结算处理方法和装置
CN113360267A (zh) * 2021-06-23 2021-09-07 平安普惠企业管理有限公司 基于时间轴的任务执行方法、装置、设备及介质
CN113419832A (zh) * 2021-06-24 2021-09-21 广州欢网科技有限责任公司 一种延迟任务的处理方法、装置及终端
CN115601195A (zh) * 2022-10-17 2023-01-13 桂林电子科技大学(Cn) 基于电力用户实时标签的交易双向推荐系统及其方法
CN116481560A (zh) * 2023-06-21 2023-07-25 天津所托瑞安汽车科技有限公司 车辆行驶里程的计算方法、装置、终端及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110161939A1 (en) * 2009-12-25 2011-06-30 Takehiko Demiya Apparatus for displaying the result of parallel program analysis and method of displaying the result of parallel program analysis
CN104951361A (zh) * 2014-03-27 2015-09-30 阿里巴巴集团控股有限公司 一种定时任务的触发方法和装置
CN105808334A (zh) * 2016-03-04 2016-07-27 山东大学 一种基于资源重用的MapReduce短作业优化系统及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110161939A1 (en) * 2009-12-25 2011-06-30 Takehiko Demiya Apparatus for displaying the result of parallel program analysis and method of displaying the result of parallel program analysis
CN104951361A (zh) * 2014-03-27 2015-09-30 阿里巴巴集团控股有限公司 一种定时任务的触发方法和装置
CN105808334A (zh) * 2016-03-04 2016-07-27 山东大学 一种基于资源重用的MapReduce短作业优化系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
NICK HAO: ""延迟任务的实现总结"", 《HTTPS://WWW.CNBLOGS.COM/HAOXINYUE/P/6663720.HTML》 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110119323A (zh) * 2019-05-13 2019-08-13 重庆八戒电子商务有限公司 一种基于时间轮执行延迟队列的方法及系统
CN110262910A (zh) * 2019-06-24 2019-09-20 四川新网银行股份有限公司 基于延时队列的分布式任务轮询的方法
CN110471752A (zh) * 2019-08-07 2019-11-19 网易(杭州)网络有限公司 任务执行方法、装置、电子设备以及计算机可读存储介质
CN111026524A (zh) * 2019-10-25 2020-04-17 北京奇艺世纪科技有限公司 处理延时任务的方法、装置、计算机设备和存储介质
CN111225041B (zh) * 2019-12-26 2023-04-07 西藏宁算科技集团有限公司 一种实现延时消息队列的方法及系统
CN111225041A (zh) * 2019-12-26 2020-06-02 的卢技术有限公司 一种实现延时消息队列的方法及系统
CN111309496A (zh) * 2020-02-10 2020-06-19 北京无限光场科技有限公司 延时任务实现方法、系统、装置、设备、存储介质
CN112148442A (zh) * 2020-08-06 2020-12-29 武汉达梦数据库有限公司 一种etl流程调度的方法和装置
CN112015572A (zh) * 2020-08-25 2020-12-01 广州鲁邦通物联网科技有限公司 一种延时任务的执行方法、中心和系统
CN112286660A (zh) * 2020-10-30 2021-01-29 上海二三四五网络科技有限公司 一种延时触发交易的控制方法以及控制装置
CN113051089A (zh) * 2021-04-01 2021-06-29 深圳市特游网文化技术有限公司 一种结合workerman的计划任务消息队列php实现方法
CN113238845A (zh) * 2021-05-17 2021-08-10 北京沃东天骏信息技术有限公司 一种延迟结算处理方法和装置
CN113360267A (zh) * 2021-06-23 2021-09-07 平安普惠企业管理有限公司 基于时间轴的任务执行方法、装置、设备及介质
CN113360267B (zh) * 2021-06-23 2023-02-14 平安普惠企业管理有限公司 基于时间轴的任务执行方法、装置、设备及介质
CN113419832A (zh) * 2021-06-24 2021-09-21 广州欢网科技有限责任公司 一种延迟任务的处理方法、装置及终端
CN115601195A (zh) * 2022-10-17 2023-01-13 桂林电子科技大学(Cn) 基于电力用户实时标签的交易双向推荐系统及其方法
CN115601195B (zh) * 2022-10-17 2023-09-08 桂林电子科技大学 基于电力用户实时标签的交易双向推荐系统及其方法
CN116481560A (zh) * 2023-06-21 2023-07-25 天津所托瑞安汽车科技有限公司 车辆行驶里程的计算方法、装置、终端及存储介质
CN116481560B (zh) * 2023-06-21 2023-10-03 天津所托瑞安汽车科技有限公司 车辆行驶里程的计算方法、装置、终端及存储介质

Similar Documents

Publication Publication Date Title
CN108733462A (zh) 延迟任务的方法和装置
CN110096344A (zh) 任务管理方法、系统、服务器集群和计算机可读介质
CN104580284B (zh) 业务分配装置和业务分配方法
CN108734293A (zh) 任务管理系统、方法和装置
CN110719215B (zh) 虚拟网络的流信息采集方法及装置
CN109905286A (zh) 一种监控设备运行状态的方法和系统
CN108984496B (zh) 生成报表的方法和装置
CN111695840A (zh) 一种实现流程控制的方法和装置
CN110377416A (zh) 分布式分区任务调度方法和装置
CN109508326A (zh) 用于处理数据的方法、装置和系统
CN107608795A (zh) 云计算方法和装置
CN109033312A (zh) 用于获取信息的方法和装置
CN109379245A (zh) 一种wifi报表生成方法及系统
CN108763323A (zh) 基于资源集和大数据技术的气象格点文件应用方法
CN113076186B (zh) 任务处理的方法、装置、电子设备和存储介质
CN113190558A (zh) 一种数据加工方法和系统
CN110389976A (zh) 一种多接口数据的调度方法和装置
CN109783201A (zh) 数据交换方法及其系统
CN110825342B (zh) 存储调度器件和用于处理信息的系统、方法及装置
CN111694932A (zh) 对话方法和装置
CN113127561A (zh) 业务单号的生成方法、装置、电子设备和存储介质
CN112837003B (zh) 一种确定快递员配送范围的方法和装置
CN108734537A (zh) 统计违规订单的方法和装置
CN114257521A (zh) 流量预测方法、装置、电子设备和存储介质
CN109871856B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20181102