CN112787958B - 延迟消息处理方法及设备 - Google Patents
延迟消息处理方法及设备 Download PDFInfo
- Publication number
- CN112787958B CN112787958B CN202110006404.1A CN202110006404A CN112787958B CN 112787958 B CN112787958 B CN 112787958B CN 202110006404 A CN202110006404 A CN 202110006404A CN 112787958 B CN112787958 B CN 112787958B
- Authority
- CN
- China
- Prior art keywords
- delay
- time
- message
- time slot
- preset
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/62—Establishing a time schedule for servicing the requests
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开实施例提供一种延迟消息处理方法及设备,包括:将延迟消息划分为第一延迟消息和第二延迟消息;根据第一延迟消息的延迟时间将各第一延迟消息划分至对应的级别主题队列中,以将第一延迟消息进行转发,其中级别主题队列的时间粒度是按照各第一延迟消息的延迟时间划分的;根据第二延迟消息的延迟时间将各第二延迟消息划分至对应的时间槽中,其中时间槽是基于绝对时间按照预设时间间隔划分的;当检测到任一目标时间槽满足预设加载时间条件时,加载目标时间槽内的第二延迟消息;将加载得到所有的第二延迟消息划分至对应的级别主题队列中,以完成第二延迟消息的转。本公开实施例既没有最大延迟时间限制,又能提高延迟消息的延迟精度。
Description
技术领域
本公开实施例涉及计算机与互联网技术领域,尤其涉及一种延迟消息处理方法及设备。
背景技术
常规的消息队列模型中,消息是即发即收的,满足FIFO(先进先出)特性。然而,在一些业务场景中,需要对部分消息进行延迟发送。即在待发送的消息经过指定的延迟时间后,才被放入到消息队列中进行发送,且该消息在延迟期间不阻塞后面的消息发送。例如,在网络购物时,用户端下单后,商家端可以发送一条延迟30分钟的消息给用户端,以提醒用户端的用户是否完成了支付。
目前,现有的在消息队列中实现延迟消息发送的主要方式为:服务端根据待发送的延迟消息按照一定时间粒度,划分出多个不同的级别队列,各级别队列的延迟时间是递增的,服务端对各级别队列进行维护。服务端将获取的延时消息放入对应的级别队列中,对于每个级别队列中的延迟消息,只要延迟时间最短的消息延迟时间到期时,就将该消息进行转发投送。
然而发明人发现现有技术至少存在如下技术问题:待发送的延迟消息的延迟时间可能会跨度很大,例如有1秒、30分钟、1天或1个月的等等。为了实现发送时间较为精准转发投送,时间粒度的取值会比较小,按照最大延迟时间的延迟消息划分级别队列时,服务端需要部署和维护大量的级别队列,会给服务端的处理能力造成压力甚至无法实现,通常会限制延迟消息允许出现的最大延迟时间。而如果时间粒度的取值较大,又不能满足发送时间的延迟精度的要求。因此,亟需一种既没有最大延迟时间限制,又能够提升延迟精度的延迟消息处理方法。
发明内容
本公开实施例提供一种延迟消息处理方法及设备,既没有最大延迟时间限制,又能够提升延迟消息的延迟精度。
第一方面,本公开实施例提供一种延迟消息处理方法,包括:
将获取的各延迟消息按照预设时间阈值划分为第一延迟消息和第二延迟消息,其中所述第一延迟消息的延迟时间不超过所述预设时间阈值,所述第二延迟消息的延迟时间大于所述预设时间阈值;根据所述第一延迟消息的延迟时间将各第一延迟消息划分至对应的级别主题队列中,以将所述第一延迟消息进行转发,其中所述级别主题队列的时间粒度是按照各第一延迟消息的延迟时间划分的;根据所述第二延迟消息的延迟时间将各第二延迟消息划分至对应的时间槽中,其中所述时间槽是基于绝对时间按照预设时间间隔划分的;当检测到任一目标时间槽满足预设加载时间条件时,加载所述目标时间槽内的第二延迟消息;将加载得到所有的第二延迟消息划分至对应的所述级别主题队列中,以完成第二延迟消息的转发。
第二方面,本公开实施例提供一种延迟消息处理设备,包括:
划分单元,用于将获取的各延迟消息按照预设时间阈值划分为第一延迟消息和第二延迟消息,其中所述第一延迟消息的延迟时间不超过所述预设时间阈值,所述第二延迟消息的延迟时间大于所述预设时间阈值;
第一处理单元,用于根据所述第一延迟消息的延迟时间将各第一延迟消息划分至对应的级别主题队列中,以将所述第一延迟消息进行转发,其中所述级别主题队列的时间粒度是按照各第一延迟消息的延迟时间划分的;
第二处理单元,用于根据所述第二延迟消息的延迟时间将各第二延迟消息划分至对应的时间槽中,其中所述时间槽是基于绝对时间按照预设时间间隔划分的;当检测到任一目标时间槽满足预设加载时间条件时,加载所述目标时间槽内的第二延迟消息;
第三处理单元,用于将加载得到所有的第二延迟消息划分至对应的所述级别主题队列中,以完成第二延迟消息的转发。
第三方面,本公开实施例提供一种电子设备,包括:处理器和存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的延迟消息处理方法。
第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的延迟消息处理方法。
第五方面,本公开实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的延迟消息处理方法。
本公开实施例提供的延迟消息处理方法及设备,本公开实施例中,通过延迟时间将延迟消息划分为延迟时间较短的第一延迟消息和延迟时间较长的第二延迟消息;首先,对于第一延迟消息存入各级别主题队列中,然后直接按照各级别主题队列的时间粒度进行第一延迟消息的转发;然后,对于第二延迟消息,先存入时间槽中,然后待时间槽达到转发期限时,加载时间槽中的第二延迟消息作为第二延迟消息,此时第二延迟消息已经变为第二延迟消息;最后,将加载得到所有的第二延迟消息划分至所述各级别主题队列中,以完成第二延迟消息的转发。由于仅需要对第一延迟消息维护级别主题队列,不需要对第二延迟消息维护级别主题队列,够保证延迟消息的延时精度,提高延时消息的精准投送;同时将第二延迟消息存入按照预设时间间隔划分的时间槽中,服务端不需要维护大量的级别主题队列,因此也没有最大延迟时间的限制。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中提供的一种延迟消息处理的场景示意图;
图2为本公开实施例提供的延迟消息处理方法流程示意图一;
图3为本公开实施例提供的延迟消息处理方法流程示意图二;
图4为本公开实施例提供的预设时间阈值取值约束的原理示意图;
图5为本公开实施例提供的服务节点的功能模块组成示意图;
图6为本公开实施例提供的延迟消息处理设备的结构框图;
图7为本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
目前,现有的在消息队列中实现延迟消息发送的主要方式为:服务端根据待发送的延迟消息按照一定时间粒度,划分出多个不同的级别队列,各级别队列的延迟时间是递增的,服务端对各级别队列进行维护。服务端将获取的延时消息放入对应的级别队列中,对于每个级别队列中的延迟消息,只要延迟时间最短的消息延迟时间到期时,就将该消息进行转发投送。
然而,待发送的延迟消息的延迟时间可能会跨度很大,例如有1秒、30分钟、1天或1个月的等等。为了实现发送时间较为精准转发投送,时间粒度的取值会比较小,那么服务端需要部署和维护大量的级别队列,会给服务端的处理能力造成压力,通常会限制允许出现的最大延迟时间。例如,在时间粒度为秒级精度的场景中,每一秒都需要对应一个级别队列,如果还同时存在最大延迟时间为1天的延迟消息,便需要维护3600*24=86400个级别队列,这在实际部署和运维中是无法现实的,为了解决这个问题通常会限制允许出现的最大延迟时间。而如果时间粒度的取值较大,又不能满足发送时间的延迟精度的要求。
为解决上述技术问题,本公开实施例提供如下技术方案:根据延迟时间将延迟消息划分为延迟时间较短的第一延迟消息和延迟时间较长的第二延迟消息,对于第一延迟消息存入各级别主题队列中,直接按照各级别主题队列的时间粒度进行第一延迟消息的转发;对于第二延迟消息,先存入时间槽中,然后当时间槽达到转发期限时,加载时间槽中的第二延迟消息作为第二延迟消息,此时第二延迟消息已经变为第二延迟消息,将加载得到所有的第二延迟消息划分至所述各级别主题队列中,以完成第二延迟消息的转发。仅需要对第一延迟消息维护级别主题队列,而不需要对第二延迟消息维护级别主题队列,够保证延迟消息的延时精度,提高延时消息的精准投送;同时将第二延迟消息存入按照预设时间间隔划分的时间槽中,服务端不需要维护大量的级别主题队列,因此没有最大延迟时间的限制。
参考图1,图1为现有技术中提供的一种延迟消息处理的场景示意图。在图1中,包括发送端101和接收端102,以及服务端103。其中,发送端101可以用于生成各延迟消息,并将延迟消息发送至服务端103,服务端103可以将各延迟消息中到期的延期消息发送至接收端102。发送端101和接收端102可以是手机、平板、电脑或其他电子设备。服务端103可以是一台服务器或多台服务器组成的集群。图1所示的系统架构可以应用到各种需要延迟或定时发送消息的业务场景内。
例如,场景1,支付超时场景:买家客户端在购物订单下单后,商家客户端可以发送支付超时提醒给服务端,服务端在延时时间到期(例如30分钟)时,发送支付超时提醒给买家客户端。
场景2,定时任务场景:需要在指定的某个目标时刻触发某个操作,通过定时任务调度器,定时发送通知提醒等。服务端计算距离目标时刻的时间差,并将该时间差作为延迟时间发送通知提醒。
场景3,虚拟商品过期提醒:许多用户客户端中可以购买一些虚拟商品或服务,例如限时特权,头像挂件等,这类服务和虚拟商品通常存在一定的时间限制,到期后需要续费。服务端可以发送延迟消息至客户端进行到期续期提醒及注销操作等。
场景4,重复任务场景:在一些错误重试系统、刷单系统、抢票系统和审核系统中,需要对某些订单或数据进行一定的重复操作。服务端会每隔一定的时间间隔发送延迟消息至接收端。
参考图2,图2为本公开实施例提供的延迟消息处理方法流程示意图一。本实施例的方法可以应用在服务端中,该延迟消息处理方法包括:
S201:将获取的各延迟消息按照预设时间阈值划分为第一延迟消息和第二延迟消息,其中所述第一延迟消息的延迟时间不超过所述预设时间阈值,所述第二延迟消息的延迟时间大于所述预设时间阈值。
在本公开实施例中,可以通过远程过程调用协议(Remote Procedure Call,RPC)获取发送端发送的各延迟消息,也可以是其他数据来源的各延迟消息,对此本公开不作限制。
例如,可以接收商家用户的发送端发送的用于提醒支付超时的延迟消息。
具体地,各延迟消息中包括延迟时间,将延迟时间与预设时间阈值进行比较,如果该延迟时间小于或等于预设时间阈值,则将对应的延迟消息划分为第一延迟消息,如果该延迟时间大于预设时间阈值,则将对应的延迟消息划分为第二延迟消息。
在本公开实施例中,预设时间阈值可以根据获取的各延迟消息中延迟时间进行灵活调整。
可选地,预设时间阈值为60秒。
S202:根据所述第一延迟消息的延迟时间将各第一延迟消息划分至对应的级别主题队列中,以将所述第一延迟消息进行转发,其中所述级别主题队列的时间粒度是按照各第一延迟消息的延迟时间划分的。
具体地,对于各第一延迟消息执行多级别主题转发的操作,如下:将各第一延迟消息按照延迟时间分别存入各级别主题队列中,其中各级别主题队列是根据各第一延迟消息的延迟时间按照预设时间粒度划分的;在确定各级别主题队列中的任一第一延迟消息满足转发期限时,将该第一延迟消息转发至各接收端。
其中,将第一延迟消息转发至各接收端的过程包括:将第一延迟消息发送至目标主题模型中,以使目标主题模型将所述第一延迟消息转发至各接收端。
在本公开实施例中,各级别主题队列中的各第一延迟消息可以按照延时时间由短到长进行排列,即级别主题队列中队列开头的第一延迟消息是需要最先投递的延迟消息。
其中,预设时间粒度可以根据各第一延迟消息的延迟时间确定。可选地,预设时间粒度为秒级时间单位,例如预设时间粒度为1秒,已达到较高的延迟精度。
S203:根据所述第二延迟消息的延迟时间将各第二延迟消息划分至对应的时间槽中,其中所述时间槽是基于绝对时间按照预设时间间隔划分的;当检测到任一目标时间槽满足预设加载时间条件时,加载所述目标时间槽内的第二延迟消息。
其中,各时间槽是基于绝对时间按照预设时间间隔划分的,是按照各时间槽的延迟时间的到期的先后顺序排列的。如果该第二延迟消息的延迟时间落入某个时间槽的延迟时间的到期时间,则将该第二延迟消息存入对应的时间槽中。
其中,满足预设加载时间条件指的是时间槽达到转发期限。
具体地,如果是系统初始化,服务端可以遍历时间槽,以确定即将到期待加载的目标时间槽;如果已经有时间槽被加载,也可以确定最新加载的时间槽的下一个时间槽为待加载的目标槽队列。
其中,时间槽的预设时间间隔可以根据各第二延迟消息的延迟时间确定,可选地,该时间槽的预设时间间隔取值20秒。
其中,加载目标时间槽中的所有的第二延迟消息为逐条读出目标时间槽中的所有的第二延迟消息。
S204:将加载得到所有的第二延迟消息划分至所述各级别主题队列中,以完成第二延迟消息的转发。
在本公开实施例中,在步骤S203中加载目标时间槽中的所有的第二延迟消息完成后,加载得到的第二延迟消息已经变为马上到转发期限的第二延迟消息了,将第二延迟消息重复执行步骤S202以完成所有延迟消息的转发投送。
从上述描述可知,通过延迟时间将延迟消息划分为延迟时间较短的第一延迟消息和延迟时间较长的第二延迟消息;首先,对于第一延迟消息存入各级别主题队列中,然后直接按照各级别主题队列的时间粒度进行第一延迟消息的转发;然后,对于第二延迟消息,先存入时间槽中,然后当时间槽达到转发期限时,加载时间槽中的第二延迟消息作为第二延迟消息,此时第二延迟消息已经变为第二延迟消息;最后,将加载得到所有的第二延迟消息划分至所述各级别主题队列中,以完成第二延迟消息的转发。由于仅需要对第一延迟消息维护级别主题队列,不需要对第二延迟消息维护级别主题队列,够保证延迟消息的延时精度,提高延时消息的精准投送;同时将第二延迟消息存入按照预设时间间隔划分的时间槽中,服务端不需要维护大量的级别主题队列,因此也没有最大延迟时间的限制。
参考图3,图3为本公开实施例提供的延迟消息处理方法流程示意图二。在图2实施例的基础上,上述实施例中的服务端可以为服务节点组成的集群,该服务端包括多个服务节点,所述多个服务节点包括一个领导节点和多个副本节点,本实施例对步骤S203的详细过程进行了说明,具体详述如下:
S301:多个服务节点将各第二延迟消息按照延迟时间存入各时间槽中。
在本公开实施例中,多个服务节点可以将划分得到的各第二延迟消息按照延迟时间分别存入对应的时间槽。
S302:领导节点检测待加载的时间槽是否满足预设加载时间条件。
在本公开实施例中,服务节点组成的集群进行领导节点选举的过程可以是通过Redis选举机制或Zookeeper选举机制来实现的。
在本公开的一个实施例中,所述预设加载时间条件为所述目标时间槽的转发期限前的预设余量时长。
具体地,领导节点获取时间槽的开始时间和当前本地时间;若所述开始时间加上所述预设余量时长后所得时间小于或等于所述当前本地时间,则确定所述时间槽满足转发期限前的预设余量时长;若所述开始时间加上所述预设余量时长后所得时间小于所述当前本地时间,则确定时间槽没有满足转发期限前的预设余量时长。
通过预设余量时长的设计是为了在满足转发期限前在预设余量时长内完成对目标时间槽中的所有的第二延迟消息加载,避免到期后的第二延迟消息没有完成加载,延误第二延迟消息的转发投送。
S303:领导节点在确定任一目标时间槽满足预设加载时间条件时,调度所述多个服务节点以加载所述目标时间槽中的所有的第二延迟消息。
在本公开实施例中,可以通过多个服务节点对目标时间槽中的所有的第二延迟消息分批进行加载。
具体地,所述领导节点获取所述目标时间槽中记录的第二延迟消息集合的索引信息,并根据所述索引信息将所述第二延迟消息集合划分为至少一个加载任务;将所述至少一个加载任务分别发送至所述多个服务节点,以通过所述多个服务节点根据各自的加载任务加载对应的第二延迟消息。
在本实施例中,索引信息可以是时间槽的长度信息。多个服务节点共同(包括领导节点和各副本节点)对目标时间槽中的第二延迟消息集合进行分批加载。
在本公开的一个实施例中,所述时间槽采用独立存储系统进行存储,其中每个时间槽对应所述独立存储系统中的一个存储单元。其中独立存储系统可以包括但不限于非关系型的数据库NoSQL、KVStore、或者分布式文件系统(DFS)。独立存储系统用于存储时间槽中的第二延迟消息数据,其中每个时间槽相当于一个逻辑存储单元,内部存储属于该时间槽的第二延迟消息数据集合。
从上述描述可知,通过服务节点组成的集群,多个服务节点相互协作分批完成各第二延迟消息加入时间槽的流程,以及分批完成从时间槽中加载第二延迟消息的流程,提高服务端的并发处理能力;同时时间槽采用独立存储系统进行存储,是支持横向扩展的,可以提高服务端的数据处理的吞吐量。
在本公开的一个实施例中,服务节点组成的集群中不必使用全局时钟,以提高其灵活性和适用性。在一个分布式的集群中,允许的任意两台节点的本地时间之差的绝对值最大值即为允许的最大时钟漂移(max_clockshift)。本实施例中需要对预设时间阈值(threshold)、最大时钟漂移的时长、时间槽的预设时间间隔(slot_size)和预设余量时长(load_ahead)的取值有一定的约束。具体地,所述预设时间阈值的时长大于所述多个服务节点中任意两个服务节点的最大时钟漂移的时长、所述时间槽间隔时长和所述预设余量时长三者之和。即threshold>max_clockshift+slot_size+load_ahead。
参考图4,图4为本公开实施例提供的预设时间阈值取值约束的原理示意图。由于时钟漂移的存在,两个服务节点(例如领导节点和一个最大时钟漂移的副本节点)之间的本地时间差max_clockshift为30秒(s),其中时间槽n为开始加载的目标时间槽,时间槽n+1为目标时间槽的下一个时间槽,每个时间槽的预设时间间隔时长(slot_size)为20s,预设余量时长(load_ahead)为8s。当领导节点对时间槽n中的第二延迟消息开始进行加载时,此时最大时钟漂移的副本节点收到一个第二延迟消息,如果用于划分第一延迟消息和第二延迟消息的预设时间阈值(threshold)为60s(大于max_clockshift+slot_size+load_ahead的时长之和),则该第二延迟消息会被存入(写入)时间槽n+1中,而如果预设时间阈值(threshold)为50s(小于max_clockshift+slot_size+load_ahead的时长之和),则该第二延迟消息会被存入(写入)时间槽n中。由于时间槽n为开始加载的时间槽,如果在加载过程还同时有第二延迟消息写入,最终可能会造成新写入的第二延迟消息会被错过加载,导致延迟消息丢失。
从上述描述可知,通过限定预设时间阈值的时长大于多个服务节点中任意两个服务节点的最大时钟漂移的时长、时间槽的时间槽间隔时长和预设余量时长之和,这样可以保证在允许最大时钟漂移的分布式系统内,对于开始加载的时间槽,不再进行第二延迟消息的写入,以避免待加载延迟消息发生丢失。
在本公开的一个实施例中,在上述实施例的基础上,在步骤S204中,所述将加载得到所有的第二延迟消息划分至对应的所述级别主题队列中,以完成第二延迟消息的转发,包括:
S304:多个服务节点将各自加载的第二延迟消息按照延迟时间分别存入对应的级别主题队列中。
具体地,多个服务节点将各加载的第二延迟消息按照延迟时间分别存入各对应的级别主题队列中;在确定各级别主题队列中的任一加载的第二延迟消息满足转发期限时,将加载的第二延迟消息转发至各接收端。
其中,将所述加载的第二延迟消息转发至各接收端具体包括:将加载的第二延迟消息发送至目标主题模型中,以使目标主题模型将加载的第二延迟消息转发至各接收端。
从上述描述可知,通过多个服务节点将各加载的第二延迟消息分批发送至处理第一延迟消息的各级别主题队列中,节省发送的时间,避免级别主题队列中第二延迟消息被延误转发。
在本公开的一个实施例中,在步骤S304之后,还包括:
S305:多个服务节点发送目标时间槽加载完成的确认信息至领导节点;
S306:领导节点根据确认信息,继续检测所述目标时间槽的下一个时间槽是否满足预设加载时间条件。
在本公开实施例中,多个服务节点(包括领导节点和副本节点)在完成将各加载的第二延迟消息按照延迟时间分别存入各级别主题队列中之后,向领导节点返回一个确认信息(ack),领导节点根据确认信息确定当前的目标时间槽已经加载完成,接下来就可以对下一个时间槽进行处理了。
从上述描述可知,通过服务节点向领导节点反馈确认信息,确保在当前的目标时间槽加载完成后,才对下一个时间槽进行处理,避免时间槽的第二延迟消息没有被加载而丢失。
在本公开的一个实施例中,在步骤S305之后,还包括:
S307:领导节点更新存储器中的时间槽索引信息为目标时间槽索引信息。
在本公开实施例中,存储器用于持久化存储时间槽索引信息。存储器可以为数据库或KVStore存储引擎。
S308:若领导节点无法工作,则根据预设机制选出新的领导节点;
S309:新的领导节点根据存储器中的目标时间槽索引信息确定目标时间槽的下一个时间槽,并继续检测目标时间槽的下一个时间槽是否满足转发期限前的预设余量时长。
在本公开实施例中,存储器可以部署于服务节点中,也可以是单独部署的存储系统。当服务节点完成对一个时间槽加载后,领导节点将当前的时间槽的索引信息存入存储器中替换上一个时间槽的索引信息。
其中,领导节点无法工作包括的情形:领导节点宕机或出现无法工作的故障。预设机制可以是Redis选举机制或Zookeeper选举机制。
从上述描述可知,通过保存目标时间槽索引信息,在领导节点故障时,选举的新产生的领导节点可以通过索引信息快速定位到待处理的时间槽,避免领导节点每次重新产生后,还需要遍历所有的时间槽,才能判断哪个时间槽是待处理的时间槽,提高处理效率。
需要说明的是:服务节点组成的集群中,每个服务节点均既可以是领导节点,也可以是副本节点。参考图5,图5为本公开实施例提供的服务节点的功能模块组成示意图,每个服务节点根据执行功能内部可以划分以下几个功能模块:
1、路由模块(router):用于将各延迟消息划分为第一延迟消息和第二延迟消息。
2、计时模块(timer):用于获取节点的本地时间,公本开实施例可以不需要使用全局时钟。
3、发送模块(mq sender):用于将各第一延迟消息或加载得到所有的第二延迟消息得到的第二延迟消息发送至入各级别主题队列中。
4、提交模块(commit):仅在领导节点内被激活,用于从存储器中读取最新的时间槽的索引信息,以及在当前的目标时间槽加载完成后更新存储器中的时间槽索引信息。
5、调度模块(scheduler):仅在领导节点内被激活,用于获取目标时间槽中记录的第二延迟消息集合的索引信息,并根据索引信息将第二延迟消息集合划分为至少一个加载任务;将至少一个加载任务分别发送至多个服务节点,以通过多个服务节点根据各自的加载任务加载对应的第二延迟消息。
6、时间槽输入/输出接口(slot I/O):用于将各第二延迟消息按照延迟时间的绝对时间存入多个对应的时间槽中,以及加载所述目标时间槽中的所有的第二延迟消息。
参考图6,图6为本公开实施例提供的延迟消息处理设备的结构框图。为了便于说明,仅示出了与本公开实施例相关的部分。参照图6,所述设备应用于服务端,包括:划分单元601、第一处理单元602、第二处理单元603和第三处理单元604。
划分单元601,用于将获取的各延迟消息按照预设时间阈值划分为第一延迟消息和第二延迟消息,其中所述第一延迟消息的延迟时间不超过所述预设时间阈值,所述第二延迟消息的延迟时间大于所述预设时间阈值;
第一处理单元602,用于根据所述第一延迟消息的延迟时间将各第一延迟消息划分至对应的级别主题队列中,以将所述第一延迟消息进行转发,其中所述级别主题队列的时间粒度是按照各第一延迟消息的延迟时间划分的;
第二处理单元603,用于根据所述第二延迟消息的延迟时间将各第二延迟消息划分至对应的时间槽中,其中所述时间槽是基于绝对时间按照预设时间间隔划分的;当检测到任一目标时间槽满足预设加载时间条件时,加载所述目标时间槽内的第二延迟消息;
第三处理单元604,用于将加载得到所有的第二延迟消息划分至对应的所述级别主题队列中,以完成第二延迟消息的转发。
根据本公开的一个或多个实施例,所述服务端包括多个服务节点,所述多个服务节点包括一个领导节点;所述第二处理单元603,具体用于所述多个服务节点将各第二延迟消息按照延迟时间存入各时间槽中;所述领导节点检测待加载的时间槽是否满足预设加载时间条件;所述领导节点在确定任一目标时间槽满足预设加载时间条件时,调度所述多个服务节点以加载所述目标时间槽中的所有的第二延迟消息。
根据本公开的一个或多个实施例,所述预设加载时间条件为所述目标时间槽的转发期限前的预设余量时长。
根据本公开的一个或多个实施例,所述预设时间阈值的时长大于所述多个服务节点中任意两个服务节点的最大时钟漂移的时长、所述时间槽的时间槽间隔时长和所述预设余量时长三者之和。
根据本公开的一个或多个实施例,所述第二处理单元603,具体用于所述领导节点获取所述目标时间槽中记录的第二延迟消息集合的索引信息,并根据所述索引信息将所述第二延迟消息集合划分为至少一个加载任务;将所述至少一个加载任务分别发送至所述多个服务节点,以使所述多个服务节点根据各自的加载任务加载对应的第二延迟消息。
根据本公开的一个或多个实施例,所述第三处理单元604,具体用于所述多个服务节点将各自加载的第二延迟消息按照延迟时间分别存入对应的级别主题队列中。
根据本公开的一个或多个实施例,还包括:确认信息处理模块605,用于所述多个服务节点发送所述目标时间槽加载完成的确认信息至所述领导节点;所述领导节点根据所述确认信息,继续检测所述目标时间槽的下一个时间槽是否满足预设加载时间条件。
根据本公开的一个或多个实施例,还包括:更新处理模块606,用于所述领导节点更新存储器中的时间槽索引信息为所述目标时间槽的索引信息。
根据本公开的一个或多个实施例,所述更新处理模块606,还用于若所述领导节点无法工作,则根据预设机制选出新的领导节点;所述新的领导节点根据所述存储器中的目标时间槽的索引信息确定所述目标时间槽的下一个时间槽,并继续检测所述目标时间槽的下一个时间槽是否满足预设加载时间条件。
根据本公开的一个或多个实施例,所述时间槽采用独立存储系统进行存储,其中每个时间槽对应所述独立存储系统中的一个存储单元。
本实施例提供的设备,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
为了实现上述实施例,本公开实施例还提供了一种电子设备。
参考图7,其示出了适于用来实现本公开实施例的电子设备700的结构示意图,该电子设备700可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(Portable MediaPlayer,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图7示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图7所示,电子设备700可以包括处理装置(例如中央处理器、图形处理器等)701,其可以根据存储在只读存储器(Read Only Memory,简称ROM)702中的程序或者从存储装置708加载到随机访问存储器(Random Access Memory,简称RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有电子设备700操作所需的各种程序和数据。处理装置701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
通常,以下装置可以连接至I/O接口705:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置706;包括例如液晶显示器(Liquid CrystalDisplay,简称LCD)、扬声器、振动器等的输出装置707;包括例如磁带、硬盘等的存储装置708;以及通信装置709。通信装置709可以允许电子设备700与其他设备进行无线或有线通信以交换数据。虽然图7示出了具有各种装置的电子设备700,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置709从网络上被下载和安装,或者从存储装置708被安装,或者从ROM702被安装。在该计算机程序被处理装置701执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network,简称LAN)或广域网(Wide Area Network,简称WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
第一方面,根据本公开的一个或多个实施例,提供了一种延迟消息处理方法,包括:
将获取的各延迟消息按照预设时间阈值划分为第一延迟消息和第二延迟消息,其中所述第一延迟消息的延迟时间不超过所述预设时间阈值,所述第二延迟消息的延迟时间大于所述预设时间阈值;
根据所述第一延迟消息的延迟时间将各第一延迟消息划分至对应的级别主题队列中,以将所述第一延迟消息进行转发,其中所述级别主题队列的时间粒度是按照各第一延迟消息的延迟时间划分的;
根据所述第二延迟消息的延迟时间将各第二延迟消息划分至对应的时间槽中,其中所述时间槽是基于绝对时间按照预设时间间隔划分的;当检测到任一目标时间槽满足预设加载时间条件时,加载所述目标时间槽内的第二延迟消息;
将加载得到所有的第二延迟消息划分至对应的所述级别主题队列中,以完成第二延迟消息的转发。
根据本公开的一个或多个实施例,所述方法应用于服务端,所述服务端包括多个服务节点,所述多个服务节点包括一个领导节点;所述根据第二延迟消息的延迟时间将各第二延迟消息划分至对应的时间槽中,其中所述时间槽是基于绝对时间按照预设时间间隔划分的;当检测到任一时间槽满足预设加载时间条件时,加载所述目标时间槽内的第二延迟消息,包括:所述多个服务节点将各第二延迟消息按照延迟时间存入各时间槽中;所述领导节点检测待加载的时间槽是否满足预设加载时间条件;所述领导节点在确定任一目标时间槽满足预设加载时间条件时,调度所述多个服务节点以加载所述目标时间槽中的所有的第二延迟消息。
根据本公开的一个或多个实施例,所述预设加载时间条件为所述目标时间槽的转发期限前的预设余量时长。
根据本公开的一个或多个实施例,所述预设时间阈值的时长大于所述多个服务节点中任意两个服务节点的最大时钟漂移的时长、所述时间槽的时间槽间隔时长和所述预设余量时长三者之和。
根据本公开的一个或多个实施例,所述领导节点调度所述多个服务节点以加载所述目标时间槽中的所有的第二延迟消息,包括:所述领导节点获取所述目标时间槽中记录的第二延迟消息集合的索引信息,并根据所述索引信息将所述第二延迟消息集合划分为至少一个加载任务;将所述至少一个加载任务分别发送至所述多个服务节点,以使所述多个服务节点根据各自的加载任务加载对应的第二延迟消息。
根据本公开的一个或多个实施例,所述将加载得到所有的第二延迟消息划分至对应的所述级别主题队列中,以完成第二延迟消息的转发,包括:所述多个服务节点将各自加载的第二延迟消息按照延迟时间分别存入对应的级别主题队列中。
根据本公开的一个或多个实施例,所述多个服务节点将各自加载的第二延迟消息按照延迟时间分别存入对应的级别主题队列中之后,还包括:所述多个服务节点发送所述目标时间槽加载完成的确认信息至所述领导节点;所述领导节点根据所述确认信息,继续检测所述目标时间槽的下一个时间槽是否满足预设加载时间条件。
根据本公开的一个或多个实施例,所述多个服务节点发送所述目标时间槽加载完成的确认信息至所述领导节点之后,还包括:所述领导节点更新存储器中的时间槽索引信息为所述目标时间槽的索引信息。
根据本公开的一个或多个实施例,所述方法还包括:若所述领导节点无法工作,则根据预设机制选出新的领导节点;所述新的领导节点根据所述存储器中的目标时间槽的索引信息确定所述目标时间槽的下一个时间槽,并继续检测所述目标时间槽的下一个时间槽是否满足预设加载时间条件。
根据本公开的一个或多个实施例,所述时间槽采用独立存储系统进行存储,其中每个时间槽对应所述独立存储系统中的一个存储单元。
第二方面,根据本公开的一个或多个实施例,还提供了一种延迟消息处理设备,包括:
划分单元,用于将获取的各延迟消息按照预设时间阈值划分为第一延迟消息和第二延迟消息,其中所述第一延迟消息的延迟时间不超过所述预设时间阈值,所述第二延迟消息的延迟时间大于所述预设时间阈值;
第一处理单元,用于根据所述第一延迟消息的延迟时间将各第一延迟消息划分至对应的级别主题队列中,以将所述第一延迟消息进行转发,其中所述级别主题队列的时间粒度是按照各第一延迟消息的延迟时间划分的;
第二处理单元,用于根据所述第二延迟消息的延迟时间将各第二延迟消息划分至对应的时间槽中,其中所述时间槽是基于绝对时间按照预设时间间隔划分的;当检测到任一目标时间槽满足预设加载时间条件时,加载所述目标时间槽内的第二延迟消息;
第三处理单元,用于将加载得到所有的第二延迟消息划分至对应的所述级别主题队列中,以完成第二延迟消息的转发。
根据本公开的一个或多个实施例,所述服务端包括多个服务节点,所述多个服务节点包括一个领导节点;所述第二处理单元,具体用于所述多个服务节点将各第二延迟消息按照延迟时间存入各时间槽中;所述领导节点检测待加载的时间槽是否满足预设加载时间条件;所述领导节点在确定任一目标时间槽满足预设加载时间条件时,调度所述多个服务节点以加载所述目标时间槽中的所有的第二延迟消息。
根据本公开的一个或多个实施例,所述预设加载时间条件为所述目标时间槽的转发期限前的预设余量时长。
根据本公开的一个或多个实施例,所述预设时间阈值的时长大于所述多个服务节点中任意两个服务节点的最大时钟漂移的时长、所述时间槽的时间槽间隔时长和所述预设余量时长三者之和。
根据本公开的一个或多个实施例,所述第二处理单元,具体用于所述领导节点获取所述目标时间槽中记录的第二延迟消息集合的索引信息,并根据所述索引信息将所述第二延迟消息集合划分为至少一个加载任务;将所述至少一个加载任务分别发送至所述多个服务节点,以使所述多个服务节点根据各自的加载任务加载对应的第二延迟消息。
根据本公开的一个或多个实施例,所述第三处理单元,具体用于所述多个服务节点将各自加载的第二延迟消息按照延迟时间分别存入对应的级别主题队列中。
根据本公开的一个或多个实施例,还包括:确认信息处理模块,用于所述多个服务节点发送所述目标时间槽加载完成的确认信息至所述领导节点;所述领导节点根据所述确认信息,继续检测所述目标时间槽的下一个时间槽是否满足预设加载时间条件。
根据本公开的一个或多个实施例,还包括:更新处理模块,用于所述领导节点更新存储器中的时间槽索引信息为所述目标时间槽的索引信息。
根据本公开的一个或多个实施例,所述更新处理模块,还用于若所述领导节点无法工作,则根据预设机制选出新的领导节点;所述新的领导节点根据所述存储器中的目标时间槽的索引信息确定所述目标时间槽的下一个时间槽,并继续检测所述目标时间槽的下一个时间槽是否满足预设加载时间条件。
根据本公开的一个或多个实施例,所述时间槽采用独立存储系统进行存储,其中每个时间槽对应所述独立存储系统中的一个存储单元。
第三方面,根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的延迟消息处理方法。
第四方面,根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的延迟消息处理方法。
第五方面,根据本公开的一个或多个实施例,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的延迟消息处理方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (12)
1.一种延迟消息处理方法,包括:
将获取的各延迟消息按照预设时间阈值划分为第一延迟消息和第二延迟消息,其中所述第一延迟消息的延迟时间不超过所述预设时间阈值,所述第二延迟消息的延迟时间大于所述预设时间阈值;
根据所述第一延迟消息的延迟时间将各第一延迟消息划分至对应的级别主题队列中,以将所述第一延迟消息进行转发,其中所述级别主题队列的时间粒度是按照各第一延迟消息的延迟时间划分的;
根据所述第二延迟消息的延迟时间将各第二延迟消息划分至对应的时间槽中,其中所述时间槽是基于绝对时间按照预设时间间隔划分的;当检测到任一目标时间槽满足预设加载时间条件时,加载所述目标时间槽内的第二延迟消息;其中,所述预设加载时间条件为所述目标时间槽的转发期限前的预设余量时长;
将加载得到所有的第二延迟消息划分至对应的所述级别主题队列中,以完成第二延迟消息的转发。
2.根据权利要求1所述的方法,所述方法应用于服务端,所述服务端包括多个服务节点,所述多个服务节点包括一个领导节点;
所述根据第二延迟消息的延迟时间将各第二延迟消息划分至对应的时间槽中,其中所述时间槽是基于绝对时间按照预设时间间隔划分的;当检测到任一时间槽满足预设加载时间条件时,加载所述目标时间槽内的第二延迟消息,包括:
所述多个服务节点将各第二延迟消息按照延迟时间存入各时间槽中;
所述领导节点检测待加载的时间槽是否满足预设加载时间条件;
所述领导节点在确定任一目标时间槽满足预设加载时间条件时,调度所述多个服务节点以加载所述目标时间槽中的所有的第二延迟消息。
3.根据权利要求2所述的方法,其中,所述预设时间阈值的时长大于所述多个服务节点中任意两个服务节点的最大时钟漂移的时长、所述时间槽的时间槽间隔时长和所述预设余量时长三者之和。
4.根据权利要求2所述的方法,其中,所述领导节点调度所述多个服务节点以加载所述目标时间槽中的所有的第二延迟消息,包括:
所述领导节点获取所述目标时间槽中记录的第二延迟消息集合的索引信息,并根据所述索引信息将所述第二延迟消息集合划分为至少一个加载任务;
将所述至少一个加载任务分别发送至所述多个服务节点,以使所述多个服务节点根据各自的加载任务加载对应的第二延迟消息。
5.根据权利要求2所述的方法,其中,所述将加载得到所有的第二延迟消息划分至对应的所述级别主题队列中,以完成第二延迟消息的转发,包括:
所述多个服务节点将各自加载的第二延迟消息按照延迟时间分别存入对应的级别主题队列中。
6.根据权利要求5所述的方法,其中,所述多个服务节点将各自加载的第二延迟消息按照延迟时间分别存入对应的级别主题队列中之后,还包括:
所述多个服务节点发送所述目标时间槽加载完成的确认信息至所述领导节点;
所述领导节点根据所述确认信息,继续检测所述目标时间槽的下一个时间槽是否满足预设加载时间条件。
7.根据权利要求6所述的方法,其中,所述多个服务节点发送所述目标时间槽加载完成的确认信息至所述领导节点之后,还包括:
所述领导节点更新存储器中的时间槽索引信息为所述目标时间槽的索引信息。
8.根据权利要求7所述的方法,所述方法还包括:
若所述领导节点无法工作,则根据预设机制选出新的领导节点;
所述新的领导节点根据所述存储器中的目标时间槽的索引信息确定所述目标时间槽的下一个时间槽,并继续检测所述目标时间槽的下一个时间槽是否满足预设加载时间条件。
9.根据权利要求1至8任一项所述的方法,其中,所述时间槽采用独立存储系统进行存储,其中每个时间槽对应所述独立存储系统中的一个存储单元。
10.一种延迟消息处理设备,应用于服务端,包括:
划分单元,用于将获取的各延迟消息按照预设时间阈值划分为第一延迟消息和第二延迟消息,其中所述第一延迟消息的延迟时间不超过所述预设时间阈值,所述第二延迟消息的延迟时间大于所述预设时间阈值;
第一处理单元,用于根据所述第一延迟消息的延迟时间将各第一延迟消息划分至对应的级别主题队列中,以将所述第一延迟消息进行转发,其中所述级别主题队列的时间粒度是按照各第一延迟消息的延迟时间划分的;
第二处理单元,用于根据所述第二延迟消息的延迟时间将各第二延迟消息划分至对应的时间槽中,其中所述时间槽是基于绝对时间按照预设时间间隔划分的;当检测到任一目标时间槽满足预设加载时间条件时,加载所述目标时间槽内的第二延迟消息;其中,所述预设加载时间条件为所述目标时间槽的转发期限前的预设余量时长;
第三处理单元,用于将加载得到所有的第二延迟消息划分至对应的所述级别主题队列中,以完成第二延迟消息的转发。
11.一种电子设备,包括:处理器和存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如权利要求1至9任一项所述的延迟消息处理方法。
12.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至9任一项所述的延迟消息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110006404.1A CN112787958B (zh) | 2021-01-05 | 2021-01-05 | 延迟消息处理方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110006404.1A CN112787958B (zh) | 2021-01-05 | 2021-01-05 | 延迟消息处理方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112787958A CN112787958A (zh) | 2021-05-11 |
CN112787958B true CN112787958B (zh) | 2022-09-20 |
Family
ID=75755255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110006404.1A Active CN112787958B (zh) | 2021-01-05 | 2021-01-05 | 延迟消息处理方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112787958B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360267B (zh) * | 2021-06-23 | 2023-02-14 | 平安普惠企业管理有限公司 | 基于时间轴的任务执行方法、装置、设备及介质 |
CN113595814B (zh) * | 2021-07-06 | 2024-08-23 | 深圳Tcl新技术有限公司 | 消息延迟检测方法、装置、电子设备及存储介质 |
CN113535271B (zh) * | 2021-07-28 | 2024-08-06 | 浙江大华技术股份有限公司 | 算法模型的加载方法、装置、存储介质和电子装置 |
CN114281412A (zh) * | 2021-12-24 | 2022-04-05 | 中电信数智科技有限公司 | 一种消息处理方法、装置、电子设备及存储介质 |
CN114363268B (zh) * | 2022-01-12 | 2023-12-22 | 深圳市天一泓科技有限公司 | 消息延迟消费方法及相关产品 |
CN117544573A (zh) * | 2023-11-06 | 2024-02-09 | 中移互联网有限公司 | 消息延时推送方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789431A (zh) * | 2016-12-26 | 2017-05-31 | 中国银联股份有限公司 | 一种超时监控方法及装置 |
CN107391271A (zh) * | 2017-05-17 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种基于消息队列系统的延时任务触发方法和装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424075B1 (en) * | 2015-01-30 | 2016-08-23 | Amazon Technologies, Inc. | Dynamic virtual partitioning for delayed queues |
US9813351B2 (en) * | 2015-10-06 | 2017-11-07 | Huawei Technologies Co., Ltd. | Method and apparatus for adaptive packet aggregation |
CN106658716A (zh) * | 2015-10-29 | 2017-05-10 | 上海贝尔股份有限公司 | 用于在车辆到车辆通信中降低延迟的方法和设备 |
CN107291566B (zh) * | 2017-06-15 | 2020-06-05 | 北京京东尚科信息技术有限公司 | 延迟任务执行的方法和装置 |
CN109766200A (zh) * | 2018-12-31 | 2019-05-17 | 北京明朝万达科技股份有限公司 | 一种消息队列处理方法、装置、设备及存储介质 |
CN111475250B (zh) * | 2019-01-24 | 2023-05-26 | 阿里巴巴集团控股有限公司 | 一种云环境下的网络优化方法和装置 |
CN111045806A (zh) * | 2019-12-16 | 2020-04-21 | 云南优鸟科技有限公司 | 延迟消息队列实现方法以及系统 |
-
2021
- 2021-01-05 CN CN202110006404.1A patent/CN112787958B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789431A (zh) * | 2016-12-26 | 2017-05-31 | 中国银联股份有限公司 | 一种超时监控方法及装置 |
CN107391271A (zh) * | 2017-05-17 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种基于消息队列系统的延时任务触发方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112787958A (zh) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112787958B (zh) | 延迟消息处理方法及设备 | |
CN113159680B (zh) | 库存预占方法、装置、电子设备和计算机可读介质 | |
CN110781373B (zh) | 榜单更新方法、装置、可读介质和电子设备 | |
CN111931962A (zh) | 信息展示方法、装置和电子设备 | |
CN110430142B (zh) | 用于控制流量的方法和装置 | |
CN111240834A (zh) | 任务执行方法、装置、电子设备和存储介质 | |
CN110795446A (zh) | 榜单更新方法、装置、可读介质和电子设备 | |
CN113760991A (zh) | 数据操作方法、装置、电子设备和计算机可读介质 | |
CN113722056A (zh) | 任务调度方法、装置、电子设备和计算机可读介质 | |
CN112015816A (zh) | 数据同步方法、装置、介质及电子设备 | |
CN110865846A (zh) | 应用管理的方法、装置、终端、系统及存储介质 | |
CN112347111A (zh) | 数据更新的方法和装置 | |
CN110856004B (zh) | 消息处理方法、装置、可读存储介质及电子设备 | |
CN112379982A (zh) | 任务处理方法、装置、电子设备及计算机可读存储介质 | |
WO2016107102A1 (zh) | 短信并发业务处理方法及装置 | |
CN110852720A (zh) | 文档的处理方法、装置、设备及存储介质 | |
CN114979241A (zh) | 通信方法、装置、存储介质以及电子设备 | |
CN114116247A (zh) | 基于Redis的消息处理方法、装置、系统、服务器和介质 | |
CN112231327A (zh) | 一种航班信息更新方法、装置、服务器及存储介质 | |
CN115134254A (zh) | 一种网络模拟方法、装置、设备及存储介质 | |
CN113163483B (zh) | 时间戳更新方法、装置和电子设备 | |
US9823083B2 (en) | Forecasting arrival times | |
CN112346891A (zh) | 消息存储方法、装置、设备和计算机可读介质 | |
CN112015746A (zh) | 数据实时处理方法、装置、介质和电子设备 | |
CN110619079A (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 |