消息队列的积压量监控方法、装置、可读介质和电子设备与流程

文档序号:15736694发布日期:2018-10-23 21:36阅读:260来源:国知局

本发明涉及计算机技术领域,具体而言,涉及一种消息队列的积压量监控方法、装置、可读介质和电子设备。



背景技术:

目前,消息异步并发处理在互联网软件架构中的使用越来越多。在实际生产环境中,一般通过消息中间件来接收和存储消息,以供消费端应用处理;或者也可以通过在应用中开线程池来异步处理队列消息等。不管是消息中间件还是应用本身的消息队列都需要对消息积压量进行监控,即实时监控消息的生产和处理情况,当消息积压时能实时报警以便快速做出响应。

目前,消息积压量的监控方式也是多种多样。对于消息中间件都是自身实现积压量的计算及监控,比如当收到消息时在积压量中进行累加,在客户端消费完一条消息后在积压量中进行递减,或者在收到消息时存储到一个存储介质中,当客户端消费成功后从这个存储介质中删除这条消息,然后通过线程实时读取积压量或是查询消息记录数,当积压量达到一定数量就进行报警。

对于应用实例中的消息队列,可以通过实例开启定时线程来扫描应用进程中的消息队列积压量,并进行分析报警,然后集中存储进行统一展示,也可以通过轮询的方式扫描每个实例中消息队列的积压量来进行分析报警和集中存储。

可见,虽然目前的方案可以进行积压量的监控,但是方案并不具有通用性,定制化比较严重,这样导致针对每个应用都要制定一套积压量监控方案,增加了开发及维护成本。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本发明的目的在于提供一种消息队列的积压量监控方法、装置、可读介质及电子设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。

本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。

根据本发明的第一方面,提供了一种消息队列的积压量监控方法,包括:记录消息队列的入队日志;记录所述消息队列的出队日志;根据所述入队日志及所述出队日志,计算所述消息队列的积压量。

在本发明的一些实施例中,基于前述方案,所述入队日志及所述出队日志中包含有第一标识,所述第一标识的值用于表示消息入队或消息出队。

在本发明的一些实施例中,基于前述方案,所述入队日志及所述出队日志中包含有消息队列标识和/或消息类型标识。

在本发明的一些实施例中,基于前述方案,所述入队日志及所述出队日志中包含所述消息队列的归属源标识。

在本发明的一些实施例中,基于前述方案,所述入队日志及所述出队日志中包含有第二标识,所述第二标识的值用于表示日志的产生时间。

在本发明的一些实施例中,基于前述方案,根据所述入队日志及所述出队日志,计算所述消息队列的积压量的步骤,包括:按照预定时间周期获取记录的所述入队日志及所述出队日志;根据每次获取到的所述入队日志及所述出队日志,计算所述消息队列在所述每个时间周期内的积压量。

在本发明的一些实施例中,基于前述方案,根据所述入队日志及所述出队日志,计算所述消息队列的积压量的步骤,包括:获取所述入队日志及所述出队日志的产生时间;根据所述入队日志及所述出队日志的产生时间,计算所述消息队列在预定时间段内的积压量。

在本发明的一些实施例中,基于前述方案,还包括:在所述消息队列的积压量超过预定阈值时,进行预警提示。

在本发明的一些实施例中,基于前述方案,还包括:根据单位时间内记录的所述出队日志的数量,计算所述消息队列的吞吐量。

根据本发明的第二方面,提供了一种消息队列的积压量监控装置,包括:第一记录单元,用于记录消息队列的入队日志;第二记录单元,用于记录所述消息队列的出队日志;处理单元,用于根据所述入队日志及出队日志,计算所述消息队列的积压量。

根据本发明的第三方面,提供了一种可读介质,其上存储有程序,该程序被处理器执行时实现如上述第一方面所述的积压量监控方法。

根据本发明的第四方面,提供了一种电子设备,包括:处理器和存储器,所述存储器存储有可执行指令,所述处理器用于调用所述存储器存储的可执行指令执行如第一方面所述的积压量监控方法。

在本发明的一些实施例所提供的技术方案中,通过记录消息队列的入队日志及出队日志,以基于入队日志及出队日志来计算消息队列的积压量,使得能够通过通用的日志方式来对消息队列的积压量进行监控及分析,减少了重复开发,进而能够降低开发及维护成本。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1示意性示出了根据本发明的一个实施例的消息队列的积压量监控方法的流程图;

图2示出了根据本发明的实施例的积压量日志的采集、处理及缓存过程的示意图;

图3示出了根据本发明的实施例的用于实现积压量日志的采集、处理及缓存过程的系统架构示意图;

图4示出了根据本发明的实施例的积压量采集、分析及存储过程的示意图;

图5示出了根据本发明的实施例的用于实现积压量采集、分析及存储过程的系统架构示意图;

图6示出了根据本发明的实施例的将图3和图5所示的系统进行整合的示意图;

图7示意性示出了根据本发明的一个实施例的消息队列的积压量监控装置的框图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。

附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

图1示意性示出了根据本发明的一个实施例的消息队列的积压量监控方法的流程图。

参照图1,根据本发明的一个实施例的消息队列的积压量监控方法,包括:

步骤S102,记录消息队列的入队日志,并记录所述消息队列的出队日志。

根据本发明的示例性实施例,所述入队日志及所述出队日志中包含有第一标识,所述第一标识的值用于表示消息入队或消息出队。

需要说明的是,第一标识的值既可以是数值,也可以是字符串。作为本发明的一个示例,当第一标识的值是数值时,入队日志中的第一标识的值可以是1,出队日志中的第一标识的值可以是-1,这样可以通过累加入队日志和出队日志中的第一标识的值来计算消息队列的积压量。当第一标识的值是字符串时,可以对字符串进行分析来确定日志是入队日志还是出队日志,进而来计算积压量。

根据本发明的示例性实施例,所述入队日志及所述出队日志中包含有消息队列标识和/或消息类型标识。

需要说明的是:当入队日志及出队日志中包含有消息队列标识时,可以据此标识来计算指定消息队列的积压量;当入队日志及出队日志中包含有消息类型标识时,可以据此标识来计算指定消息类型的积压量;当入队日志及出队日志中既包含消息队列标识,又包含消息类型标识时,可以据此标识来计算指定消息类型在指定消息队列中的积压量。

根据本发明的示例性实施例,所述入队日志及所述出队日志中包含所述消息队列的归属源标识。

需要说明的是:当入队日志及出队日志中包含有消息队列的归属源标识时,可以据此标识来确定指定归属源(如指定应用实例、指定消息中间件、指定库房等)中的消息队列的积压量。

根据本发明的示例性实施例,所述入队日志及所述出队日志中包含有第二标识,所述第二标识的值用于表示日志的产生时间。

步骤S104,根据所述入队日志及所述出队日志,计算所述消息队列的积压量。

对于步骤S104,本发明提出了如下两种具体的实施方式:

实施方式一

步骤S104具体包括:按照预定时间周期获取记录的所述入队日志及所述出队日志;根据每次获取到的所述入队日志及所述出队日志,计算所述消息队列在所述每个时间周期内的积压量。

在实施方式一中,是根据时间频率来读取入队日志及出队日志,以据此来计算积压量。

实施方式二

步骤S104具体包括:获取所述入队日志及所述出队日志的产生时间;根据所述入队日志及所述出队日志的产生时间,计算所述消息队列在预定时间段内的积压量。

在实施方式二中,是根据日志的产生时间来计算消息队列在预定时间段内的积压量。

在步骤S104计算得出积压量之后,还可以包括:在所述消息队列的积压量超过预定阈值时,进行预警提示。

此外,还可以根据单位时间内记录的出队日志的数量,计算所述消息队列的吞吐量。具体地,消息队列的吞吐量即为单位时间内的出队数。

以下结合图2至图6,以具体示例详细说明本发明的技术方案:

在本发明的实施例中,入队日志及出队日志中可以包含有如下字段的至少一个:

“Key”:表示一个消息队列的标识或是一种消息类型的标识;

“Time”:表示日志产生的时间,可以精确到毫秒。

“bValue”:表示入队和出队标识。比如当bValue值为1时,表示入队;当bValue值为-1时,表示出队。

“bMark”:表示扩展标识字段。比如用于标识是哪个实例产生的,或是哪个库房产生的消息。

当入队日志及出队日志包含有上述所有字段时,其格式可以如下:

1、当消息队列中加入一条消息时,生成的入队日志为:

{“key”:“ump.biz.test”,“time”:“20130117161523451”,“bValue”:“1”,“bMark”:“beijing”}

2、当消息队列中成功消费或是处理完一条消息时,生成的出队日志为:

{“key”:“ump.biz.test”,“time”:“20130117161523451”,“bValue”:“-1”,“bMark”:“beijing”}

在上述的日志格式的基础上,本发明实施例的技术方案包括如下过程:

日志的采集、处理及缓存

参照图2和图3,日志采集、处理及缓存的过程具体包括:

步骤S202,应用端发送积压量日志到数据接收中心。

步骤S204,数据接收中心接收并解析积压量日志。

步骤S206,调用redis的hincrBy方法将bValue值进行累加。具体地,在对日志进行解析时,可以解析出日志中的key和bValue,入队的bValue为1,出队的bValue为-1,然后根据key调用redis的hincrBy(对正数就是+,对负数就是减)方法累加bValue值,最后redis中缓存key对应的值就为实时积压量。需要说明的是:入队日志和出队日志应该是成对出现的,正常情况下积压量就为0,如果处理端比较耗时,那么消息入队就会多于出队,此时就会出现消息积压的问题。

积压量采集、分析及存储

参照图4和图5,积压量采集、分析及存储的过程具体包括:

步骤S402,数据分析中心监听MQ群集获取到需要监听积压量的key。其中,任务调度中心可以根据配置的时间频率发送分析任务到MQ群集上,时间频率比如可以是30秒、1分钟或5分钟等。

步骤S404,数据分析中心根据监听到的key,获取积压量值,具体可以调用redis的get命令获取积压量。

步骤S406,数据分析中心判断获取的积压量是否超过配置的积压量阈值,若超过,则向报警中心发送报警消息;若未超过,则将积压量值存储到数据库中。

日志的采集、处理及缓存过程,以及积压量的采集、分析及存储过程的整体架构图如图6所示。

本发明上述实施例的技术方案通过通用的日志接入方式对与消息队列相关的积压量进行监控,在企业内部减少了重复开发,并降低了维护成本。并且通过本发明的技术方案可以实时的根据时间频率监控一个中间件或是应用实例的消息队列的积压量,并达到实时预警的目的。同时,通过本发明实施例中记录日志的方式还可以根据时间频率计算吞吐量,进而有利于掌控系统的处理能力。

图7示意性示出了根据本发明的一个实施例的消息队列的积压量监控装置的框图。

参照图7,根据本发明的一个实施例的消息队列的积压量监控装置700,包括:第一记录单元702、第二记录单元704和处理单元706。

具体地,第一记录单元702用于记录消息队列的入队日志;第二记录单元704用于记录所述消息队列的出队日志;处理单元706用于根据所述入队日志及出队日志,计算所述消息队列的积压量。

需要说明的是,上述消息队列的积压量监控装置中各模块/单元的具体细节已经在对应的消息队列的积压量监控方法中进行了详细的描述,因此此处不再赘述。

此外,本发明的实施方式还提供一种电子设备,可以包括:处理器和存储器,其中,所述存储器存储有可执行指令,所述处理器用于调用所述存储器存储的可执行指令执行如本发明上述实施例中所述的消息队列的积压量监控方法。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由电子设备的处理器执行以完成在示例性实施例中的上述技术方案。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1