CN110347518A - 消息处理方法及装置 - Google Patents

消息处理方法及装置 Download PDF

Info

Publication number
CN110347518A
CN110347518A CN201810301815.1A CN201810301815A CN110347518A CN 110347518 A CN110347518 A CN 110347518A CN 201810301815 A CN201810301815 A CN 201810301815A CN 110347518 A CN110347518 A CN 110347518A
Authority
CN
China
Prior art keywords
message
probability
rate
shunting
category
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.)
Granted
Application number
CN201810301815.1A
Other languages
English (en)
Other versions
CN110347518B (zh
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.)
Advanced Nova Technology Singapore Holdings Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201810301815.1A priority Critical patent/CN110347518B/zh
Publication of CN110347518A publication Critical patent/CN110347518A/zh
Application granted granted Critical
Publication of CN110347518B publication Critical patent/CN110347518B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02ATECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
    • Y02A10/00TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE at coastal zones; at river basins
    • Y02A10/40Controlling or monitoring, e.g. of flood or hurricane; Forecasting, e.g. risk assessment or mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

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

Description

消息处理方法及装置
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种消息处理方法及装置。
背景技术
消息队列是指用于存储消息的中间件。如,其可以存储生产端向消费者端消费端发送的消息。具体地,生产端可以向消息队列发送消息,消费端可以从消息队列中获取消息,或者说消费端可以消费消息队列中的消息。当生产端发送消息的速率超过消费端消费消息的速率时,消息队列中的消息会产生积压。
传统技术中,当消息队列中的消息产生积压时,消息的处理方式有如下两种:优先队列的方式:给消息划分不同的优先级。基于特定规则,让优先级高的消息先被处理。生产端限流的方式:当处理能力不足或者达到预设的阀值时,直接拒绝消息,以此来保证消息不产生积压。
因此,需要提供一种准确而有效地处理消息的方案。
发明内容
本说明书一个或多个实施例描述了一种消息处理方法及装置,可以准确而有效地对消息进行处理。
第一方面,提供了一种消息处理方法,包括:
监控生产端发送消息的发送速率以及消费端消费消息的消费速率;所述生产端用于向消息队列发送消息,所述消费端用于消费所述消息队列中的消息;
当所述发送速率大于所述消费速率时,对所述生产端后续发送的新消息,确定所述新消息的分流概率;
按照所述分流概率随机地将所述新消息分流至蓄洪队列中;所述蓄洪队列用于在所述消息队列的消息积压时分流所述生产端发送的消息。
第二方面,提供了一种消息处理装置,包括:
监控单元,用于监控生产端发送消息的发送速率以及消费端消费消息的消费速率;所述生产端用于向消息队列发送消息,所述消费端用于消费所述消息队列中的消息;
确定单元,用于当所述监控单元监控到所述发送速率大于所述消费速率时,对所述生产端后续发送的新消息,确定所述新消息的分流概率;
分流单元,用于按照所述确定单元确定的所述分流概率随机地将所述新消息分流至蓄洪队列中;所述蓄洪队列用于在所述消息队列的消息积压时分流所述生产端发送的消息。
本说明书一个或多个实施例提供的消息处理方法及装置,监控生产端发送消息的发送速率以及消费端消费消息的消费速率。当发送速率大于消费速率时,对生产端后续发送的新消息,确定新消息的分流概率。按照分流概率随机地将新消息分流至蓄洪队列中。由此,可以提高消息处理的准确性和有效性。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图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中消息队列系统的一个模块或者单元。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本说明书的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的具体实施方式而已,并不用于限定本说明书的保护范围,凡在本说明书的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的保护范围之内。

Claims (16)

1.一种消息处理方法,其特征在于,包括:
监控生产端发送消息的发送速率以及消费端消费消息的消费速率;所述生产端用于向消息队列发送消息,所述消费端用于消费所述消息队列中的消息;
当所述发送速率大于所述消费速率时,对所述生产端后续发送的新消息,确定所述新消息的分流概率;
按照所述分流概率随机地将所述新消息分流至蓄洪队列中;所述蓄洪队列用于在所述消息队列的消息积压时分流所述生产端发送的消息。
2.根据权利要求1所述的方法,其特征在于,在所述确定所述新消息的分流概率之前,还包括:
根据所述发送速率和所述消费速率,计算所述消息的分流概率;
所述确定所述新消息的分流概率,包括:
根据所述消息的分流概率,确定所述新消息的分流概率。
3.根据权利要求1所述的方法,其特征在于,所述新消息包含消息特征;所述确定所述新消息的分流概率,包括:
根据所述新消息包含的消息特征,确定所述新消息所归属的类别;
根据消息的类别与分流概率之间的对应关系,确定所述类别的新消息对应的分流概率。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:确定所述对应关系中的消息的分流概率的步骤,包括:
根据所述消息包含的消息特征,对所述消息进行分类,并确定各个类别的消息的发送速率;
根据总类别数目以及所述消费速率,确定平均消费速率;
根据所述各个类别的消息的发送速率、所述消费速率以及所述平均消费速率,确定所述各个类别的消息对应的分流概率;所述各个类别的消息对应的分流概率即为所述对应关系中的分流概率。
5.根据权利要求4所述的方法,其特征在于,所述根据各个类别的消息的发送速率、所述消费速率以及所述平均消费速率,确定所述各个类别的消息对应的分流概率,包括:
判断各个类别的消息的发送速率是否均不小于所述平均消费速率;
若是,则对每个类别的消息,根据该类别的消息的发送速率以及所述消费速率,确定该类别的消息对应的分流概率;
若否,则确定发送速率不小于所述平均消费速率的目标类别的消息,对所述目标类别的消息,根据所述目标类别的消息的发送速率、所述各个类别的消息的发送速率之和以及所述消费速率,确定所述目标类别的消息对应的分流概率;
对发送速率小于所述平均消费速率的其它类别的消息,确定所述其它类别的消息对应的分流概率为预设值。
6.根据权利要求3所述的方法,其特征在于,所述消息特征用于判断消息是否包含在白名单中;所述白名单中的消息占用所述消费端的固定比例的资源;所述方法还包括:确定所述对应关系中的消息的分流概率的步骤,包括:
根据所述消息包含的消息特征,将所述消息划分为两个类别:第一类别和第二类别;所述第一类别的消息包含在所述白名单中;
确定两个类别的消息的发送速率;
根据所述两个类别的消息的发送速率、所述固定比例以及所述消费速率,确定所述两个类别的消息对应的分流概率;所述两个类别的消息对应的分流概率即为所述对应关系中的分流概率。
7.根据权利要求6所述的方法,其特征在于,所述根据所述两个类别的消息的发送速率、所述固定比例以及所述消费速率,确定所述两个类别的消息对应的分流概率,包括:
判断所述第一类别的消息的发送速率是否不小于所述固定比例与所述消费速率的乘积且判断所述第二类别的消息的发送速率是否不小于所述消费速率与所述乘积之差;
若是,则对每个类别的消息,根据该类别的消息的发送速率、所述固定比例以及所述消费速率,确定该类别的消息对应的分流概率;
若否,则判断是否是所述第一类别的消息的发送速率不小于所述固定比例与所述消费速率的乘积;若是,则确定所述第一类别的消息对应的分流概率为预设值;根据所述两个类别的消息的发送速率之和、所述消费速率以及所述第一类别的消息的发送速率,确定所述第二类别的消息对应的分流概率;若否,则确定所述第一类别的消息对应的分流概率为预设值;根据所述两个类别的消息的发送速率之和、所述消费速率以及所述第二类别的消息的发送速率,确定所述第二类别的消息对应的分流概率。
8.根据权利要求3-7任一项所述的方法,其特征在于,所述蓄洪队列中的消息具有对应的入队列时间,还包括:
当所述发送速率小于所述消费速率时,按照所述蓄洪队列中的消息对应的入队列时间,对所述蓄洪队列中的消息进行处理。
9.一种消息处理装置,其特征在于,包括:
监控单元,用于监控生产端发送消息的发送速率以及消费端消费消息的消费速率;所述生产端用于向消息队列发送消息,所述消费端用于消费所述消息队列中的消息;
确定单元,用于当所述监控单元监控到所述发送速率大于所述消费速率时,对所述生产端后续发送的新消息,确定所述新消息的分流概率;
分流单元,用于按照所述确定单元确定的所述分流概率随机地将所述新消息分流至蓄洪队列中;所述蓄洪队列用于在所述消息队列的消息积压时分流所述生产端发送的消息。
10.根据权利要求9所述的装置,其特征在于,还包括:
计算单元,用于根据所述发送速率和所述消费速率,计算所述消息的分流概率;
所述确定单元具体用于:
根据所述消息的分流概率,确定所述新消息的分流概率。
11.根据权利要求9所述的装置,其特征在于,所述新消息包含消息特征;所述确定单元具体用于:
根据所述新消息包含的消息特征,确定所述新消息所归属的类别;
根据消息的类别与分流概率之间的对应关系,确定所述类别的新消息对应的分流概率。
12.根据权利要求11所述的装置,其特征在于,所述确定单元还具体用于:
根据所述消息包含的消息特征,对所述消息进行分类,并确定各个类别的消息的发送速率;
根据总类别数目以及所述消费速率,确定平均消费速率;
根据所述各个类别的消息的发送速率、所述消费速率以及所述平均消费速率,确定所述各个类别的消息对应的分流概率;所述各个类别的消息对应的分流概率即为所述对应关系中的分流概率。
13.根据权利要求12所述的装置,其特征在于,所述根据各个类别的消息的发送速率、所述消费速率以及所述平均消费速率,确定所述各个类别的消息对应的分流概率,包括:
判断各个类别的消息的发送速率是否均不小于所述平均消费速率;
若是,则对每个类别的消息,根据该类别的消息的发送速率以及所述消费速率,确定该类别的消息对应的分流概率;
若否,则确定发送速率不小于所述平均消费速率的目标类别的消息,对所述目标类别的消息,根据所述目标类别的消息的发送速率、所述各个类别的消息的发送速率之和以及所述消费速率,确定所述目标类别的消息对应的分流概率;
对发送速率小于所述平均消费速率的其它类别的消息,确定所述其它类别的消息对应的分流概率为预设值。
14.根据权利要求11所述的装置,其特征在于,所述消息特征用于判断所述消息是否包含在白名单中;所述白名单中的消息占用所述消费端的固定比例的资源;所述确定单元还具体用于:
根据所述消息包含的消息特征,将所述消息划分为两个类别:第一类别和第二类别;所述第一类别的消息包含在所述白名单中;
确定两个类别的消息的发送速率;
根据所述两个类别的消息的发送速率、所述固定比例以及所述消费速率,确定所述两个类别的消息对应的分流概率;所述两个类别的消息对应的分流概率即为所述对应关系中的分流概率。
15.根据权利要求14所述的装置,其特征在于,所述根据所述两个类别的消息的发送速率、所述固定比例以及所述消费速率,确定所述两个类别的消息对应的分流概率,包括:
判断所述第一类别的消息的发送速率是否不小于所述固定比例与所述消费速率的乘积且判断所述第二类别的消息的发送速率是否不小于所述消费速率与所述乘积之差;
若是,则对每个类别的消息,根据该类别的消息的发送速率、所述固定比例以及所述消费速率,确定该类别的消息对应的分流概率;
若否,则判断是否是所述第一类别的消息的发送速率不小于所述固定比例与所述消费速率的乘积;若是,则确定所述第一类别的消息对应的分流概率为预设值;根据所述两个类别的消息的发送速率之和、所述消费速率以及所述第一类别的消息的发送速率,确定所述第二类别的消息对应的分流概率;若否,则确定所述第一类别的消息对应的分流概率为预设值;根据所述两个类别的消息的发送速率之和、所述消费速率以及所述第二类别的消息的发送速率,确定所述第二类别的消息对应的分流概率。
16.根据权利要求9-15任一项所述的装置,其特征在于,所述蓄洪队列中的消息具有对应的入队列时间,还包括:
处理单元,用于当所述发送速率小于所述消费速率时,按照所述蓄洪队列中的消息对应的入队列时间,对所述蓄洪队列中的消息进行处理。
CN201810301815.1A 2018-04-04 2018-04-04 消息处理方法及装置 Active CN110347518B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810301815.1A CN110347518B (zh) 2018-04-04 2018-04-04 消息处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810301815.1A CN110347518B (zh) 2018-04-04 2018-04-04 消息处理方法及装置

Publications (2)

Publication Number Publication Date
CN110347518A true CN110347518A (zh) 2019-10-18
CN110347518B CN110347518B (zh) 2023-08-04

Family

ID=68172763

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810301815.1A Active CN110347518B (zh) 2018-04-04 2018-04-04 消息处理方法及装置

Country Status (1)

Country Link
CN (1) CN110347518B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113965624A (zh) * 2020-06-29 2022-01-21 中国电信股份有限公司 用于消息处理的方法、消息缓存中间件和业务系统
CN117295118A (zh) * 2023-10-08 2023-12-26 广州市玄武无线科技股份有限公司 一种稳定性强且短信数据缓冲及流量控制的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100057880A1 (en) * 2008-08-27 2010-03-04 International Business Machines Corporation Method of Routing Messages to Multiple Consumers
CN107623642A (zh) * 2017-08-30 2018-01-23 山东中创软件商用中间件股份有限公司 一种消息流量控制方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100057880A1 (en) * 2008-08-27 2010-03-04 International Business Machines Corporation Method of Routing Messages to Multiple Consumers
CN107623642A (zh) * 2017-08-30 2018-01-23 山东中创软件商用中间件股份有限公司 一种消息流量控制方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TEBYUE: "项目实战及优化", 《HTTPS://MBD.BAIDU.COM/UG_SHARE/MBOX/4A83AA9E65/SHARE?PRODUCT=SMARTAPP&TK=21EE4BF9BFE5393BDDD31430835DCD7D&SHARE_URL=HTTPS%3A%2F%2FYEBD1H.SMARTAPPS.CN%2FPAGES%2FBLOG%2FINDEX%3FBLOGID%3D123205532%26_SWEBFR%3D1%26_SWEBFROMHOST%3DBAIDUBOXAPP&DOMAIN》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113965624A (zh) * 2020-06-29 2022-01-21 中国电信股份有限公司 用于消息处理的方法、消息缓存中间件和业务系统
CN117295118A (zh) * 2023-10-08 2023-12-26 广州市玄武无线科技股份有限公司 一种稳定性强且短信数据缓冲及流量控制的方法

Also Published As

Publication number Publication date
CN110347518B (zh) 2023-08-04

Similar Documents

Publication Publication Date Title
CN110808922B (zh) 一种消息处理方法、装置、存储介质及电子设备
US9185047B2 (en) Hierarchical profiled scheduling and shaping
CN102487494B (zh) 短信流量控制方法和系统
CN107197015A (zh) 一种基于消息队列系统的消息处理方法和装置
CN109347757A (zh) 消息拥塞控制方法、系统、设备及存储介质
CN112953848B (zh) 一种基于严格优先级的流量监管方法、系统及设备
CN110784415B (zh) 一种ecn快速响应的方法及装置
US20140143777A1 (en) Resource Scheduling Method and Device
CN102970244A (zh) 一种多cpu核间负载均衡的网络报文处理方法
CN107769992B (zh) 一种报文解析分流方法及装置
CN103634224A (zh) 网络中数据传输的方法和系统
CN103338157A (zh) 一种多核系统核间数据报文缓存方法及设备
CN110347518A (zh) 消息处理方法及装置
CN107071332A (zh) 视频图像传输处理方法和视频图像传输处理装置
CN102611630B (zh) 一种报文接收控制方法及系统
US20220053373A1 (en) Communication apparatus, communication method, and program
CN101150431A (zh) 一种告警处理流水线及告警处理的方法
CN107544888B (zh) 一种日志处理方法及系统
CN116489019B (zh) 一种智能视觉信令通道管理方法、系统及介质
CN105516276B (zh) 基于仿生分级通信的消息处理方法与系统
CN113904994B (zh) 一种家庭网关大数据统一上报平台的方法
CN103179051B (zh) 一种流媒体的转发方法和系统
Hu et al. A threshold-based dynamic TXOP scheme for intra-AC QoS differentiation in IEEE 802.11 e networks
CN112436979A (zh) 一种云网流量采集方法及系统
CN115706712A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20201022

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201022

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240226

Address after: Guohao Times City # 20-01, 128 Meizhi Road, Singapore

Patentee after: Advanced Nova Technology (Singapore) Holdings Ltd.

Country or region after: Singapore

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Innovative advanced technology Co.,Ltd.

Country or region before: United Kingdom