CN111385218B - 消息队列过载的丢包、流量控制方法、存储介质及设备 - Google Patents
消息队列过载的丢包、流量控制方法、存储介质及设备 Download PDFInfo
- Publication number
- CN111385218B CN111385218B CN201811625671.1A CN201811625671A CN111385218B CN 111385218 B CN111385218 B CN 111385218B CN 201811625671 A CN201811625671 A CN 201811625671A CN 111385218 B CN111385218 B CN 111385218B
- Authority
- CN
- China
- Prior art keywords
- message
- message queue
- packet
- time
- overload
- 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
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/23—Bit dropping
-
- 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
-
- 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/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- 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/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
- H04L47/323—Discarding or blocking control packets, e.g. ACK packets
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及计算机消息处理技术领域,尤其涉及一种消息队列过载的丢包方法、消息队列的流量控制方法、计算机可读存储介质及计算机设备。其中,所述消息队列过载的丢包方法,包括:当消息队列处于过载状态时,对所述消息队列中的消息包进行延时处理;对所述消息包进入消息队列及离开消息队列的时间进行计时,根据消息包的入队时间及出队时间判断消息队列是否处于过载状态,并判断所述计时时间是否超过缓冲期;当超过缓冲期且消息队列处于过载状态时,根据丢包策略对所述消息包进行选择性丢包。本申请提供的消息队列过载的丢包方法,在缓冲期内并不立即执行丢包操作,以减少丢包数量,减少客户端请求重传次数,提高***的可用性。
Description
技术领域
本发明涉及计算机消息处理技术领域,具体而言,本发明涉及一种消息队列过载的丢包方法、消息队列的流量控制方法、计算机可读存储介质及计算机设备。
背景技术
目前,电子设备后台进程很多是通过多线程处理队列中的消息,若某个时段消息量突然增大,超过了进程的处理能力,或者某些消息触发了慢查询等操作,那么队列的消息延迟就会增加,而消息延迟过长会触发客户端的超时重发,与此同时,进程将经过长时间的处理结果或查询结果返回给客户端时,该结果会被认为是过期的无效数据,客户端会重新发送查询或处理操作,使得整个服务进程一直在处理队列里过去的消息,造成消息队列拥堵,甚至***崩溃。
现有技术中,引入延迟控制(Controlled Delay,简称Codel)算法,采用丢包的方式解决队列拥堵,Codel算法会根据不同情况,在不同的状态之间迁移,如果前一个正常周期内有超时包,下个周期便进入观察周期,如果观察周期内的消息全部超时,则队列进入过载状态,若一个消息的超时高于预设阈值,则丢弃该消息,但由于Codel每个观察周期较短,对消息丢包非常敏感,所以***即便有能力把积压在队列中的消息处理完毕,但因为丢包条件的敏感性,也会将其丢弃,导致大量的丢包现象,降低了***可用性。
发明内容
本发明提供了一种消息队列过载的丢包方法、消息队列的流量控制方法、计算机可读存储介质及计算机设备,以减少丢包数量,减少客户端请求重传次数,提高***的可用性。
本申请实施例首先提供了一种消息队列过载的丢包方法,包括:
当消息队列处于过载状态时,对所述消息队列中的消息包进行延时处理;
对所述消息包进入消息队列及离开消息队列的时间进行计时,根据消息包的入队时间及出队时间判断消息队列是否处于过载状态,并判断所述计时时间是否超过缓冲期;
当超过缓冲期且消息队列处于过载状态时,根据丢包策略对所述消息包进行选择性丢包。
优选地,所述丢包方法,还包括:
当超过缓冲期且消息队列未处于过载状态时,在过载恢复监测期内对消息队列中的消息包进行状态监测。
优选地,根据丢包策略对所述消息包进行选择性丢包的步骤之后,还包括:
若消息队列内有未超时的消息包,进入过载恢复监测期,对所述消息队列进行状态监测;
在过载恢复监测期内,当所述消息队列内有处于超时状态的消息包时,执行根据丢包策略对所述消息包进行选择性丢包的步骤。
优选地,判断所述计时时间是否超过缓冲期的步骤之前,还包括:
根据消息包的入队时间和出队时间确定其延迟时间;
根据同属同一进程的各消息包的延迟时间建立各进程延迟时间的分布模型;
基于延迟时间的分布模型确定缓冲期时长。
优选地,基于延迟时间的分布模型确定缓冲期时长的步骤,包括:
若各进程的分布模型一致,根据进程分布模型的方差确定缓冲期时长;
若各进程的分布模型不一致,对进程中各消息包的延迟时间进行数据拟合获得分布曲线,根据分布曲线的斜率确定缓冲期时长。
优选地,所述根据分布曲线的斜率确定缓冲期时长的步骤,包括:
获得当前时刻对应的分布曲线的斜率;
当所述分布曲线的斜率为正时,根据进程分布模型的方差计算缓冲期时长;
当所述分布曲线的斜率为负时,根据当前时刻对应的分布曲线的斜率计算延迟时间下降至预设延迟时间所需的第二时长时间,根据所述第二时长确定缓冲期时长。
优选地,所述根据消息包的入队时间及出队时间判断消息队列是否处于过载状态的步骤,包括:
获得消息包进入消息队列的入队时间和离开消息队列的出队时间,根据消息包的入队时间与出队时间之间的时间差确定消息包的延迟时间;
对比所述延迟时间与预设延迟时间的阈值范围,根据对比结果确定消息包是否处于超时状态;
若在缓冲期内所有消息包均处于超时状态,则消息队列处于过载状态。
进一步地,本申请实施例还提供了一种消息队列的流量控制方法,包括:
根据消息包的入队时间及出队时间判断消息队列中各消息包的超时状态;
若消息队列中存在信息包超时,启动对过载缓冲期的计时操作,若在过载缓冲期内检测到所有消息包均超时,消息队列进入过载状态;
按照上述任一项所述的丢包方法进行丢包操作。
优选地,所述消息队列的流量控制,还包括:
若在所述过载缓冲期内并未检测到超时消息包,消息队列处于正常状态。
优选地,所述进行丢包操作的步骤之后,还包括:
若在所述过载恢复缓冲期内并未检测到丢包操作,则消息队列恢复到正常状态。
更进一步地,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机执行上述任一项技术方案所述的丢包方法或上述任意一项技术方案所述的消息队列的流量控制方法。
更进一步地,本申请实施例还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述任意一技术方案所述的丢包方法或消息队列的流量控制方法的步骤。
与现有技术相比,本申请提供的方案至少具备如下优点:
本申请实施例提供的消息队列过载的丢包方法,通过在消息队列处于过载状态时引入缓冲期,在缓冲期内并不进行丢包操作,即利用缓冲期作为丢包的缓冲时间,减少丢包数量,进而减少客户端请求重新上传请求的次数,提高***的可用性和可靠性。
本申请实施例提供的消息队列过载的丢包方法,根据消息队列中消息延迟时间的分布实时计算可变缓冲期的时长,与固定缓冲期相比,设置可变缓冲期能够动态决定最佳丢包时刻,减少无谓的丢包。
本申请实施例提供的消息队列的流量控制方法,通过消息包的超时状态判断消息队列是否进入过载状态,若过载,则根据上述丢包方案进行丢包以控制队列流量,由于上述丢包方案引入了缓冲期机制,能够控制消息队列的丢包数量及丢包时间,实现对消息队列流量的准确控制。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明一个实施例提供的消息队列过载的丢包方法的流程示意图;
图2为本发明一个实施例提供的根据消息包的入队时间及出队时间判断消息队列是否处于过载状态的步骤的流程示意图;
图3为本发明一个实施例提供的确定缓冲期时长的流程示意图;
图4为本发明另一个实施例提供的根据分布曲线的斜率确定缓冲期时长的步骤的流程示意图;
图5为本发明一种实施例提供的根据各消息包的延迟时间拟合成的分布曲线的示意图;
图6为本发明一种实施例提供的消息队列过载的丢包方法的实施过程示意图;
图7为本发明一种实施例提供的消息队列的流量控制方法的流程示意图;
图8为本发明一种实施例提供的消息队列的流量控制方法的实施过程示意图;
图9为本发明一种实施例提供的计算机设备的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本发明的范围的情况下,可以将第一直播视频图像称为第二直播视频图像,且类似地,可将第二直播视频图像称为第一直播视频图像。第一直播视频图像和第二直播视频图像两者都是直播视频图像,但其不是同一个直播视频图像。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的执行服务器既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(Personal Communications Service,个人通信***),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global Positioning System,全球定位***)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的客户端可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。
本申请实施例中使用到的部分名词释义如下:
丢包,本申请实施例中是指通信数据包丢失即消息包丢失。消息队列,是指计算机***中用于保存从外部接收的消息并等待内部消息处理单元处理的临时缓冲区。延迟时间,是指消息包进入消息队列的入队时间和离开队列的出队时间之间的时间差。
本发明首先提供了一种消息队列过载的丢包方法,其流程示意图如图1所示,包括如下步骤:
S110,当消息队列处于过载状态,对所述消息队列中的消息包进行延时处理;
S120,对所述消息包到达消息队列及离开消息队列的时间进行计时,根据消息包的入队时间及出队时间判断消息队列是否处于过载状态,并判断所述计时时间是否超过缓冲期;
S130,当超过缓冲期且消息队列处于过载状态时,根据丢包策略对所述消息包进行选择性丢包。
本申请在消息队列处于过载状态时,为消息队列的处理设立缓冲期,超过缓冲期且队列还处于过载状态时,根据丢包策略进行丢包操作,降低丢包操作对时间的敏感性,即在消息队列处于过载状态时并不立即进行丢包操作,而是经过缓冲期的缓冲之后再次检测到消息队列仍处于过载状态,才会引发丢包操作,有利于减少整个处理过程中丢弃的消息包数量,进而减少了用户进行重发的操作。
一般情况下,***包括多个进程,每个进程包括若干个消息包,消息包从消息队列的一端进入队列,从另一端离开消息队列,每个消息包上均附带有入队及出队的时间信息,通过入队及出队的时间信息之差获得信息包在消息队列中的延迟时间,消息队列的另一端与多个处理线程连接,通过多线程并行处理队列中的进程,以加快进程处理效率。
一种实施例中,所述消息队列过载的丢包方法的执行过程如下:
S110,当消息队列处于过载状态时,对所述消息队列中的消息包进行延时处理。
获取消息包进入队列及离开队列的入队时间及出队时间,计算出队时间与入队时间的时间差,获得各消息包的延迟时间,若消息包的延迟时间超出延迟时间的预设时长,表明该消息包超时,预设时长视实际情况设置,如设定预设时长为5ms、10ms等数值。
一种实施例中,所述消息队列处于过载状态的步骤之前,还包括:检测到消息队列中存在超时的消息包,进入过载监测期,检测到在过载监测期内,消息队列中的所有消息包均超时,则消息队列处于过载状态;若过载监测期内没有检测到超时的消息包,则消息队列处于正常状态。
当消息队列处于过载状态时,消息队列中的所有消息包均处于超时状态,对消息队列中的消息包进行延时处理。
S120,对所述消息包进入消息队列及离开队列的时间进行计时,根据消息包的入队时间及出队时间判断消息队列是否处于过载状态,并判断所述计时时间是否超过缓冲期。
当消息队列处于过载状态,***进入缓冲期,启动对缓冲期的计时操作,在缓冲期内监测消息队列中各消息包的入队时间及出队时间。一种实施例中,根据消息包的入队时间及出队时间判断消息队列是否处于过载状态的步骤,包括如下子步骤,其流程示意图如图2所示:
S210,获得消息包进入消息队列的入队时间和离开消息队列的出队时间,根据消息包的入队时间与出队时间之间的时间差确定消息包的延迟时间;
S220,对比所述延迟时间与预设延迟时间的阈值范围,根据对比结果确定消息包是否处于超时状态;
S230,若在缓冲期内所有消息包均处于超时状态,则消息队列处于过载状态。
具体地,***进入缓冲期,启动对缓冲期的计时,获得各消息包进入消息队列及离开消息队列的时间信息,获得缓冲期内各消息包的出队时间及消息包上表征消息包入队时间的时间戳,计算出队时间与入队时间的时间差,该时间差为该消息包在消息队列中的延迟时间,若该延迟时间超过预设时长,则表明该消息包超时。按照上述方式检测缓冲期内各消息包的超时状态,若缓冲期内各消息包均处于超时状态,则进入步骤S130,若缓冲期内检测到未超时的消息包,则进入步骤S140。
本申请实施例通过消息包的入队时间和出队时间的时间差与预设延迟时间进行对比,根据缓冲期内所有从消息队列中出队的消息包的对比结果判断当前消息队列是否过载,方式简单且结果准确,基于该判断结果能够确定后续是否进行丢包操作。
一种实施例中,判断所述计时时间是否超过缓冲期的步骤之前,还包括确定缓冲期时长,其流程示意图如图3所示,包括如下子步骤:
S310,根据消息包的入队时间和出队时间确定其延迟时间;
S320,根据同属同一进程的各消息包的延迟时间建立各进程延迟时间的分布模型。
统计同一进程中每个消息包的延迟时间获得各进程关于延迟时间的分布模型,所述分布模型可以是该延迟时间的分布函数或分布曲线,若进程中各消息包的延迟时间分布呈正态分布,根据各消息包的延迟时间进行数据拟合,获得各进程的分布函数,获得分布函数的数学期望值、最大值及该分布函数的方差。
S330,基于延迟时间的分布模型确定缓冲期时长。
一种实施例中,基于延迟时间的分布模型确定缓冲期时长的步骤,包括:若各进程的分布模型一致,根据进程分布模型的方差确定缓冲期时长;若各进程的分布模型不一致,对进程中各消息包的延迟时间进行数据拟合获得分布曲线,根据分布曲线的斜率确定缓冲期时长。
根据各进程的分布模型是否具备一致性确定缓冲期的类型,多个进程的分布模型具备一致性是指:表征分布模型的分布函数的类型一致,分布函数的最大值之差处于预设阈值范围内,如两个进程的分布函数均是正态分布,且分布函数的最大值相同,则称该两个进程的分布模型是一致的,为包括该两个进程的***设定固定缓冲期,所述固定缓冲期的时长根据分布函数的方差设定。
方差是每个样本值与全体样本值的平均数之差的平方值的平均数,表示跟中心偏离的程度,用来衡量数据的波动,即当前数据偏离平均数的大小,样本容量相同的情况下,方差越大,说明数据波动越大,越不稳定。
多个进程的分布模型之间不具备一致性是指:分布函数类型不同,或各进程分布函数的最大值相差较大,若各进程的分布模型不一致,则根据进程中各消息包的延迟时间分布确定缓冲期时长。
一种实施例中,根据分布曲线的斜率确定缓冲期时长的步骤,包括如下子步骤,其流程示意图如图4所示:
S410,获得当前时刻对应的分布曲线的斜率;
S420,当所述分布曲线的斜率为正时,根据进程分布模型的方差计算缓冲期时长;
S430,当所述分布曲线的斜率为负时,根据当前时刻对应的分布曲线的斜率计算延迟时间下降至预设延迟时间所需的第二时长时间,根据所述第二时长确定缓冲期时长。
具体地,获得进程中各消息包的延迟时间,对各延迟时间进行数据拟合获得延迟曲线,所述拟合算法包括线性拟合或非线性拟合,根据实际情况选定拟合算法进行拟合,获得当前时刻对应的延迟曲线的斜率,若当前时刻对应的延迟曲线的斜率为正值,则获得当前分布函数的最大值,根据当前分布函数的最大值确定缓冲期时长,若当前时刻对应的延迟曲线的斜率为负值,获得当前时刻对应的延迟时间,根据分布函数计算从当前时刻对应的延迟时间下降至预设延迟时间的第二时长,该第二时长为缓冲期时长。由于第二时长是根据当前时刻对应的延迟时间与预设延迟时间的差值确定的,因此不是固定时长,为可变时长。
一种实施例中,多个进程的分布模型之间不具备一致性时,根据进程中各消息包的延迟时间确定缓冲期时长的过程如下:根据各消息包的延迟时间拟合成的分布曲线如图5所示,假设每个缓冲期(图5中标号1至5为5个缓冲期)的周期是100ms,检测到一个周期内(图5中的1周期)队列中存在超时信息包,下一个周期(图5中标号为2的周期)为观察周期,检测到观察周期内出队的消息包全部超时,则表明消息队列进入过载状态,选取过去N个周期的消息延迟时间进行数据拟合,如选取图5中的第1、2、3周期的消息延迟时间信息进行数据拟合计算,获得延迟时间的分布曲线,若要获得当前某一时刻对应的缓冲期时长,确定该时刻对应的拟合曲线的斜率,若获得当前时刻对应的拟合曲线的斜率是正值,表明消息包的延迟时间存在恶化情况,下一时刻对应的分布曲线上的延迟时间持续增大,则根据当前分布函数的最大值或方差设定固定时长的缓冲期,该缓冲期为第一缓冲期,如可设定第一缓冲期的固定时长为1200ms。若当前时刻对应的拟合曲线的斜率是负值,表明消息包的延迟时间在下降,消息包的延迟情况有所好转,则计算沿着当前分布曲线从当前延迟时间下降至预设延迟时间所需的第二时长,该第二时长为第二缓冲期时长,预设延迟时间按照设备的实际情况设定,如可设定为5ms,即消息包的延迟时间在5ms之内属于可接受范围,处于正常处理状态。
进一步地,若当前拟合曲线的斜率是负值,为了避免上述第二时长过长,为第二缓冲期设定上限时长,本实施例优选将第二缓冲期的上限时长设定为上述固定时长的三倍,如:缓冲期的固定时长为1200ms,则第二缓冲期的时长不超过3600ms,该方式能够降低用户的等待时长,及时将请求结果反馈给用户。
S130,当超过缓冲期且消息队列处于过载状态,根据丢包策略对所述消息包进行选择性丢包。
当计时信息显示当前时间已超过缓冲期时长,且消息队列仍处于过载状态,则根据丢包策略对所述消息进行选择性丢包。
本申请实施例中的丢包策略,可以采用尾部丢弃的方式,同等地对待所有信息包,不区分信息包的等级,在过载时,将队列尾部的信息包丢弃,直至队列解除拥堵,或者也可以采用随机的方式丢弃消息包。
一种实施例中,消息队列过载的丢包方法的实施过程如图6所示,在步骤S110至S130之外,所述消息队列过载的丢包方法,还包括:S140,当超过缓冲期且消息队列未处于过载状态时,进入过载恢复监测期,在过载恢复监测期内对消息队列中的消息包进行状态监测。
所述超过缓冲期且消息队列未处于过载状态包括:缓冲期内检测到未超时的消息包。
一种实施例中,在根据丢包策略对所述消息包进行选择性丢包的步骤之后,还包括:S150,若消息队列中有未超时的消息包,进入过载恢复监测期,对所述消息队列进行状态检测;S160,在过载恢复监测期内,当所述消息队列内有处于超时状态的消息包时,执行根据丢包策略对所述消息包进行选择性丢包的步骤。
进一步地,本申请实施例还提供了一种消息队列的流量控制方法,其流程示意图如图7所示,包括:
S710,根据消息包的入队时间及出队时间判断消息队列中各消息包的超时状态;
S720,若消息队列中存在信息包超时,启动对过载缓冲期的计时操作,若在过载缓冲期内检测到所有消息包均超时,消息队列进入过载状态;
S730,按照上述任一技术方案所述的丢包方法进行丢包操作。
本实施例通过消息包的超时状态判断消息队列是否进入过载状态,若过载,则根据上述丢包方案进行丢包以控制队列流量,采用上述丢包方案由于引入了缓冲期机制,能够显著减少不必要的丢包数量,减少***中重传消息的数量,提高了***的可用性。
一种实施例中,消息队列的流量控制方法的实施过程如图8所示,除了步骤S710至S730,消息队列的流量控制,还包括S740,S740,若在所述过载缓冲期内并未检测到超时消息包,消息队列处于正常状态。
一种实施例中,如图8所示,所述进行丢包操作的步骤之后,还包括:
S750,若在所述过载恢复缓冲期内并未检测到丢包操作,则消息队列恢复到正常状态。
本申请实施例提供了两种方式判断消息队列是否处于正常状态,一种是在过载缓冲期内未检测到超时消息包,另一种是在过载恢复缓冲期内并未检测到丢包操作,均表明消息队列已解决拥堵问题,正在恢复正常,无需再进行丢包操作,与步骤S710至S730提供的方案形成完整闭环方案,实现消息队列的流量控制。
更进一步地,本申请实施例还提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述任意一项技术方案所述的丢包方法或上述任意一项技术方案所述的消息队列的流量控制方法的步骤。其中,所述存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random AcceSS Memory,随即存储器)、EPROM(EraSable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically EraSable ProgrammableRead-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,存储介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。可以是只读存储器,磁盘或光盘等。
更进一步地,本申请实施例还提供一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任意一项所述的消息队列的流量控制方法。
图9是根据一示例性实施例示出的一种用于计算机设备900的框图。例如,计算机设备900可以被提供为一服务器。参照图9,计算机设备900包括处理组件922,其进一步包括一个或多个处理器,以及由存储器932所代表的存储器资源,用于存储可由处理组件922的执行的指令,例如应用程序。存储器932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件922被配置为执行指令,以执行上述消息队列的流量控制方法的步骤。
计算机设备900还可以包括一个电源组件926被配置为执行计算机设备900的电源管理,一个有线或无线网络接口950被配置为将计算机设备900连接到网络,和一个输入输出(I/O)接口958。计算机设备900可以操作基于存储在存储器932的操作***,例如WindowsServerTM,Mac OSXTM,UnixTM,LinuxTM,FreeBSDTM或类似。应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解的是,在本发明各实施例中的各功能单元可集成在一个处理模块中,也可以各个单元单独物理存在,也可以两个或两个以上单元集成于一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种消息队列过载的丢包方法,其特征在于,包括:
当消息队列处于过载状态时,对所述消息队列中的消息包进行延时处理;
对所述消息包进入消息队列及离开消息队列的时间进行计时,根据消息包的入队时间及出队时间判断消息队列是否处于过载状态,根据消息包的入队时间和出队时间确定其延迟时间,根据同属同一进程的各消息包的延迟时间建立各进程延迟时间的分布模型,基于延迟时间的分布模型确定缓冲期时长,判断所述计时时间是否超过缓冲期;
所述基于延迟时间的分布模型确定缓冲期时长的步骤,包括:
若各进程的分布模型一致,根据进程分布模型的方差确定缓冲期时长;
若各进程的分布模型不一致,对进程中各消息包的延迟时间进行数据拟合获得分布曲线,获得当前时刻对应的分布曲线的斜率;
当所述分布曲线的斜率为正时,根据进程分布模型的方差计算缓冲期时长;
当所述分布曲线的斜率为负时,根据当前时刻对应的分布曲线的斜率计算延迟时间下降至预设延迟时间所需的第二时长时间,根据所述第二时长确定缓冲期时长;
当超过缓冲期且消息队列处于过载状态时,根据丢包策略对所述消息包进行选择性丢包。
2.根据权利要求1所述的丢包方法,其特征在于,还包括:
当超过缓冲期且消息队列未处于过载状态时,在过载恢复监测期内对消息队列中的消息包进行状态监测。
3.根据权利要求1所述的丢包方法,其特征在于,所述根据丢包策略对所述消息包进行选择性丢包的步骤之后,还包括:
若消息队列内有未超时的消息包,进入过载恢复监测期,对所述消息队列进行状态监测;
在过载恢复监测期内,当所述消息队列内有处于超时状态的消息包时,执行根据丢包策略对所述消息包进行选择性丢包的步骤。
4.根据权利要求1所述的丢包方法,其特征在于,所述根据消息包的入队时间及出队时间判断消息队列是否处于过载状态的步骤,包括:
获得消息包进入消息队列的入队时间和离开消息队列的出队时间,根据消息包的入队时间与出队时间之间的时间差确定消息包的延迟时间;
对比所述延迟时间与预设延迟时间的阈值范围,根据对比结果确定消息包是否处于超时状态;
若在缓冲期内所有消息包均处于超时状态,则消息队列处于过载状态。
5.一种消息队列的流量控制方法,其特征在于,包括:
根据消息包的入队时间及出队时间判断消息队列中各消息包的超时状态;
若消息队列中存在信息包超时,启动对过载缓冲期的计时操作,若在过载缓冲期内检测到所有消息包均超时,消息队列进入过载状态;
按照权利要求1至4中任一项所述的丢包方法进行丢包操作。
6.根据权利要求5所述的消息队列的流量控制方法,其特征在于,还包括:
若在所述过载缓冲期内并未检测到超时消息包,消息队列处于正常状态。
7.根据权利要求5所述的消息队列的流量控制方法,其特征在于,所述进行丢包操作的步骤之后,还包括:
若在所述过载缓冲期内并未检测到丢包操作,则消息队列恢复到正常状态。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机执行上述权利要求1至4中任一项所述的丢包方法或5至7中任意一项所述的消息队列的流量控制方法。
9.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至4中任意一项所述的丢包方法或权利要求5至7中任一项所述的消息队列的流量控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811625671.1A CN111385218B (zh) | 2018-12-28 | 2018-12-28 | 消息队列过载的丢包、流量控制方法、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811625671.1A CN111385218B (zh) | 2018-12-28 | 2018-12-28 | 消息队列过载的丢包、流量控制方法、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111385218A CN111385218A (zh) | 2020-07-07 |
CN111385218B true CN111385218B (zh) | 2023-08-15 |
Family
ID=71222854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811625671.1A Active CN111385218B (zh) | 2018-12-28 | 2018-12-28 | 消息队列过载的丢包、流量控制方法、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111385218B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114553777B (zh) * | 2020-11-10 | 2024-03-12 | 浙江宇视科技有限公司 | 一种***内的消息处理方法、装置、介质及电子设备 |
CN114866196B (zh) * | 2021-01-19 | 2024-05-24 | 北京神州数码云科信息技术有限公司 | 数据包重传方法、装置、电子设备和存储介质 |
CN114500391A (zh) * | 2021-12-28 | 2022-05-13 | 上海弘积信息科技有限公司 | 一种应对瞬间流量过大的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102693A (zh) * | 2014-06-19 | 2014-10-15 | 广州华多网络科技有限公司 | 对象处理方法和装置 |
CN105119843A (zh) * | 2015-08-13 | 2015-12-02 | 中国航天科工集团第三研究院第八三五七研究所 | 消息缓存队列长度的设置方法 |
EP3035615A1 (en) * | 2014-12-17 | 2016-06-22 | Alcatel Lucent | Method for queue management |
CN107766160A (zh) * | 2017-09-26 | 2018-03-06 | 平安科技(深圳)有限公司 | 队列消息处理方法及终端设备 |
CN107995127A (zh) * | 2017-12-13 | 2018-05-04 | 深圳乐信软件技术有限公司 | 一种过载保护方法及装置 |
-
2018
- 2018-12-28 CN CN201811625671.1A patent/CN111385218B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102693A (zh) * | 2014-06-19 | 2014-10-15 | 广州华多网络科技有限公司 | 对象处理方法和装置 |
EP3035615A1 (en) * | 2014-12-17 | 2016-06-22 | Alcatel Lucent | Method for queue management |
CN105119843A (zh) * | 2015-08-13 | 2015-12-02 | 中国航天科工集团第三研究院第八三五七研究所 | 消息缓存队列长度的设置方法 |
CN107766160A (zh) * | 2017-09-26 | 2018-03-06 | 平安科技(深圳)有限公司 | 队列消息处理方法及终端设备 |
CN107995127A (zh) * | 2017-12-13 | 2018-05-04 | 深圳乐信软件技术有限公司 | 一种过载保护方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111385218A (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111385218B (zh) | 消息队列过载的丢包、流量控制方法、存储介质及设备 | |
US10555040B2 (en) | Machine learning based packet service classification methods for experience-centric cellular scheduling | |
US8340099B2 (en) | Control of background data transfers | |
CN101924603B (zh) | 数据传输速率的自适应调整方法、装置及*** | |
US6901593B2 (en) | Active queue management with flow proportional buffering | |
US6560198B1 (en) | Method and system for stabilized random early detection using packet sampling | |
EP3319281A1 (en) | Method and appratus for network congestion control based on transmission rate gradients | |
US20090268747A1 (en) | Communication apparatus | |
EP1052797A2 (en) | Dynamically delayed acknowledgement transmission system | |
US8081644B2 (en) | Method and device for controlling a queue buffer | |
CN108600118B (zh) | 报文处理方法、装置以及电子设备 | |
EP1704684B1 (en) | Method and device for controlling a queue buffer | |
US20130170342A1 (en) | Data communication systems and methods | |
EP2664178B1 (en) | Adaptive relative bit-rate manager for TCP depending flow control | |
WO2017192341A1 (en) | Modified slow start for background connections | |
US6990073B1 (en) | Data packet congestion management technique | |
CN113315720B (zh) | 一种数据流控制方法、***及设备 | |
US20080291833A1 (en) | Method for buffer control for network device | |
WO2024001763A1 (zh) | 一种数据传输处理方法、装置、存储介质及电子装置 | |
CN113572655A (zh) | 无丢失网络的拥塞探测方法及*** | |
JP2009278532A (ja) | 送信装置及び輻輳制御方法 | |
CN114866196B (zh) | 数据包重传方法、装置、电子设备和存储介质 | |
CN112230880B (zh) | 一种数据传输控制方法、装置、fpga及介质 | |
CN114389999B (zh) | 一种基于数据包的网络传输方法、装置、设备及存储介质 | |
US6434116B1 (en) | Method and system for stabilized random early detection using connection sampling |
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 |