CN109347757B - 消息拥塞控制方法、系统、设备及存储介质 - Google Patents
消息拥塞控制方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN109347757B CN109347757B CN201811334185.4A CN201811334185A CN109347757B CN 109347757 B CN109347757 B CN 109347757B CN 201811334185 A CN201811334185 A CN 201811334185A CN 109347757 B CN109347757 B CN 109347757B
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- tokens
- congestion
- sender
- 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/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供一种消息拥塞控制方法、系统、设备以及存储介质。在本申请实施例中,当消息接收者的消息队列发生拥塞时,向引起消息队列发生拥塞的消息类型对应的至少一个消息发送者发放令牌,基于令牌确定引起消息队列发生拥塞的消息发送者并对该消息发送者进行拥塞抑制处理,使得在消息队列发生拥塞的情况下,保证消息服务器的性能,避免熔断对消息服务器造成的不良影响,提高消息服务器资源利用率及工作效率,同时保证消息服务器的稳定性,在消息拥塞的情况下能够正常运行。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种消息拥塞控制方法、系统、设备以及存储介质。
背景技术
基于消息的异步处理模型采用非阻塞的调用特性,发送者将消息发送给消息服务器,消息服务器在合适的时候再将消息转发给接收者;发送和接收是异步的,发送者无需等待,二者的生命周期也可以不必相同,而且发送者可以将消息间接传给多个接收者,大大提高了程序的性能、可扩展性及健壮性,这使得异步处理模型在分布式应用上比起同步处理模型更具有吸引力。
其中,消息服务器可以采用发布订阅机制进行在消息的发送者(称为发布者)和接收者(称为订阅者)之间进行消息传输。消息服务器对于每个订阅者(consumer)独立维护一个可变长的消息缓存(buffer),发布者的消息都会被拷贝一份到每个订阅者的消息缓存中,并根据订阅者订阅的主题 (topic)主动将该主题下的消息推送给订阅者,订阅者通过监听消息可读事件,读取消息并处理。
实际应用中,因为发布者发布速率过快,消息服务器经常面临消息堆积的问题。现有消息服务器对于消息堆积的处理方法大多采用熔断机制,而熔断之后就需要进行数据同步等一系列恢复动作,增加内存消耗,甚至影响业务性能。
发明内容
本申请的多个方面提供一种消息拥塞控制方法、系统、设备以及存储介质,用以在消息积压时,能够保证消息服务器的性能,提高消息服务器的资源利用率。
本申请实施例提供一种消息拥塞控制方法,适用于消息服务器,所述方法包括:当消息接收者的消息队列发生拥塞时,从预定时间内出现在所述消息队列的消息类型中识别出引起所述消息队列发生拥塞的目标消息类型;向所述目标消息类型对应的至少一个消息发送者发放相同数量的令牌,以供所述至少一个消息发送者在规定时间内基于令牌发送消息并在规定时间内将令牌消耗完的情况下进行拥塞抑制处理。
本申请实施例还提供一种消息拥塞控制方法,适用于消息发送者,所述方法包括:接收消息服务器在确定消息接收者的消息队列发生拥塞时所发送的N个令牌,N是正整数;在规定时间内,基于N个令牌向所述消息服务器发送消息并记录所消耗的令牌数量;若在规定时间内N个令牌被消耗完,则进行拥塞抑制处理。
本申请实施例还提供一种消息拥塞控制系统,包括:消息服务器、多个消息接收者以及多个消息发送者;所述消息服务器,用于当任一消息接收者的消息队列发生拥塞时,从预定时间内出现在所述消息队列的消息类型中识别出引起所述消息队列发生拥塞的目标消息类型;向所述目标消息类型对应的至少一个消息发送者发放相同数量的令牌;令牌的数量为N,N是正整数;所述至少一个消息发送者属于所述多个消息客户端发送者;所述至少一个消息发送者,分别用于接收所述消息服务器在确定消息接收者的消息队列发生拥塞时所发送的N个令牌;在规定时间内,基于N个令牌向所述消息服务器发送消息并记录所消耗的令牌数量;若在规定时间内N个令牌被消耗完,则进行拥塞抑制处理。
本申请实施例还提供一种消息服务器,包括存储器、处理器以及通信组件;所述存储器,用于存储计算机程序;所述处理器,用于执行所述算机程序,以用于:当消息接收者的消息队列发生拥塞时,从预定时间内出现在所述消息队列的消息类型中识别出引起所述消息队列发生拥塞的目标消息类型;通过所述通信组件向所述目标消息类型对应的至少一个消息发送者发放相同数量的令牌,以供所述至少一个消息发送者在规定时间内基于令牌发送消息并在规定时间内将令牌消耗完的情况下进行拥塞抑制处理。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,其特征在于,计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器实现消息拥塞控制方法中的步骤。
本申请实施例还提供一种消息发送设备,包括存储器、处理器以及通信组件;所述存储器,用于存储计算机程序;所述处理器,用于执行所述计算机程序,以用于:通过所述通信组件,接收消息服务器在确定消息接收者的消息队列发生拥塞时所发送的N个令牌,N是正整数;在规定时间内,基于 N个令牌向所述消息服务器发送消息并记录所消耗的令牌数量;若在规定时间内N个令牌被消耗完,则进行拥塞抑制处理。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,其特征在于,计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器实现消息拥塞控制方法中的步骤。
在本申请实施例中,当消息接收者的消息队列发生拥塞时,向引起消息队列发生拥塞的消息类型对应的至少一个消息发送者发放令牌,基于令牌确定引起消息队列发生拥塞的消息发送者并对该消息发送者进行拥塞抑制处理,使得在消息队列发生拥塞的情况下,保证消息服务器的性能,避免熔断对消息服务器造成的不良影响,提高消息服务器资源利用率及工作效率,同时保证消息服务器的稳定性,在消息拥塞的情况下能够正常运行。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1A为本申请一示例性消息拥塞控制系统的结构示意图;
图1B为本申请又一示例性消息拥塞控制系统的结构示意图;
图1C为本申请另一示例性消息拥塞控制系统的结构示意图;
图2为本申请一示例性实施例的消息拥塞控制方法的流程示意图;
图3为本申请另一示例性实施例提供的消息拥塞控制方法的流程示意图;
图4为本申请一示例性实施例提供的消息拥塞控制装置的结构框架示意图;
图5为本申请另一示例性实施例提供的消息拥塞控制装置的结构框架示意图;
图6为本申请一示例性实施例提供的消息拥塞控制设备的结构示意图;
图7为本申请又一示例性实施例提供的消息拥塞控制设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
越来越多的企业面临着各种各样的数据集成和系统整合,于是公共对象请求代理结构(Common Object Request Broker Architecher,CORBA)、分布式组件对象模式(Microsoft Distributed Component Object Model,DCOM)、远程方法调用(RemoteMethod Invocation,RMI),等远程方法调用(Remote Procedure Call, RPC)消息中间件技术也应运而生,但由于采用RPC同步处理技术,在性能、健壮性、可扩展性上都存在着诸多缺点。而基于消息的异步处理模型采用非阻塞的调用特性,大大提高了程序的性能、可扩展性及健壮性,这使得异步处理模型在分布式应用上比起同步处理模型更具有吸引力。
同时,消息中间件利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
在采用消息中间件机制的系统中,不同的对象之间通过传递消息来激活对方的事件,完成相应的操作。消息发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给消息接收者。消息中间件能在不同平台之间通信,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用程序之间的协同,能够在用户和服务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发,比远程过程调用更进一步。但是,由于消息服务器需要处理接收所有消息发送者发来的消息,并主动分发给各个消息接收者,通常消息服务器会为每个消息接收者分配一定大小的缓冲区buffer作为消息缓存,由于消息发送者发送消息的速率和消息接收者接收消息的速率不一致,且发送消息的速率大于接收消息的速率,就容易造成消息积压,导致消息服务器不断增长的内存消耗,影响到整个系统的运行性能和可靠性。对此,在本申请一些实施例中,当消息接收者的消息队列发生拥塞时,向引起消息队列发生拥塞的消息类型对应的至少一个消息发送者发放令牌,基于令牌确定引起消息队列发生拥塞的消息发送者并对该消息发送者进行拥塞抑制处理,使得在消息队列发生拥塞的情况下,保证消息服务器的性能,避免熔断对消息服务器造成的不良影响,提高消息服务器资源利用率及工作效率,同时保证消息服务器的稳定性,在消息拥塞的情况下能够正常运行。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1A为本申请一示例性实施例提供的一种消息拥塞控制系统的结构示意图。如图1A所示,该处理系统100A包括:至少一个消息发送者101、消息服务器102以及至少一个消息接收者103。
其中,消息发送者101可以是任何具有一定计算能力的计算设备,消息发送者101的基本结构可以包括:至少一个处理单元和至少一个存储器。处理单元和存储器的数量取决于消息发送者101的配置和类型。存储器可以包括易失性的存储器,例如RAM,也可以包括非易失性的存储器,例如只读存储器 (Read-Only Memory,ROM)、闪存等,或者也可以同时包括两种类型。存储器内通常存储有操作系统(Operating System,OS)、一个或多个应用程序,也可以存储有程序数据等。除了处理单元和存储器之外,消息发送者101还包括一些基本配置,例如网卡芯片、IO总线、音视频组件等。
消息发送者101的具体物理实现形态可以有多种,可选地,消息发送者101 可以为消息发送终端或消息发送服务器。其中,消息发送终端还可以包括一些外围设备,例如键盘、鼠标、输入笔等。其它外围设备在本领域中是众所周知的,在此不做赘述。
消息服务器102是指可以在网络环境中提供消息转发以及发放令牌服务的服务器。在物理实现上,消息服务器102可以是任何能够提供计算服务,响应服务请求,并进行处理的设备,例如可以是常规服务器、云服务器、云主机、虚拟中心等。服务器的构成主要包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似。
消息接收者103可以是任何具有一定计算能力的计算设备,消息接收者103 的基本结构可以包括:至少一个处理单元和至少一个存储器。处理单元和存储器的数量取决于消息接收者103的配置和类型。存储器可以包括易失性的存储器,例如RAM,也可以包括非易失性的存储器,例如ROM、闪存等,或者也可以同时包括两种类型。存储器内通常存储有OS、一个或多个应用程序,也可以存储有程序数据等。除了处理单元和存储器之外,消息接收者103还包括一些基本配置,例如网卡芯片、IO总线、音视频组件等。
消息接收者103的具体物理实现形态可以有多种,可选地,消息接收者103 可以为消息接收终端或消息接收服务器。其中,消息接收终端还可以包括一些外围设备,例如键盘、鼠标、输入笔等。其它外围设备在本领域中是众所周知的,在此不做赘述。
在本实施例中,每个消息发送者101向消息服务器102发送消息。其中,消息可以是视频、文本、音乐等各种数据。在消息的传输过程中,消息可以以一定的消息格式进行传输。消息服务器102接收消息发送者101发送的消息,为每个消息接收者103维护一个消息队列,当接收到消息时,识别出订阅相应消息类型(Topic)的消息接收者103,将接收到的消息缓存至识别出的消息接收者103的消息队列中,并按照设定逻辑向消息接收者103转发该消息。消息接收者103,用于接收消息服务器102发送的消息。当消息接收者103为消息接收服务器时,消息接收者103还可以用于将接收的消息发送至其它消息接收终端进行展示。当消息接收者103为消息接收终端时,消息接收者103还可以用于直接展示接收到的消息。
其中,消息队列是指消息服务器102为对应的每个消息接收者103分配的用于缓存消息的缓存区buffer,该buffer具有一定大小的存储空间。消息服务器 102可以根据buffer的实时大小判断buffer当前消息堆积的情况,当buffer当前的存储空间不足以能够正常缓存消息时,则认定buffer当前处于消息拥塞状态。
在本实施例中,消息服务器102,用于当消息接收者103的消息队列发生拥塞时,从预定时间内出现在消息队列的消息类型中识别出引起消息队列发生拥塞的目标消息类型;向目标消息类型对应的至少一个消息发送者101 发放相同数量的令牌,以供消息发送者101进行拥塞抑制处理。
其中,令牌是指允许消息发送者101发送消息的指示信息,令牌的数量代表允许消息发送者向消息服务器102发送消息的数量,如一个令牌允许消息发送者101向消息服务器102发送一条消息,当一定数量的令牌被消息发送者101在规定时间内消耗完,则该消息发送者101不能继续发送消息,直到消息队列的拥塞情况消失。
消息发送者101除了向消息服务器102发送消息之外,还可以接收消息服务器102在确定消息接收者101的消息队列发生拥塞时所发送的N个令牌;在规定时间内,基于N个令牌向消息服务器102发送消息并记录所消耗的令牌数量;若在规定时间内N个令牌被消耗完,则该消息发送者101被进行拥塞抑制处理。
拥塞抑制处理是指抑制消息发送者101向消息服务器102发送消息而采取的操作,可选的处理方式如下:禁止消息发送者101继续发送消息;或,降低消息发送者101的消息发送速度,等等。
目标消息类型是指导致或引起消息队列发生拥塞的消息类型。其中,消息类型与消息发送者101具有对应关系,基于目标消息类型可确定导致或引起消息队列发生拥塞的消息发送者101。
目标消息类型对应的至少一个消息发送者可以是该目标消息类型对应的所有消息发送者101;也可以是该目标消息类型对应的所有消息发送者101中的部分消息发送者。
需要说明的是,在本实施例中,拥塞控制系统101A可以包括一个消息服务器102,也可以包括多个消息服务器102(即由多个消息服务器102组成的消息服务器集群),当拥塞控制系统101A只包括一个消息服务器102时,那么在消息系统中或远程方法调用系统中可以包括多个消息拥塞控制系统100A,即在消息系统中或远程方法调用系统中可以包括由多个消息服务器102组成的消息服务器集群,而对于每个消息服务器102通常对应了多个消息发送者101和多个消息接收者103。当拥塞控制系统101A包括多个消息服务器102时,那么在消息系统中或远程方法调用系统中可以包括多个拥塞控制系统100A,也可以包括一个拥塞控制系统100A,即在消息系统中或远程方法调用系统中可以包括由多个消息服务器集群组成的消息服务器群组,而每个消息服务器102通常对应了多个消息发送者101和多个消息接收者103。
在本实施例中,消息发送者101可以与消息服务器102以及消息接收者103 进行网络连接。该网络连接可以是无线或有线网络连接。若消息发送者101可以与消息服务器102以及消息接收者103通信连接,该移动网络的网络制式可以为2G(GSM)、2.5G(GPRS)、3G(WCDMA、TD-SCDMA、CDMA2000、 UTMS)、4G(LTE)、4G+(LTE+)、WiMax等中的任意一种。
在另一可选实施例中,如图1B所示,该消息拥塞控制系统100B除了包括至少一个消息发送者101、消息服务器102以及至少一个消息接收者103,还可以包括令牌计算服务器104。
其中,令牌计算服务器104是指可以在网络环境中提供令牌发放服务的服务器。在物理实现上,令牌计算服务器104可以是任何能够提供计算服务,响应服务请求,并进行处理的设备,例如可以是常规服务器、云服务器、云主机、虚拟中心等。服务器的构成主要包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似。
在本实施例中,每个消息发送者101向消息服务器102发送消息,消息服务器102接收消息发送者101发送的消息,为每个消息接收者103维护一个消息队列,当接收到消息时,识别出订阅相应消息类型(Topic)的消息接收者103,将接收到的消息缓存至识别出的消息接收者103的消息队列中,并按照设定逻辑向消息接收者103转发该消息。消息接收者103,用于接收消息服务器102发送的消息。
在本实施例中,消息服务器102,用于当消息接收者103的消息队列发生拥塞时,从预定时间内出现在消息队列的消息类型中识别出引起消息队列发生拥塞的目标消息类型;发送消息队列的拥塞程度信息、至少一个消息发送者101 的IP地址和至少一个消息发送者101的数量至令牌计算服务器104。令牌计算服务器104,接收消息服务器102发送的消息队列的拥塞程度信息、至少一个消息发送者101的IP地址和至少一个消息发送者101的数量,根据拥塞程度信息、至少一个消息发送者101的IP地址和至少一个消息发送者101的数量,发放令牌至对应的至少一个消息发送者101。每个消息发送者101同时接收令牌计算服务器104在确定消息接收者101的消息队列发生拥塞时所发送的N个令牌;在规定时间内,基于N个令牌向消息服务器102发送消息并记录所消耗的令牌数量;若在规定时间内N个令牌被消耗完,则进行拥塞抑制处理。
可选地,令牌计算服务器104,用于基于所述消息队列的拥塞程度信息和至少一个消息发送者101的数量计算令牌数量,将相同数量的令牌发送至至少一个消息发送者101。
可选地,令牌计算服务器104,具体用于:将消息队列距离达到熔断点尚且剩余的队列空间和可持续时间,作为所述消息队列的拥塞程度信息;根据消息队列距离达到熔断点尚且剩余的队列空间、可持续时间以及至少一个消息发送者的数量计算令牌数量。
可选地,令牌计算服务器104,具体用于:根据下式1)确定所述令牌数量:
其中,N为令牌数量,B为消息队列距离达到熔断点尚且剩余的队列空间,T为消息队列距离达到熔断点尚且剩余的可持续时间,C为至少一个消息发送者的数量,λ为调整因子。
值得说明的是,由于消息服务器102自身提供了强大的消息转发服务,为了不增加消息服务器102内部的复杂性,不影响其自身的性能,同时保证在高负载下,也有较高的可靠性和性能,通过另一个物理实体设备令牌计算服务器 104来向消息发送者101提供令牌发放的服务。
当消息服务器102自身配置足够优良时,也可以将消息服务器102与令牌计算服务器104设置在同一个物理实体设备中,此时可以将消息服务器102与令牌计算服务器104视作一个执行主体,即消息服务器102。
在本实施例中,消息发送者101可以与消息服务器102、消息接收者103以及令牌计算服务器104进行网络连接。该网络连接可以是无线或有线网络连接。若消息发送者101可以与消息服务器102、消息接收者103以及令牌计算服务器104通信连接,该移动网络的网络制式可以为2G(GSM)、2.5G(GPRS)、 3G(WCDMA、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、 WiMax等中的任意一种。
在又一可选实施例中,如图1C所示,该消息拥塞控制系统100C除了包括至少一个消息发送者101、消息服务器102以及至少一个消息接收者103,还可以包括令牌计算服务器104。
其中,令牌计算服务器104是指可以在网络环境中提供计算令牌数量服务的服务器。
在本实施例中,每个消息发送者101向消息服务器102发送消息,消息服务器102接收消息发送者101发送的消息,为每个消息接收者103维护一个消息队列,当接收到消息时,识别出订阅相应消息类型(Topic)的消息接收者103,将接收到的消息缓存至识别出的消息接收者103的消息队列中,并按照设定逻辑向消息接收者103转发该消息。消息接收者103,用于接收消息服务器102发送的消息。
在本实施例中,消息服务器102,用于当消息接收者103的消息队列发生拥塞时,从预定时间内出现在消息队列的消息类型中识别出引起消息队列发生拥塞的目标消息类型;发送消息队列的拥塞程度信息和至少一个消息发送者101的数量至令牌计算服务器104。令牌计算服务器104,接收消息服务器102发送的消息队列的拥塞程度信息和至少一个消息发送者101的数量,根据拥塞程度信息和至少一个消息发送者101的数量,计算令牌数量,并将令牌数量发送至消息服务器102。消息服务器102,接收令牌计算服务器104 发送的令牌数量。消息服务器102将相同数量的令牌发送至对应的消息发送者101。每个消息发送者101同时接收令牌计算服务器104在确定消息接收者101的消息队列发生拥塞时所发送的N个令牌;在规定时间内,基于N个令牌向消息服务器102发送消息并记录所消耗的令牌数量;若在规定时间内 N个令牌被消耗完,则进行拥塞抑制处理。
下面结合方法实施例,针对消息服务器102对消息拥塞控制的过程进行详细说明。
图2为本申请一示例性实施例的消息拥塞控制方法的流程示意图。本申请实施例提供的该方法200由消息服务器执行,该方法200包括以下步骤:
201:当消息接收者的消息队列发生拥塞时,从预定时间内出现在消息队列的消息类型中识别出引起消息队列发生拥塞的目标消息类型。
202:向目标消息类型对应的至少一个消息发送者发放相同数量的令牌,以供至少一个消息发送者在规定时间内基于令牌发送消息并在规定时间内将令牌消耗完的情况下进行拥塞抑制处理。
以下对上述各个步骤进行详细说明:
201:当消息接收者的消息队列发生拥塞时,从预定时间内出现在所述消息队列的消息类型中识别出引起所述消息队列发生拥塞的目标消息类型。
其中,消息队列发生拥塞是指,当消息队列当前的队列空间不足以能够正常缓存消息时,则认定消息队列当前处于消息拥塞状态。
可选地,消息队列发生拥塞的确定方式可以包括:消息服务器监测到任一消息队列的已占用队列空间达到阈值时,确定该消息队列发生了消息拥塞。
例如,消息服务器监测到标识为001的消息队列的队列空间已被占用了 160M,消息队列的总队列空间为200M,阈值为150M,那么确定该消息队列发生了拥塞。
其中,消息类型是指能够标识消息的信息,可以是唯一标识消息的信息,如,消息名称、消息ID;也可以是不唯一标识消息的信息,如,消息类型(如,短视频消息)。
目标消息类型是指导致或引起消息队列发生拥塞的消息源,基于目标消息类型可确定导致或引起消息队列发生拥塞的消息发送者。
消息队列是指消息服务器为对应的每个消息接收者分配的用于缓存消息的缓存区buffer,该buffer具有一定大小的存储空间。
可选地,从预定时间内出现在所述消息队列的消息类型中识别出引起所述消息队列发生拥塞的目标消息类型的方式可以包括但不限于以下四种方式中的任一种:
方式1):当消息接收者的消息队列发生拥塞时,将确定发生拥塞时出现在消息队列的消息类型,作为引起消息队列发生拥塞的目标消息类型。
例如,根据前文所述,消息服务器在监测到消息队列发生拥塞后,确定发生拥塞的时间,从存储在消息服务器中的消息记录表中确定在该时间对应存储的消息信息,如消息类型,topicX类型,将topicX作为目标消息类型。
方式2):当消息接收者的消息队列发生拥塞时,将确定发生拥塞之后第一个出现在消息队列的消息类型,作为引起消息队列发生拥塞的目标消息类型。
例如,根据前文所述,消息服务器在监测到消息队列发生拥塞后,确定发生拥塞的时间,从存储在消息服务器中的消息记录表中查找在该时间后第一个存储的消息信息,如消息类型,topicX类型,将topicX作为目标消息类型。
方式3):当消息接收者的消息队列发生拥塞时,将确定发生拥塞之前最后一个出现在消息队列的消息类型,作为引起消息队列发生拥塞的目标消息类型。
例如,根据前文所述,消息服务器在监测到消息队列发生拥塞后,确定发生拥塞的时间,从存储在消息服务器中的消息记录表中查找在该时间的前一个存储的消息信息,如消息类型,topicX类型,将topicX作为目标消息类型。
方式4):当消息接收者的消息队列发生拥塞时,从发生拥塞之前指定时间段内出现在消息队列的消息类型中,获取出现频率最高的消息类型,作为引起消息队列发生拥塞的目标消息类型。
例如,根据前文所述,消息服务器在监测到消息队列发生拥塞后,确定发生拥塞的时间,从存储在消息服务器中的消息记录表中查找在该时间前5 秒内存储的多个消息信息,并统计多个消息信息中的消息类型,确定最多的消息类型,如topicX类型,将topicX作为目标消息类型。
需要说明的是,当消息队列出现拥塞时,消息服务器需要知晓哪个消息类型的消息最多,再对发送这个消息类型的消息发送者进行消息抑制。
而消息服务器通常只会知道消息队列的队列空间大小,却不清楚消息队列里面有多少条消息,更不可能知道哪一类消息最多。如果由消息服务器去分析哪些消息最多,无疑会严重影响消息服务器作为消息转发的性能。鉴于此,本实施例提供了基于碰撞理论,通过上述方式来确定引起消息队列发生拥塞的目标消息类型,从而避免影响消息服务器的性能。
202:向目标消息类型对应的至少一个消息发送者发放相同数量的令牌,以供至少一个消息发送者在规定时间内基于令牌发送消息并在规定时间内将令牌消耗完的情况下进行拥塞抑制处理。
其中,目标消息类型对应的至少一个消息发送者,可以是该目标消息类型对应的所有消息发送者;也可以是该目标消息类型对应的所有消息发送者101 中的部分消息发送者,其中,部分消息发送者的选取方式可以为从对应的全部消息发送者中随机选取,或者,按照顺序从对应的全部消息发送者中顺次选取。
在本实施例中,可以将该目标消息类型对应的所有消息发送者作为至少一个消息发送者。
需要说明的是,消息服务器中可以存储有多个消息类型与消息发送者的对应关系表,消息服务器可以根据该对应关系表中查找出与目标消息类型对应的所有消息发送者。
令牌是指允许消息发送者发送消息的指示信息,如,一串数据,令牌的数量代表允许消息发送者向消息服务器发送消息的数量,如一个令牌允许消息发送者向消息服务器发送一条消息。
可选地,令牌的生成方式可以为,随机生成一串数据。
规定时间是指一段预置的时间,在该预置的时间里,消息发送者需要根据令牌来发送消息,当在该时间内消耗光所有令牌,则对该消息发送者进行拥塞抑制处理。该规定时间可以是消息服务器与消息发送者预先约定的,也可以是由消息服务器一方先确定后,伴随发放令牌时一同发送至消息发送者的。
需要说明的是,当任一消息队列发生拥塞时,给引起拥塞的消息类型对应的所有消息发送者发放相同数量的令牌,消息发送者在接收到令牌后,在规定时间内基于令牌对消息发送者进行流量限速。
在这规定时间内,消息发送者发送消息至消息队列时,会消耗相应的令牌,如果消息发送者消耗完所有令牌,消息发送者要进入流量管控状态,这种状态下会抑制消息的发布;在规定时间超时后,若消息发送者的令牌还有剩余,则不进入流量管控状态。这样一来,消息发布速度过快的消息发送者,会在流量限速期间耗光所有令牌,那么该消息发送者有可能就是导致消息队列发生拥塞的消息发送者,从而进入流量管控状态;而消息发布速度慢的消息发送者,在流量限速期间不会耗光所有令牌,该消息发送者就不大可能是导致消息队列发送拥塞的消息发送者,也就不会进入流量管控状态。
在一些实例中,在向目标消息类型对应的至少一个消息发送者发放相同数量的令牌之前,还包括:基于消息队列的拥塞程度信息和至少一个消息发送者的数量计算令牌数量。
可选地,基于消息队列的拥塞程度信息和至少一个消息发送者的数量计算令牌数量,包括:获取消息队列距离达到熔断点尚且剩余的队列空间和可持续时间,作为消息队列的拥塞程度信息;根据消息队列距离达到熔断点尚且剩余的队列空间、可持续时间以及至少一个消息发送者的数量计算令牌数量。
其中,熔断点是指在熔断机制执行的时间点,而熔断机制是指,因消息发送者频繁发送消息至消息服务器,导致消息服务器因其访问压力过大而导致响应变慢或失败,为了保护消息服务器整体的可用性,暂时切断消息发送者对消息服务器的调用。当消息队列的已占用队列空间达到一个临界值时,该临界值可以是整个队列空间大小,那么消息系统或拥塞控制系统就会采取熔断机制,采取熔断机制对应的时间点就是熔断点。
可选地,消息队列距离达到熔断点尚且剩余的队列空间的确定方式可以为:队列空间的总空间大小与队列空间的已占用空间大小的差值。如, 200M-160M=40M。
可选地,消息队列距离达到熔断点尚且剩余的可持续时间的确定方式可以为:获取该消息队列发生拥塞时对应的剩余存储时间阈值;确定该消息队列发生拥塞的持续时间;根据剩余存储时间阈值与该消息队列发生拥塞的持续时间的差值确定消息队列距离达到熔断点尚且剩余的可持续时间。
例如,消息队列发生拥塞时的时间为本日上午十一点整,当前时间为本日上午十一点零分零点二秒,那么该消息队列发生拥塞的持续时间为零点二秒,剩余存储时间阈值为1s,则消息队列距离达到熔断点尚且剩余的可持续时间1s-0.2s=0.8s。
可选地,令牌数量的计算方式可以为:消息队列距离达到熔断点尚且剩余的队列空间与可持续时间的乘积,该乘积除以消息发送者的数量,得到令牌数量。
例如,根据前文所述,若消息发送者的数量为2个,那么令牌数量=0.8*40/2=16个。
可选地,根据所述消息队列距离达到熔断点尚且剩余的队列空间、可持续时间以及所述至少一个消息发送者的数量计算令牌数量,包括:根据下式 1)确定所述令牌数量:
其中,N为令牌数量,B为消息队列距离达到熔断点尚且剩余的队列空间,T为消息队列距离达到熔断点尚且剩余的可持续时间,C为至少一个消息发送者的数量,λ为调整因子。
例如,根据前文所述,若消息发送者的数量为2个,λ为0.5,那么令牌数量=(0.8*40/2)*0.5=8个。
需要说明的是,上述调整因子可以是指根据实际情况,进行令牌数量调整的参数,该调整因子可以根据人工经验得到。
基于拥塞程度信息和消息发送者的数量计算令牌个数N,能够根据不同的拥塞程度完成有效合理的抑制。
为了方便查找消息发送者的个数,采用上述对应关系表方式对消息发送者进行统一管理,不仅能够快速查找所有关联的消息发送者,而且有利于监控者对拥塞消息类型的管理,实现更好的拥塞控制。
可选地,基于消息队列的拥塞程度信息和至少一个消息发送者的数量计算令牌数量,包括:将消息队列的拥塞程度信息和至少一个消息发送者的数量发送给第三方的令牌计算服务,以供第三方的令牌计算服务计算令牌数量;接收第三方的令牌计算服务基于消息队列的拥塞程度信息和至少一个消息发送者的数量计算并返回的令牌数量。
可选地,第三方的令牌计算服务可以是另一个物理实体设备,如令牌计算服务器,令牌计算服务器接收到消息服务器发送的数据后,根据上述计算方式计算出令牌数量并将令牌数量返回至消息服务器。
需要说明的是,当每个消息队列在发生拥塞时,计算出的令牌数量可以完全不同,也可以相同。而当一个消息队列发生拥塞时,消息服务器在得到令牌数量后,会将相同数量的令牌发送至对应的至少一个消息发送者中,即每个消息发送者得到的令牌数量相同。
为了保证消息服务器的性能,令牌数量的计算由第三方的令牌计算服务来实现。
在多个消息服务器的应用场景中,都会有多个消息发送者发布同一个消息类型的消息的情况,那么如果这个消息类型的消息造成了拥塞,通常只是这些消息发送者中的一个造成的,如果对所有发布该topic的生产者都进行抑制处理显然是不合理的。而采用令牌算法可以解决这个问题,只在发生拥塞后根据令牌数量进行流量控制,同时在非拥塞情况下消息发送者发布消息不会用到令牌,避免造成不必要的资源浪费在本实施例可以实现。
有时可能导致消息发送者被多度抑制。比如,实际上是topic A消息类型的消息导致多个消息队列中的B消息队列的拥塞,而topic B消息类型的消息却恰好被确定为是引起拥塞的消息源,从而对topic B消息类型的消息的消息发送者进行抑制,而此时topic A消息类型的消息仍然在发布,这样就导致实际造成拥塞的消息发送者可能不会在第一时间被解决,那么,该B消息队列后续还会因为topicA消息类型发生拥塞,但同样基于碰撞理论,造成拥塞的消息发送者会在下一轮的B消息队列发生拥塞判断时被检测到并对其进行拥塞控制。
图3为本申请另一示例性实施例的消息拥塞控制方法的流程示意图。本申请实施例提供的该方法300由消息发送者执行,该方法300包括以下步骤:
301:接收消息服务器在确定消息接收者的消息队列发生拥塞时所发送的 N个令牌,N是正整数。
302:在规定时间内,基于N个令牌向所述消息服务器发送消息并记录所消耗的令牌数量。
303:若在规定时间内N个令牌被消耗完,则进行拥塞抑制处理。
以下针对上述步骤进行详细说明:
301:接收消息服务器在确定消息接收者的消息队列发生拥塞时所发送的 N个令牌,N是正整数。
例如,根据前文所述,消息接收者接收到消息服务器发送的8个令牌,该8个令牌可以是通过消息的形式发送的,该消息表示的是指示消息接收者根据令牌发送消息。
302:在规定时间内,基于N个令牌向所述消息服务器发送消息并记录所消耗的令牌数量。
可选地,消耗令牌的方式可以为:根据消息发送数量,直接在发放的令牌数量基础上减少相应数量。
可选地,消耗令牌的方式还可以为:消息在发送的同时携带一个令牌,消息服务器根据该令牌,才会将该消息存储至消息队列,否则不做处理。
例如,根据前文所述,在消息接收者接收到8个令牌后,在后续的规定时间3分钟内,向消息服务器发送一条消息就会消耗一个令牌,同时记录这 3分钟内消耗的令牌数量。
303:若在规定时间内N个令牌被消耗完,则进行拥塞抑制处理。
可选地,在进行拥塞抑制处理的时机可以为在规定时间到达时,立刻进行拥塞抑制处理。
可选地,在进行拥塞抑制处理的时机还可以为N个令牌被消耗完的时刻作为该时机,进行拥塞抑制处理。
可选地,拥塞抑制处理方式可以为:在预定时间内,消息接收者停止发送消息。
可选地,拥塞抑制处理方式可以为:在预定时间内,消息接收者降低发送消息的速度。
可选地,拥塞抑制处理方式可以为:消息接收者照常发送消息,消息服务器在预定时间内暂停对该消息接收者的消息转发服务。
当消息队列不再拥塞时,消息服务器发送取消拥塞抑制处理指示至消息接收者。
在一些实例中,所述方法300进一步包括:若在规定时间内N个令牌未被消耗完,则停止基于N个令牌根据向消息服务器发送的消息的操作,并等待再次接收消息服务器在确定消息接收者的消息队列发生拥塞时所发送的N 个令牌。
例如,根据前文所述,当3分钟内,消息发送者为消耗完8个令牌,则不再根据令牌发送消息,即可以继续发送消息给消息服务器,直到再次接收到消息服务器发送的令牌。
需要说明的是,可以在消息接收者的实体形态设备中直接实现方法300,也可以为了便于开发,以插件的形式实现方法300,并将该插件安装在接在消息接收者的实体形态设备中。当以插件的形式实现方法300时,消息服务器在发放令牌时,可以直接发送至消息发送者,消息发送者在接收到该一定数量的令牌时,启动插件,并将一定数量的令牌发送至该插件,由该插件根据消息发送者向消息服务器发送的消息数量消耗令牌数量,插件可以对该消息发送者的消息发送端口进行监听,当监听到向消息服务器发送消息时,可以直接减少相应的令牌数量,当在规定时间内,消耗完所有令牌,则插件可以向消息接收者发送消息,该消息可以指示消息发送者停止发送消息或减小消息发送速度。若在规定时间内,未消耗完所有令牌,则插件关闭自身,结束流量监控。
需要说明的是,在本实施例中,消息发送者收到令牌后在规定时间内基于令牌进行流量监控,在这规定时间内,消息发送者会在发送消息时会消耗令牌,如果消息发送者消耗完所有令牌,消息发送者要进入流量管控状态,这种状态下会抑制消息的发布;在规定时间超时后,若令牌还有剩余,则不进入流量管控状态。这样一来,消息发布速度过快的消息发送者,会在流量限速期间耗光所有令牌,从而进入消息管控状态;而消息发布速度慢的消息发送者,在流量限速期间不会耗光所有令牌,也就不会进入消息管控状态,从而找到引起消息队列拥塞的消息发送者。
下面结合示例性应用场景对本申请技术方案进行详细说明:
场景1:在消息服务器提供令牌计算服务的应用场景中,多个消息发送者向消息服务器发送消息,消息服务器接收到消息后将消息缓存至对应的消息队列,当其中一个消息队列发生拥塞时,确定引起该消息队列拥塞的目标消息类型为topicX,并确定发生该topicX消息类型的消息发送者的数量为2 个,消息服务器获取该消息队列距离达到熔断点尚且剩余的队列空间40M和可持续时间0.8s,从而确定令牌数量为8个,并生成8个令牌,将8个令牌分别发送至topicX消息类型对应的每个消息发送者,并告知其规定时间3分钟,当消息发送者接收到该令牌和规定时间后,开始进行流量监控,当在3 分钟内,消息发送者消耗完所有令牌后,则停止发送消息至消息服务器,直到消息服务器发出恢复消息发送的指示。
场景2:在第三方的令牌计算服务器提供令牌计算服务的应用场景中,多个消息发送者向消息服务器发送消息,消息服务器接收到消息后将消息缓存至对应的消息队列,当其中一个消息队列发生拥塞时,确定引起该消息队列拥塞的目标消息类型为topicX,并确定发生该topicX消息类型的消息发送者的数量为2个,消息服务器获取该消息队列距离达到熔断点尚且剩余的队列空间40M和可持续时间0.8s,消息服务器将消息发送者的数量为2个,该消息队列距离达到熔断点尚且剩余的队列空间40M和可持续时间0.8s发送至第三方的令牌计算服务器,第三方的令牌计算服务器接收到该信息后,确定出令牌数量为8个,并将令牌数量:8个返回至消息服务器,消息服务器接收到令牌数量为8个的信息后,生成8个令牌,并将8个令牌分别发送至 topicX消息类型对应的每个消息发送者,并告知其规定时间3分钟,当消息发送者接收到该令牌和规定时间后,开始进行流量监控,当在3分钟内,消息发送者消耗完所有令牌后,则停止发送消息至消息服务器,直到消息服务器发出恢复消息发送的指示。
此外,消息服务器除了将消息发送者的数量为2个,该消息队列距离达到熔断点尚且剩余的队列空间40M和可持续时间0.8s发送至第三方的令牌计算服务器,还可以将消息发送者的对应IP地址发送至第三方的令牌计算服务器,第三方的令牌计算服务器接收到该信息后,确定出令牌数量为8个,并生成8个令牌后,可以由第三方的令牌计算服务器根据IP地址直接将8 个令牌分别发送至topicX消息类型对应的每个消息发送者,并告知其规定时间3分钟,当消息发送者接收到该令牌和规定时间后,开始进行流量监控,当在3分钟内,消息发送者消耗完所有令牌后,则停止发送消息至消息服务器,直到消息服务器发出恢复消息发送的指示。
图4为本申请又一示例性实施例提供的消息拥塞控制装置的结构框架示意图。该装置400可以应用于消息服务器中,该装置400包括识别模块401和发放模块402,以下针对各个模块的功能进行详细的阐述:
识别模块401,用于当消息接收者的消息队列发生拥塞时,从预定时间内出现在消息队列的消息类型中识别出引起消息队列发生拥塞的目标消息类型。
发放模块402,用于向目标消息类型对应的至少一个消息发送者发放相同数量的令牌,以供至少一个消息发送者在规定时间内基于令牌发送消息并在规定时间内将令牌消耗完的情况下进行拥塞抑制处理。
在一些实例中,识别模块401,具体用于:当消息接收者的消息队列发生拥塞时,将确定发生拥塞时出现在消息队列的消息类型,作为引起消息队列发生拥塞的目标消息类型;或者,当消息接收者的消息队列发生拥塞时,将确定发生拥塞之后第一个出现在消息队列的消息类型,作为引起消息队列发生拥塞的目标消息类型;或者,当消息接收者的消息队列发生拥塞时,将确定发生拥塞之前最后一个出现在消息队列的消息类型,作为引起消息队列发生拥塞的目标消息类型;或者当消息接收者的消息队列发生拥塞时,从发生拥塞之前指定时间段内出现在消息队列的消息类型中,获取出现频率最高的消息类型,作为引起消息队列发生拥塞的目标消息类型。
在一些实例中,该装置400还包括:计算模块,用于基于消息队列的拥塞程度信息和至少一个消息发送者的数量计算令牌数量。
在一些实例中,计算模块,包括:获取单元,用于获取消息队列距离达到熔断点尚且剩余的队列空间和可持续时间,作为消息队列的拥塞程度信息;计算单元,用于根据消息队列距离达到熔断点尚且剩余的队列空间、可持续时间以及至少一个消息发送者的数量计算令牌数量。
在一些实例中,计算单元,根据下式1)确定所述令牌数量:
其中,N为令牌数量,B为消息队列距离达到熔断点尚且剩余的队列空间,T为消息队列距离达到熔断点尚且剩余的可持续时间,C为至少一个消息发送者的数量,λ为调整因子。
在一些实例中,计算模块,包括:发送单元,用于将所述消息队列的拥塞程度信息和所述至少一个消息发送者的数量发送给第三方的令牌计算服务,以供所述第三方的令牌计算服务计算令牌数量;接收单元,用于接收所述第三方的令牌计算服务基于所述消息队列的拥塞程度信息和所述至少一个消息发送者的数量计算并返回的所述令牌数量。
以上描述了图4所示的控制装置400的内部功能和结构,在一个可能的设计中,图4所示的控制装置400的结构可实现为消息服务器600,如图6 所示,该消息服务器600可以包括:存储器601、处理器602以及通信组件 603;
存储器601,用于存储计算机程序;
处理器602,用于执行计算机程序,以用于:当消息接收者的消息队列发生拥塞时,从预定时间内出现在消息队列的消息类型中识别出引起消息队列发生拥塞的目标消息类型;通过通信组件向目标消息类型对应的至少一个消息发送者发放相同数量的令牌,以供至少一个消息发送者在规定时间内基于令牌发送消息并在规定时间内将令牌消耗完的情况下进行拥塞抑制处理。
在一些实例中,处理器602,具体用于:当消息接收者的消息队列发生拥塞时,将确定发生拥塞时出现在消息队列的消息类型,作为引起消息队列发生拥塞的目标消息类型;或者,当消息接收者的消息队列发生拥塞时,将确定发生拥塞之后第一个出现在消息队列的消息类型,作为引起消息队列发生拥塞的目标消息类型;或者,当消息接收者的消息队列发生拥塞时,将确定发生拥塞之前最后一个出现在消息队列的消息类型,作为引起消息队列发生拥塞的目标消息类型;或者当消息接收者的消息队列发生拥塞时,从发生拥塞之前指定时间段内出现在消息队列的消息类型中,获取出现频率最高的消息类型,作为引起消息队列发生拥塞的目标消息类型。
在一些实例中,处理器602,还用于:基于消息队列的拥塞程度信息和至少一个消息发送者的数量计算令牌数量。
在一些实例中,处理器602,具体用于:获取消息队列距离达到熔断点尚且剩余的队列空间和可持续时间,作为消息队列的拥塞程度信息;根据消息队列距离达到熔断点尚且剩余的队列空间、可持续时间以及至少一个消息发送者的数量计算令牌数量。
在一些实例中,处理器602,具体用于:根据下式1)确定所述令牌数量:
其中,N为令牌数量,B为消息队列距离达到熔断点尚且剩余的队列空间,T为消息队列距离达到熔断点尚且剩余的可持续时间,C为至少一个消息发送者的数量,λ为调整因子。
在一些实例中,处理器602,具体用于:将所述消息队列的拥塞程度信息和所述至少一个消息发送者的数量发送给第三方的令牌计算服务,以供所述第三方的令牌计算服务计算令牌数量;接收单元,收所述第三方的令牌计算服务基于所述消息队列的拥塞程度信息和所述至少一个消息发送者的数量计算并返回的所述令牌数量。
在本申请实施例中,当消息接收者的消息队列(或消息缓存)发生拥塞时,向引起消息队列发生拥塞的消息类型对应的至少一个消息发送者发放令牌,使得消息发送者确定自身是否为引起消息队列发生拥塞的消息发送者并对该消息发送者进行拥塞抑制处理,使得在消息队列发生拥塞的情况下,保证消息服务器的性能,避免熔断对消息服务器造成的不良影响,提高消息服务器资源利用率及工作效率,同时保证消息服务器的稳定性,在消息拥塞的情况下能够正常运行。
另外,本发明实施例提供了一种计算机存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现图2方法实施例中消息拥塞控制方法的步骤。
图5为本申请又一示例性实施例提供的消息拥塞控制装置的结构框架示意图。该装置500可以应用于消息发送者中,该装置500包括接收模块501、发送模块502和处理模块503,以下针对各个模块的功能进行详细的阐述:
接收模块501,用于接收消息服务器在确定消息接收者的消息队列发生拥塞时所发送的N个令牌,N是正整数。
发送模块502,用于在规定时间内,基于N个令牌向所述消息服务器发送消息并记录所消耗的令牌数量。
处理模块503,用于若在规定时间内N个令牌被消耗完,则进行拥塞抑制处理。
在一些实例中,该装置500进一步包括:停止模块,用于若在规定时间内N个令牌未被消耗完,则停止基于N个令牌根据向所述消息服务器发送的消息的操作,并等待再次接收消息服务器在确定消息接收者的消息队列发生拥塞时所发送的N个令牌。
以上描述了图5所示的控制装置500的内部功能和结构,在一个可能的设计中,图5所示的控制装置500的结构可实现为消息发送设备700,如图7 所示,该消息发送设备700可以包括:存储器701、处理器702以及通信组件703;
存储器701,用于存储计算机程序;
处理器702,用于执行计算机程序,以用于通过通信组件703接收消息服务器在确定消息接收者的消息队列发生拥塞时所发送的N个令牌,N是正整数;在规定时间内,基于N个令牌向所述消息服务器发送消息并记录所消耗的令牌数量;若在规定时间内N个令牌被消耗完,则进行拥塞抑制处理。
在一些实例中,处理器702,还用于:若在规定时间内N个令牌未被消耗完,则停止基于N个令牌根据向所述消息服务器发送的消息的操作,并等待再次接收消息服务器在确定消息接收者的消息队列发生拥塞时所发送的N 个令牌。
在本申请实施例中,接收消息服务器发放的令牌,基于令牌确定引起消息队列发生拥塞的消息发送者并对该消息发送者进行拥塞抑制处理,从而准确地查找出引起消息队列拥塞的消息发送者,进而对消息发送者进行拥塞抑制处理,使得在消息队列发生拥塞的情况下,保证消息服务器的性能,避免熔断对消息服务器造成的不良影响,提高消息服务器资源利用率及工作效率,同时保证消息服务器的稳定性,在消息拥塞的情况下能够正常运行。
另外,本发明实施例提供了一种计算机存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现图3方法实施例中消息拥塞控制方法的步骤。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如201、202等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和 /或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程多媒体数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程多媒体数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程多媒体数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程多媒体数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.一种消息拥塞控制方法,其特征在于,适用于消息服务器,所述方法包括:
当消息接收者的消息队列发生拥塞时,从预定时间内出现在所述消息队列的消息类型中识别出引起所述消息队列发生拥塞的目标消息类型;
向所述目标消息类型对应的至少一个消息发送者发放相同数量的令牌,以供所述至少一个消息发送者在规定时间内基于令牌发送消息并在规定时间内将令牌消耗完的情况下进行拥塞抑制处理;
所述在向所述目标消息类型对应的至少一个消息发送者发放相同数量的令牌之前,还包括:
基于所述消息队列的拥塞程度信息和所述至少一个消息发送者的数量计算令牌数量;
所述基于所述消息队列的拥塞程度信息和所述至少一个消息发送者的数量计算令牌数量,包括:
获取所述消息队列距离达到熔断点尚且剩余的队列空间和可持续时间,作为所述消息队列的拥塞程度信息;
根据所述消息队列距离达到熔断点尚且剩余的队列空间、可持续时间以及所述至少一个消息发送者的数量计算令牌数量。
2.根据权利要求1所述的方法,其特征在于,从预定时间内出现在所述消息队列的消息类型中识别出引起所述消息队列发生拥塞的目标消息类型,包括:
当消息接收者的消息队列发生拥塞时,将确定发生拥塞时出现在所述消息队列的消息类型,作为引起所述消息队列发生拥塞的目标消息类型;或者
当消息接收者的消息队列发生拥塞时,将确定发生拥塞之后第一个出现在所述消息队列的消息类型,作为引起所述消息队列发生拥塞的目标消息类型;或者
当消息接收者的消息队列发生拥塞时,将确定发生拥塞之前最后一个出现在所述消息队列的消息类型,作为引起所述消息队列发生拥塞的目标消息类型;或者
当消息接收者的消息队列发生拥塞时,从发生拥塞之前指定时间段内出现在所述消息队列的消息类型中,获取出现频率最高的消息类型,作为引起所述消息队列发生拥塞的目标消息类型。
4.根据权利要求3所述的方法,其特征在于,基于所述消息队列的拥塞程度信息和所述至少一个消息发送者的数量计算令牌数量,包括:
将所述消息队列的拥塞程度信息和所述至少一个消息发送者的数量发送给第三方的令牌计算服务,以供所述第三方的令牌计算服务计算令牌数量;
接收所述第三方的令牌计算服务基于所述消息队列的拥塞程度信息和所述至少一个消息发送者的数量计算并返回的所述令牌数量。
5.一种消息拥塞控制系统,其特征在于,包括:消息服务器、多个消息接收者以及多个消息发送者;
所述消息服务器,用于当任一消息接收者的消息队列发生拥塞时,从预定时间内出现在所述消息队列的消息类型中识别出引起所述消息队列发生拥塞的目标消息类型;向所述目标消息类型对应的至少一个消息发送者发放相同数量的令牌;令牌的数量为N,N是正整数;所述至少一个消息发送者属于多个消息客户端发送者,其中,所述在向所述目标消息类型对应的至少一个消息发送者发放相同数量的令牌之前,还包括:基于所述消息队列的拥塞程度信息和所述至少一个消息发送者的数量计算令牌数量;所述基于所述消息队列的拥塞程度信息和所述至少一个消息发送者的数量计算令牌数量,包括:获取所述消息队列距离达到熔断点尚且剩余的队列空间和可持续时间,作为所述消息队列的拥塞程度信息;根据所述消息队列距离达到熔断点尚且剩余的队列空间、可持续时间以及所述至少一个消息发送者的数量计算令牌数量;
所述至少一个消息发送者,分别用于接收所述消息服务器在确定消息接收者的消息队列发生拥塞时所发送的N个令牌;在规定时间内,基于N个令牌向所述消息服务器发送消息并记录所消耗的令牌数量;若在规定时间内N个令牌被消耗完,则进行拥塞抑制处理。
6.一种消息服务器,其特征在于,包括存储器、处理器以及通信组件;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序,以用于:
当消息接收者的消息队列发生拥塞时,从预定时间内出现在所述消息队列的消息类型中识别出引起所述消息队列发生拥塞的目标消息类型;
通过所述通信组件向所述目标消息类型对应的至少一个消息发送者发放相同数量的令牌,以供所述至少一个消息发送者在规定时间内基于令牌发送消息并在规定时间内将令牌消耗完的情况下进行拥塞抑制处理;
其中,所述在向所述目标消息类型对应的至少一个消息发送者发放相同数量的令牌之前,还包括:基于所述消息队列的拥塞程度信息和所述至少一个消息发送者的数量计算令牌数量;所述基于所述消息队列的拥塞程度信息和所述至少一个消息发送者的数量计算令牌数量,包括:获取所述消息队列距离达到熔断点尚且剩余的队列空间和可持续时间,作为所述消息队列的拥塞程度信息;根据所述消息队列距离达到熔断点尚且剩余的队列空间、可持续时间以及所述至少一个消息发送者的数量计算令牌数量。
7.一种存储有计算机程序的计算机可读存储介质,其特征在于,计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器实现权利要求1-4任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811334185.4A CN109347757B (zh) | 2018-11-09 | 2018-11-09 | 消息拥塞控制方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811334185.4A CN109347757B (zh) | 2018-11-09 | 2018-11-09 | 消息拥塞控制方法、系统、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109347757A CN109347757A (zh) | 2019-02-15 |
CN109347757B true CN109347757B (zh) | 2022-12-09 |
Family
ID=65314402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811334185.4A Active CN109347757B (zh) | 2018-11-09 | 2018-11-09 | 消息拥塞控制方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109347757B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111953506B (zh) * | 2019-05-15 | 2024-07-19 | 北京沃东天骏信息技术有限公司 | 消息处理方法和处理系统 |
CN110275780B (zh) * | 2019-06-26 | 2022-08-02 | 北京百度网讯科技有限公司 | 用于限制流量的方法和装置 |
CN110377434A (zh) * | 2019-07-04 | 2019-10-25 | 深圳前海微众银行股份有限公司 | 一种服务熔断方法、装置及消息中间件 |
CN112751778A (zh) * | 2019-10-30 | 2021-05-04 | 阿里巴巴集团控股有限公司 | 数据传输控制方法及装置,拥塞检测及装置,服务器系统 |
CN114553777B (zh) * | 2020-11-10 | 2024-03-12 | 浙江宇视科技有限公司 | 一种系统内的消息处理方法、装置、介质及电子设备 |
CN114501351B (zh) * | 2022-01-28 | 2024-04-26 | 阿里巴巴(中国)有限公司 | 流量控制方法、设备及存储介质 |
CN114638689A (zh) * | 2022-03-21 | 2022-06-17 | 北京自如信息科技有限公司 | 一种信用信息生成方法、装置、系统和电子设备 |
CN115118671B (zh) * | 2022-05-30 | 2024-01-26 | 中国信息通信研究院 | 用于令牌环调度的方法及装置、电子设备、存储介质 |
CN115426209B (zh) * | 2022-11-07 | 2023-02-10 | 湖南三湘银行股份有限公司 | 基于消息处理的高可靠消息队列广播控制方法 |
CN116614445B (zh) * | 2023-07-20 | 2023-10-20 | 苏州仰思坪半导体有限公司 | 一种数据传输方法及其相关装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016162208A1 (en) * | 2015-04-08 | 2016-10-13 | Alcatel Lucent | Method to manage resources, system and computer-readable medium |
CN106708607A (zh) * | 2015-11-12 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 消息队列的拥塞控制方法和装置 |
CN107025142A (zh) * | 2016-01-29 | 2017-08-08 | 华为技术有限公司 | 一种线程间消息传递方法、装置及电子设备 |
CN107733778A (zh) * | 2017-08-18 | 2018-02-23 | 深圳市艾特智能科技有限公司 | 消息处理方法、系统、存储介质及计算机设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105187321A (zh) * | 2015-06-08 | 2015-12-23 | 中国联合网络通信集团有限公司 | 控制流量的方法及装置 |
US9998418B2 (en) * | 2015-11-11 | 2018-06-12 | International Business Machines Corporation | Intelligent message queue management |
-
2018
- 2018-11-09 CN CN201811334185.4A patent/CN109347757B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016162208A1 (en) * | 2015-04-08 | 2016-10-13 | Alcatel Lucent | Method to manage resources, system and computer-readable medium |
CN106708607A (zh) * | 2015-11-12 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 消息队列的拥塞控制方法和装置 |
CN107025142A (zh) * | 2016-01-29 | 2017-08-08 | 华为技术有限公司 | 一种线程间消息传递方法、装置及电子设备 |
CN107733778A (zh) * | 2017-08-18 | 2018-02-23 | 深圳市艾特智能科技有限公司 | 消息处理方法、系统、存储介质及计算机设备 |
Non-Patent Citations (1)
Title |
---|
基于混合式P2P模型的消息中间件的设计与实现;蒋祥军;《CNKI优秀硕士学位论文全文库》;20120315;第48页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109347757A (zh) | 2019-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109347757B (zh) | 消息拥塞控制方法、系统、设备及存储介质 | |
US20220236978A1 (en) | Micro-service management system and deployment method, and related device | |
CN108449410B (zh) | 一种云平台中消息管理方法、系统及相关装置 | |
CN110858843B (zh) | 业务请求处理方法、装置及计算机可读存储介质 | |
CN110661849A (zh) | 一种请求处理方法、装置、电子设备及存储介质 | |
JP5908915B2 (ja) | 伝送制御プロトコルの通信方法およびサーバ | |
EP2838243B1 (en) | Capability aggregation and exposure method and system | |
CN112910802B (zh) | 一种报文处理方法及装置 | |
CN113467969B (zh) | 一种处理消息堆积的方法 | |
CN113300975A (zh) | 网络设备的控制方法、网络传输的方法、装置及设备 | |
WO2012164386A2 (en) | Traffic control method and traffic control apparatus | |
CN114500546B (zh) | 基于负载均衡集群的通信消息发送方法、装置及设备 | |
CN113468025A (zh) | 一种数据告警方法、系统、装置及存储介质 | |
CN114296891A (zh) | 任务的调度方法、系统、计算设备、存储介质及程序产品 | |
US9893972B1 (en) | Managing I/O requests | |
CN116055401A (zh) | 一种消息处理方法、装置、设备及存储介质 | |
CN110347518B (zh) | 消息处理方法及装置 | |
CN111865716A (zh) | 一种端口拥塞检测方法、装置、设备及机器可读存储介质 | |
CN111488373A (zh) | 用于处理请求的方法和系统 | |
CN115914119A (zh) | 一种文件下载限流方法及装置 | |
EP3396553B1 (en) | Method and device for processing data after restart of node | |
CN111090818A (zh) | 资源管理方法、资源管理系统、服务器及计算机存储介质 | |
CN115002033A (zh) | 一种流量控制方法、装置、设备、存储介质及计算机产品 | |
CN107040388B (zh) | 计费系统及方法 | |
CN114237906A (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 |