消息处理方法及装置与流程

文档序号:18899442发布日期:2019-10-18 21:44阅读:136来源:国知局
消息处理方法及装置与流程

本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种消息处理方法及装置。



背景技术:

消息队列是指用于存储消息的中间件。如,其可以存储生产端向消费者端消费端发送的消息。具体地,生产端可以向消息队列发送消息,消费端可以从消息队列中获取消息,或者说消费端可以消费消息队列中的消息。当生产端发送消息的速率超过消费端消费消息的速率时,消息队列中的消息会产生积压。

传统技术中,当消息队列中的消息产生积压时,消息的处理方式有如下两种:优先队列的方式:给消息划分不同的优先级。基于特定规则,让优先级高的消息先被处理。生产端限流的方式:当处理能力不足或者达到预设的阀值时,直接拒绝消息,以此来保证消息不产生积压。

因此,需要提供一种准确而有效地处理消息的方案。



技术实现要素:

本说明书一个或多个实施例描述了一种消息处理方法及装置,可以准确而有效地对消息进行处理。

第一方面,提供了一种消息处理方法,包括:

监控生产端发送消息的发送速率以及消费端消费消息的消费速率;所述生产端用于向消息队列发送消息,所述消费端用于消费所述消息队列中的消息;

当所述发送速率大于所述消费速率时,对所述生产端后续发送的新消息,确定所述新消息的分流概率;

按照所述分流概率随机地将所述新消息分流至蓄洪队列中;所述蓄洪队列用于在所述消息队列的消息积压时分流所述生产端发送的消息。

第二方面,提供了一种消息处理装置,包括:

监控单元,用于监控生产端发送消息的发送速率以及消费端消费消息的消费速率;所述生产端用于向消息队列发送消息,所述消费端用于消费所述消息队列中的消息;

确定单元,用于当所述监控单元监控到所述发送速率大于所述消费速率时,对所述生产端后续发送的新消息,确定所述新消息的分流概率;

分流单元,用于按照所述确定单元确定的所述分流概率随机地将所述新消息分流至蓄洪队列中;所述蓄洪队列用于在所述消息队列的消息积压时分流所述生产端发送的消息。

本说明书一个或多个实施例提供的消息处理方法及装置,监控生产端发送消息的发送速率以及消费端消费消息的消费速率。当发送速率大于消费速率时,对生产端后续发送的新消息,确定新消息的分流概率。按照分流概率随机地将新消息分流至蓄洪队列中。由此,可以提高消息处理的准确性和有效性。

附图说明

为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本说明书一个实施例提供的消息处理方法的应用场景示意图;

图2为本说明书一个实施例提供的消息处理方法流程图;

图3为本说明书另一个实施例提供的消息处理方法流程图;

图4为本说明书再一个实施例提供的消息处理方法流程图;

图5为本说明书一个实施例提供的消息处理装置示意图。

具体实施方式

下面结合附图,对本说明书提供的方案进行描述。

本说明书一个实施例提供的消息处理方法可以应用于如图1所示的场景中,图1中,消息队列系统(以下简称系统)可以监控生产端发送消息的发送速率和消费端消费消息的消费速率。其至少可以包括两种类型的消息队列:正常的消息队列(也称原队列)和蓄洪队列,其中,蓄洪队列可以采用高可用并能实现持久化存储的分布式缓存队列。具体地,当监控到发送速率大于消费速率(也即消息积压)时,从生产端接收的消息以指定概率(其计算方法后续进行说明)随机地分流至蓄洪队列中。当监控到发送速率小于等于消费速率时,从生产端接收的消息全部进入原队列中。此外,在发送速率小于消费速率时,按照蓄洪队列中的消息对应的入队列时间,对蓄洪队列中的消息进行处理。此处,蓄洪队列中的消息可以具有对应的入队列时间。

需要说明的是,生产端发送的消息可以包含消息特征,如,ip1和ip2等。在本说明书中,对包含消息特征的消息的处理方法与不包含消息特征的消息的处理方法可以不同。以下将通过不同的实施例来对包含或者不包含消息特征的消息的处理方法分别进行说明。

对不包含消息特征的消息的处理方法可以如图2所示。图2中,该方法的执行主体可以为具有处理能力的设备:服务器或者系统或者装置,如,图1中的消息队列系统。如图2所示,所述方法具体可以包括:

步骤210,监控生产端发送消息的发送速率以及消费端消费消息的消费速率。

在一种实现方式中,生产端发送消息的发送速率的确定方式可以包括两种:固定时长的方式和固定消息个数的方式。

固定时长的方式:获取生产端当前时刻之前固定时长内发送的消息的个数。根据消息的个数以及固定时长,确定发送速率。如,假设当前时刻之前1秒钟内发送的请求消息的个数为100个,则发送速率为100req/s,即每秒100个请求消息。

固定个数的方式:获取生产端当前时刻之前发送固定个数的消息所需时长。根据固定个数和所需时长,确定发送速率。如,假设当前时刻之前发送100个请求消息所需时长为1s,则发送速率为100req/s。

需要说明的是,消费端消费消息的消费速率的确定方法同生产端发送消息的发送速率的确定方法类似,在此不复赘述。

步骤220,当发送速率大于消费速率时,根据发送速率和消费速率,计算消息的分流概率。

在一种实现方式中,可以根据如下公式来计算消息的分流概率:

其中,c为分流概率,p为发送速率,q为消费速率。

步骤230,对生产端后续发送的新消息,根据计算的消息的分流概率,确定新消息的分流概率。

在一种实现方式中,将计算的消息的分流概率作为生产端后续发送的新消息的分流概率。

步骤240,按照确定的分流概率随机地将新消息分流至蓄洪队列中。

可以理解的是,未被分流的新消息则进入原队列。

由此可以看出,在本实施例中,当原队列的消息积压时,对从当前时刻起生产端发送的每个新消息,以分流概率:(p-q)/p随机进入蓄洪队列。在该种情况下,有(p-q)/p的新消息被蓄洪,处理时间变长,影响到正常功能。但是,任意时刻有q/p的新消息(进入原队列的新消息)完全不受消息积压的影响,可以正常工作。此外,通过该实施例提供的方法,可以使得在不同时间产生的消息,都有同样的几率被处理。

总之,图2所提供的方法可以概括如下:当发送速率大于消费速率时,基于使得新消息的发送速率与消费速率相等的思路来计算消息的分流概率,并根据计算的分流概率对新消息进行分流。

以上是对不包含消息特征的消息的处理方法,对包含消息特征的消息的处理方法可以如图3所示。图3中,该方法的执行主体可以为具有处理能力的设备:服务器或者系统或者装置,如,图1中的消息队列系统。如图3所示,所述方法具体可以包括:

步骤310,监控生产端发送消息的发送速率以及消费端消费消息的消费速率。

步骤310同步骤210所述,在此不复赘述。

步骤320,当发送速率大于消费速率时,对生产端后续发送的新消息,根据新消息包含的消息特征,确定新消息所归属的类别。

如,当新消息包含的消息特征为:ip1时,确定该新消息所归属的类别为第一类别;当新消息包含的消息特征为:ip2时,确定该新消息所归属的类别为第二类别。

步骤330,根据消息的类别与分流概率之间的对应关系,确定该类别的新消息对应的分流概率。

此处的对应关系中可以包括多个类别,该类别的数目可以与消息特征的种类数相同。在一种具体实现方式中,确定对应关系中的分流概率可以包括如下各步骤:

步骤u,根据消息的消息特征,对消息进行分类,并确定各个类别的消息的发送速率。

对在步骤310中获取的生产端当前时刻之前固定时长内发送的消息。根据消息包含的消息特征,将获取的消息进行分类。针对每个类别的消息,统计该类别的消息的个数。并根据该类别的消息的个数以及固定时长,确定该类别的消息的发送速率。举例来说,对当前时刻之前1秒钟内发送的100个消息,假设上述消息中分别包含了如下两种类型的消息特征:ip1和ip2,即消息特征的种类数为2个。则可以将包含ip1的消息划分为第一类别,而将包含ip2的消息划分为第二类别。假设包含ip1的消息的个数为80个,包含ip2的消息的个数为20个。则对第一类别的消息,生产端的发送速率为80req/s。对第二类别的消息,生产端的发送速率为20req/s。

步骤v,根据总类别数目以及消费速率,确定平均消费速率。

此处的总类别数目可以根据前述获取的消息包含的消息特征的种类数来确定。如前述例子,上述总类别数目为2个。当消费速率为q时,确定的平均消费速率为:q/2。

步骤w,根据各个类别的消息的发送速率、消费速率以及平均消费速率,确定各个类别的消息对应的分流概率。

此处,确定的各个类别的消息对应的分流概率即为上述对应关系中的分流概率。

在一种实现方式中,确定各个类别的消息对应的分流概率的过程如下:

步骤w1,判断各个类别的消息的发送速率是否均不小于平均消费速率。

还是以前述例子进行说明,生产端发送的消息包括两个类别:第一类别(包含ip1的消息)和第二类别(包含ip2的消息)。此外,将第一类别的消息的发送速率表示为:a,将第二类别的消息的发送速率表示为:b,平均消费速率表示为:q/2。则上述判断过程即为判断表达式:(a≥(q/2))&(b≥(q/2))是否为真。

步骤w2,若是,则对每个类别的消息,根据该类别的消息的发送速率以及消费速率,确定该类别的消息对应的分流概率。

如果上述表达式为真,即a≥(q/2),b≥(q/2),则第一类别的消息对应的分流概率可以通过如下公式来确定。

其中,c1为第一类别的消息对应的分流概率,a为第一类别的消息的发送速率,q为消费速率。

同理,可以确定第二类别的消息对应的分流概率为:(2b-q)/2b。

上述两个公式的含义可以理解为:当原队列的消息积压时,对从当前时刻起生产端发送的每个新消息,当该新消息包含的消息特征为:ip1时,其以分流概率:(2a-q)/2a随机进入蓄洪队列。当该新消息包含的消息特征为:ip2时,其以分流概率:(2b-q)/2b随机进入蓄洪队列。

步骤w3,若否,则确定发送速率不小于平均消费速率的目标类别的消息,对目标类别的消息,根据目标类别的消息的发送速率、各个类别的消息的发送速率之和以及消费速率,确定目标类别的消息对应的分流概率。对发送速率小于平均消费速率的其它类别的消息,确定其它类别的消息对应的分流概率为预设值(如,0)。

如果上述表达式为假,则有两种可能:“&”前半部分的表达式为假,或者后半部分的表达式为假。当前半部分表达式为假时,即a<(q/2),b≥(q/2),上述目标类别为第二类别,而其它类别为第一类别。当后半部分表达式为假,即a≥(q/2),b<(q/2),上述目标类别为第一类别,而其它类别为第二类别。

当目标类别为第二类别时,目标类别的消息对应的分流概率可以通过如下公式来确定。

其中,co为目标类别的消息对应的分流概率,(a+b)为两个类别的消息的发送速率之和,b为目标类别的消息的发送速率,q为消费速率。

其它类别的消息的分流概率可以确定为0,也即不对其它类别的消息进行分流。

上述公式3和分流概率为0的含义可以理解为:当原队列的消息积压时,对从当前时刻起生产端发送的每个新消息,当该新消息包含的消息特征为:ip1时,不进入蓄洪队列。当该新消息包含的消息特征为:ip2时,其以分流概率:(a+b-q)/b随机进入蓄洪队列。

可以理解的是,当目标类别为第一类别时,目标类别的消息对应的分流概率的确定方式类似,如,可以为:(a+b-q)/a。即:当原队列的消息积压时,对从当前时刻起生产端发送的每个新消息,当该新消息的消息特征为:ip1时,其以分流概率:(a+b-q)/a随机进入蓄洪队列。当该新消息的消息特征为:ip2时,不进入蓄洪队列。

需要说明的是,在确定出各个类别的消息对应的分流概率之后,就可以对消息的类别与对应的分流概率进行对应存储,从而得到上述对应关系。

步骤330中,可以根据新消息所归属的类别,从上述对应关系中查找相匹配的类别,并将相匹配的类别对应的分流概率作为新消息的分流概率。

步骤340,按照分流概率随机地将新消息分流至蓄洪队列中。

综上,本实施例中,生产端发送的新消息进入蓄洪队列的概率与消息特征相关,具体地与包含消息特征的消息的发送速率相关。由此,可以实现公平队列的场景。

总之,图3所提供的方法可以概括如下:将消费速率进行平分,得到平均消费速率。然后根据各个类别的消息的发送速率与平均消息速率之间的大小关系,来确定是否对其进行分流。当所有类别的消息的发送速率均不小于平均消费速率时,基于使得每个类别的新消息的发送速率与平均消费速率相等的思路,来确定每个类别的新消息的分流概率,并根据确定的分流概率对该类别的新消息进行分流。当只有某些类别的消息的发送速率不小于平均消费速率时,基于使得所有新消息的发送速率之和与消费速率相等的思路,来确定上述类别的新消息的分流概率,并根据确定的分流概率对上述类别的新消息进行分流。对于那些小于平均消费速率的类别的消息,则不进行分流。

需要说明的是,图3是对消息包含消息特征(如,ip1和ip2),且消息特征没有优先级的情况下,对消息的处理方法的说明。当消息特征具有优先级,且包含优先级高的消息特征的消息被记录在白名单中时,消息的处理方法可以如图4所示。图4中,记录在白名单中的消息占用消费端的固定比例(表示为:w)的资源,在本实施例中,上述资源具体表现为消费速率。所述方法具体可以包括:

步骤410同步骤310所述,在此不复赘述。

步骤420,当发送速率大于消费速率时,对生产端后续发送的新消息,根据新消息包含的消息特征,确定新消息所归属的类别。

如,当新消息包含的消息特征为:vip时,确定该新消息所归属的类别为第一类别;当新消息包含的消息特征为:非vip时,确定该新消息所归属的类别为第二类别。

步骤430,根据消息的类别与分流概率之间的对应关系,确定该类别的新消息对应的分流概率。

此处的对应关系中可以包括两个类别:第一类别和第二类别,第一类别的消息包含优先级高的消息特征(表示为:vip),第二类别的消息包含优先级低的消息特征(表示为:非vip)。在一种具体实现方式中,确定对应关系中的分流概率可以包括如下各步骤:

步骤x,根据消息包含的消息特征,将消息划分为如上两个类别。

即当消息包含的消息特征为:vip时,将该消息划分到第一类别;当消息包含的消息特征为:非vip时,将该消息划分到第二类别。

步骤y,确定两个类别的消息的发送速率。

对在步骤410中获取的生产端当前时刻之前固定时长内发送的消息。根据消息包含的消息特征,将获取的消息划分到两个类别(第一类别和第二类别)。针对每个类别的消息,统计该类别的消息的个数。并根据该类别的消息的个数以及固定时长,确定该类别的消息的发送速率。举例来说,对当前时刻之前1秒钟内发送的100个消息,将包含vip的消息划分为第一类别,而将包含非vip的消息划分为第二类别。假设包含vip的消息的个数为80个,包含非vip的消息的个数为20个。则对第一类别的消息,生产端的发送速率为80req/s。对第二类别的消息,生产端的发送速率为20req/s。

步骤z,根据两个类别的消息的发送速率、固定比例以及消费速率,确定两个类别的消息对应的分流概率。

此处,确定的两个类别的消息对应的分流概率即为上述对应关系中的分流概率。

在一种实现方式中,确定两个类别的消息对应的分流概率的过程如下:

步骤z1,判断第一类别的消息的发送速率是否不小于固定比例与消费速率的乘积且判断第二类别的消息的发送速率是否不小于消费速率与乘积之差。

此处,将第一类别的消息(包含vip的消息)的发送速率表示为:v,将第二类别的消息(包含非vip的消息)的发送速率表示为:n,固定比例表示为:w,消费速率表示为:q。则上述判断过程即为判断表达式:(v≥wq)&(n≥(1-w)q)是否为真。

步骤z2,若是,则对每个类别的消息,根据该类别的消息的发送速率、固定比例以及消费速率,确定该类别的消息对应的分流概率。

如果上述表达式为真,即v≥wq,n≥(1-w)q,则可以根据如下公式来确定第一类别的消息对应的分流概率。

其中,c1为第一类别的消息对应的分流概率,v为第一类别的消息的发送速率,q为消费速率,w为固定比例。

此外,可以根据如下公式来确定第二类别的消息对应的分流概率。

其中,c2为第二类别的消息对应的分流概率,n为第二类别的消息的发送速率,q为消费速率,w为固定比例。

上述公式4和公式5的含义可以理解为:当原队列的消息积压时,对从当前时刻起生产端发送的每个新消息,当该新消息的消息特征为:vip时,其以分流概率:(v-wq)/v随机进入蓄洪队列。当该新消息的消息特征为:非vip时,其以分流概率:(n-(1-w)q)/n随机进入蓄洪队列。

步骤z3,若否,则判断是否是第一类别的消息的发送速率不小于固定比例与消费速率的乘积。若是,则确定第一类别的消息对应的分流概率为预设值(如,0)。根据两个类别的消息的发送速率之和、消费速率以及第一类别的消息的发送速率,确定第二类别的消息对应的分流概率。若否,则确定第一类别的消息对应的分流概率为预设值(如,0)。根据两个类别的消息的发送速率之和、消费速率以及第二类别的消息的发送速率,确定第二类别的消息对应的分流概率。

如果上述表达式为假,则直接确定第一类别的消息的分流概率为预设值(如,0)。由此,可以实现优先对包含优先级高的消息特征的消息进行处理的目的。

对第二类别的消息,当“&”前半部分的表达式为假时,即v<wq,n≥(1-w)q,其对应的分流概率可以根据如下公式来确定。

其中,c2为第二类别的消息对应的分流概率,(n+v)为两个类别的消息的发送速率之和,q为消费速率,n为第二类别的消息的发送速率。

上述分流概率为0和公式6的含义可以理解为:当原队列的消息积压时,对从当前时刻起生产端发送的每个新消息,当该新消息包含的消息特征为:vip时,不进入蓄洪队列。当该新消息包含的消息特征为:非vip时,其以分流概率:(n+v-q)/n随机进入蓄洪队列。

对第二类别的消息,当“&”后半部分的表达式为假时,即v≥wq,n<(1-w)q,其对应的分流概率可以根据如下公式来确定。

其中,c2为第二类别的消息对应的分流概率,(n+v)为两个类别的消息的发送速率之和,q为消费速率,v为第一类别的消息的发送速率。

上述分流概率为0和公式7的含义可以理解为:当原队列的消息积压时,对从当前时刻起生产端发送的每个新消息,当该新消息包含的消息特征为:vip时,不进入蓄洪队列。当该新消息包含的消息特征为:非vip时,其以分流概率:(n+v-q)/v随机进入蓄洪队列。

需要说明的是,在确定出两个类别的消息对应的分流概率之后,就可以对消息的类别与对应的分流概率进行对应存储,从而得到上述对应关系。

步骤430中,可以根据新消息所归属的类别,从上述对应关系中查找相匹配的类别,并将相匹配的类别对应的分流概率作为新消息的分流概率。

步骤440,按照分流概率随机地将新消息分流至蓄洪队列中。

本实施例中,当原队列的消息积压时,消费端的固定比例(w)的资源(处理能力)可以被包含vip的消息占用。具体地,当w=1时,意味着消息积压时,所有包含非vip的消息都被蓄洪,以此来保证包含vip的消息有一定可能性被正常处理。由此,可以实现优先队列的场景。此外,通过本实施例的方法,可以保证包含vip的消息的优先权,并且可以防止某些消息占用过多原队列的资源而影响正常消息。

总之,图4所提供的方法可以概括如下:判断优先级高的消息的发送速率与消费端的固定比例的消费速率(也称固定资源)之间的大小关系,并判断优先级低的消息的发送速率与剩余消费速率之间的大小关系,来确定是否对新消息进行分流。当上述两者均大于时,基于使得优先级高的新消息的发送速率与固定比例的消费速率相等的思路,来确定优先级高的新消息的分流概率,并根据确定的分流概率对优先级高的新消息进行分流。基于使得优先级低的新消息的发送速率与剩余消费速率相等的思路,来确定优先级低的新消息的分流概率,并根据确定的分流概率对优先级低的新消息进行分流。当只有前者大于时,不对优先级高的新消息进行分流,基于使得所有新消息的发送速率之和小于消费速率的思路,来确定优先级低的新消息的分流概率,并根据确定的分流概率对优先级低的新消息进行分流。当只有后者大于时,不对优先级高的新消息进行分流,基于使得所有新消息的发送速率之和与消费速率相等的思路,来确定优先级低的新消息的分流概率,并根据确定的分流概率对优先级低的新消息进行分流。

综上,在本说明书中,当生产端的发送速率大于消费速率(即消息积压)时,对消息进行蓄洪处理:将消息以指定概率随机地分流至蓄洪队列。当发送速率等于消费速率时,原队列处于平衡状态,可以不进行蓄洪处理。当发送速率小于消费速率时,可以进行泄洪处理:按照蓄洪队列中的消息对应的入队列时间,对蓄洪队列中的消息进行处理。

需要说明的是,在对消息进行蓄洪处理时,当采用简单抗积压法(对应图2)时,消息完全随机地进入蓄洪队列。当采用公平队列抗积压法(对应图3)时,所有消息特征相同的消息进入蓄洪队列的概率相同,也即分配到资源相同。当采用白名单优先抗积压法(对应图4)时,白名单内的消息占用一定的资源。当然,在实际应用中,还可以采用其它的方法进行蓄洪处理,如,黑名单抗积压法(黑名单内的消息全部进入蓄洪队列)和罚函数抗积压法(以消息的消息特征作为罚函数,确定进入蓄洪队列的概率),本说明书对此不作限定。

可以理解的是,上述几种蓄洪处理的方法可以单独使用,也可以任意组合使用。

本说明书上述实施例提供的方案最大的创新点在于:一方面,当系统出现处理能力跟不上而产生消息积压的情况下,牺牲一部分,保证一部分的思想。采用简单抗积压法,保证总是能有消息被正常处理,完全不受消息积压影响,使用这种方法可以使得在不同时候发送的消息被处理的概率是一样的。而在同一时间点,所有包含相同优先级的消息特征的消息被处理的概率也是一样的。另一方面,通过蓄洪队列来保证没有任何消息丢失,在系统空闲的时候可以被慢慢处理。由此,既高效地利用了资源,又能很好地解决消息积压的问题,并且解决了消息丢失的问题。最后,本说明书实施例提供的方案可以很容易地改造现有的系统。且生产端和消费端完全不需要感知上述改造就能获得抗消息积压的能力。

总之,本说明书实施例提供的方案有如下优点:1)有效抗消息积压。无论生产端发送多大的消息量,无论有多严重的消息积压,消费端总能按自身处理能力进行处理,并且被处理的消息不会出现明显的时延。使用本方案,能保证系统不会因为消息积压出现假死现象,其始终能为部分消息提供有效服务。2)消息无损。在出现消息积压时,所有被蓄洪的消息都不会被丢弃,而是暂存在蓄洪队列中,在系统空闲的时候被捞取出来慢慢消化。3)方案灵活。可以灵活定制不同的分流概率,来应对不同的应用场景。4)实现简单。与任何现有的系统兼容,只要部署一个过滤分流节点,一个蓄洪队列,一个对原队列的简单监控,不用对原生产端和消费端作任何改造,就能使系统获得抗消息零积压的能力。

与上述消息处理方法对应地,本说明书一个实施例还提供的一种消息处理装置,如图5所示,该装置包括:

监控单元501,用于监控生产端发送消息的发送速率以及消费端消费消息的消费速率。生产端用于向消息队列发送消息,消费端用于消费消息队列中的消息。

确定单元502,用于当监控单元501监控到发送速率大于消费速率时,对生产端后续发送的新消息,确定新消息的分流概率。

分流单元503,用于按照确定单元502确定的分流概率随机地将新消息分流至蓄洪队列中。蓄洪队列用于在消息队列的消息积压时分流生产端发送的消息。

可选地,该装置还可以包括:计算单元504。

计算单元504,用于根据发送速率和所述消费速率,计算消息的分流概率。

确定单元502具体可以用于:

根据计算单元504计算的消息的分流概率,确定新消息的分流概率。

可选地,上述消息可以包含消息特征。

确定单元502具体可以用于:

根据新消息包含的消息特征,确定新消息所归属的类别。

根据消息的类别与分流概率之间的对应关系,确定该类别的新消息对应的分流概率。

可选地,确定单元502还具体可以用于:

根据消息包含的消息特征,对消息进行分类,并确定各个类别的消息的发送速率。

根据总类别数目以及消费速率,确定平均消费速率。

根据各个类别的消息的发送速率、消费速率以及平均消费速率,确定各个类别的消息对应的分流概率。各个类别的消息对应的分流概率即为对应关系中的分流概率。

其中,根据各个类别的消息的发送速率、消费速率以及平均消费速率,确定各个类别的消息对应的分流概率可以包括:

判断各个类别的消息的发送速率是否均不小于平均消费速率。

若是,则对每个类别的消息,根据该类别的消息的发送速率以及消费速率,确定该类别的消息对应的分流概率。

若否,则确定发送速率不小于平均消费速率的目标类别的消息,对目标类别的消息,根据目标类别的消息的发送速率、各个类别的消息的发送速率之和以及消费速率,确定目标类别的消息对应的分流概率。

对发送速率小于平均消费速率的其它类别的消息,确定其它类别的消息对应的分流概率为预设值。

可选地,上述消息特征可以用于判断消息是否包含在白名单中,白名单中的消息占用消费端的固定比例的资源。确定单元502还具体可以用于:

根据消息包含的消息特征,将消息划分为两个类别:第一类别和第二类别,第一类别的消息包含在所述白名单中。

确定两个类别的消息的发送速率。

根据两个类别的消息的发送速率、固定比例以及消费速率,确定两个类别的消息对应的分流概率。两个类别的消息对应的分流概率即为对应关系中的分流概率。

其中,根据两个类别的消息的发送速率、固定比例以及消费速率,确定两个类别的消息对应的分流概率可以包括:

判断第一类别的消息的发送速率是否不小于固定比例与消费速率的乘积且判断第二类别的消息的发送速率是否不小于消费速率与乘积之差。

若是,则对每个类别的消息,根据该类别的消息的发送速率、固定比例以及消费速率,确定该类别的消息对应的分流概率。

若否,则判断是否是第一类别的消息的发送速率不小于固定比例与消费速率的乘积。若是,则确定第一类别的消息对应的分流概率为预设值。根据两个类别的消息的发送速率之和、消费速率以及第一类别的消息的发送速率,确定第二类别的消息对应的分流概率。若否,则确定第一类别的消息对应的分流概率为预设值。根据两个类别的消息的发送速率之和、消费速率以及第二类别的消息的发送速率,确定第二类别的消息对应的分流概率。

可选地,蓄洪队列中的消息可以具有对应的入队列时间,该装置还可以包括:

处理单元505,用于当发送速率小于消费速率时,按照蓄洪队列中的消息对应的入队列时间,对蓄洪队列中的消息进行处理。

本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。

本说明书一个实施例提供的消息处理装置,监控单元501监控生产端发送消息的发送速率以及消费端消费消息的消费速率。当监控到发送速率大于消费速率时,对生产端后续发送的新消息,确定单元502确定新消息的分流概率。分流单元503按照确定的分流概率随机地将新消息分流至蓄洪队列中。由此,可以提高消息处理的准确性和有效性。

本说明书上述实施例提供的消息处理装置可以为图1中消息队列系统的一个模块或者单元。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。

以上所述的具体实施方式,对本说明书的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的具体实施方式而已,并不用于限定本说明书的保护范围,凡在本说明书的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的保护范围之内。

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