CN115357363A - 限流方法、装置、任务响应系统、电子设备及存储介质 - Google Patents
限流方法、装置、任务响应系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115357363A CN115357363A CN202211057966.XA CN202211057966A CN115357363A CN 115357363 A CN115357363 A CN 115357363A CN 202211057966 A CN202211057966 A CN 202211057966A CN 115357363 A CN115357363 A CN 115357363A
- Authority
- CN
- China
- Prior art keywords
- task
- task queue
- queue
- flow
- historical
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
本说明书实施例提供了一种限流方法、装置、任务响应系统、电子设备及存储介质,其中,该限流方法对包括多个不同优先级的任务队列的任务集合进行动态限流,即将第二任务队列的限流值与第一任务队列的历史任务响应数量关联起来,使得优先级相对较低的第二任务队列的限流值与第一任务队列的历史任务响应数量负相关,当第一任务队列的历史任务响应数量越大时,优先级较低的第二任务队列的限流值就越低,以在第二任务队列在当前单位时间的任务响应数量超过其对应的限流值时,对第二任务队列中的任务请求执行拒绝策略,该拒绝策略包括令请求响应的任务请求排队等待或丢弃请求响应的任务请求,实现对第二任务队列的限流,保障优先级较高的第一任务队列可以获得及时响应。
Description
技术领域
本说明书涉及计算机应用领域的限流技术,更具体地说,涉及一种限流方法、装置、任务响应系统、电子设备及存储介质。
背景技术
在大数据的背景下,网络数据的吞吐量日益递增,可能会造成网络系统的过载,造成网络拥塞。
当服务器需要承载的任务请求流量超出了服务器的承载能力,就会出现请求流量超限的情况,可能导致服务器无法对较为重要的任务请求及时做出响应。
因此,需要更加可靠的限流方法。
发明内容
本说明书实施例提供了一种限流方法、装置、任务响应系统、电子设备及存储介质,基于多任务队列联动的思想,自适应调节第二任务队列的限流值,保证对较高优先级的第一任务队列的及时响应。
为实现上述技术目的,本说明书实施例提供了如下技术方案:
第一方面,本说明书实施例提供了一种限流方法,所述限流方法包括:
根据任务集合中第一任务队列的历史任务响应数量,调整所述任务集合中第二任务队列对应的限流值,所述任务集合中包括多个优先级不同的任务队列,所述第一任务队列为所述任务集合中优先级高于所述第二任务队列的优先级的任务队列,所述历史任务响应数量表征所述第一任务队列在上一个单位时间内的被响应的任务请求数量,所述第二任务队列对应的限流值与所述第一任务队列的历史任务响应数量负相关;
根据所述第二任务队列的限流值,对所述第二任务队列进行限流。
第二方面,本说明书实施例提供了一种限流方法,包括:
根据关联任务队列的历史任务响应数量,调整预设任务队列对应的限流值,所述关联任务队列为优先级高于所述预设任务队列的任务队列。
根据所述预设任务队列的限流值,对所述预设任务队列进行限流。
第三方面,本说明书实施例提供了一种任务响应系统,包括:终端和服务器;其中,
所述终端,用于向所述服务器发送任务请求;
所述服务器,用于根据上述的限流方法对任务队列进行限流,在所述任务请求所属的任务队列处于第一状态时,响应所述任务请求,并将响应所述任务请求获得的响应结果发送给所述终端;
所述任务队列处于第一状态为在最近一个单位时间内被响应的任务请求数量小于或等于所述任务队列对应的限流值。
第四方面,本说明书实施例提供了一种限流装置,包括:
第一调整模块,用于根据任务集合中第一任务队列的历史任务响应数量,调整所述任务集合中第二任务队列对应的限流值,所述任务集合中包括多个优先级不同的任务队列,所述第一任务队列为所述任务集合中优先级高于所述第二任务队列的优先级的任务队列,所述历史任务响应数量表征所述第一任务队列在上一个单位时间内的被响应的任务请求数量,所述第二任务队列对应的限流值与所述第一任务队列的历史任务响应数量负相关;
第一限制模块,用于根据所述第二任务队列的限流值,对所述第二任务队列进行限流。
第五方面,本说明书实施例提供了一种限流装置,包括:
第二调整模块,用于根据关联任务队列的历史任务响应数量,调整预设任务队列对应的限流值,所述关联任务队列为优先级高于所述预设任务队列的任务队列;
第二限制模块,用于根据所述预设任务队列的限流值,对所述预设任务队列进行限流。
第六方面,本说明书实施例提供了一种电子设备,包括:存储器和处理器;
其中,所述存储器与所述处理器连接,所述存储器用于存储程序;
所述处理器,用于通过运行所述存储器中存储的程序,实现如上述任一项所述的限流方法。
第七方面,本说明书实施例提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时,实现如上述任一项所述的限流方法。
第八方面,本说明书实施例提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中;所述计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令时实现上述的限流方法的步骤。
从上述技术方案可以看出,本说明书实施例提供的限流方法对包括多个不同优先级的任务队列的任务集合进行动态限流,即将第二任务队列的限流值与第一任务队列的历史任务响应数量关联起来,使得优先级相对较低的第二任务队列的限流值与第一任务队列的历史任务响应数量负相关,当第一任务队列的历史任务响应数量越大时,优先级较低的第二任务队列的限流值就越低,在当第二任务队列在当前单位时间的任务响应数量超过其对应的限流值时,对第二任务队列中的任务请求执行拒绝策略,该拒绝策略包括令请求响应的任务请求排队等待或丢弃请求响应的任务请求,实现对第二任务队列的限流,保障优先级较高的第一任务队列中的任务请求可以获得及时响应。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本说明书实施例提供的一种实施环境的示意图;
图2为本说明书实施例提供的一种限流方法的流程示意图;
图3为本说明书实施例提供的一种三个任务队列的历史任务响应数量和限流值示意图;
图4为本说明书实施例提供的一种等待界面的示意图;
图5为本说明书实施例提供的另一种限流方法的流程示意图;
图6为本说明书实施例提供的一种任务队列的实际历史任务响应数量的示意图;
图7为本说明书实施例提供的一种任务队列的限流值的示意图;
图8为本说明书实施例提供的一种限流装置的结构示意图;
图9为本说明书实施例提供的又一种限流方法的流程示意图;
图10为本说明书实施例提供的另一种限流装置的结构示意图;
图11为本说明书实施例提供的一种电子设备的结构示意图。
具体实施方式
除非另外定义,本说明书实施例使用的技术术语或者科学术语应当为本说明书所属领域内具有一般技能的人士所理解的通常意义。本说明书实施例使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来避免构成要素的混同而设置的。
除非上下文另有要求,否则,在整个说明书中,“多个”表示“至少两个”,“包括”被解释为开放、包含的意思,即为“包含,但不限于”。在说明书的描述中,术语“一个实施例”、“一些实施例”、“示例性实施例”、“示例”、“特定示例”或“一些示例”等旨在表明与该实施例或示例相关的特定特征、结构、材料或特性包括在本说明书的至少一个实施例或示例中。上述术语的示意性表示不一定是指同一实施例或示例。
下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
正如背景技术中所述,在一些应用场景中可能出现服务器流量超限的情况。例如,短信群发平台在促销日之前会批量发送大量的促销信息,电子商务网站在促销活动时需要面对比平时多几十甚至几百倍的流量。因此,为了防止短信群发平台和电子商务网站被瞬间爆发的流量压垮,往往会对流量设置限流阈值,即过载保护,以通过挡掉和牺牲一部分外部请求来防止系统被整体压垮,进而能保证即使外来流量远远超过自身能力也能保障部分服务能力。
虽然通过过载保护的做法保护了系统,但其无差别的限流阈值可能会牺牲一些重要性较高的任务队列的响应及时性,给用户带来不便,或给用户带来损失。例如:用户在需要验证码短信的应用场景(例如用户注册登录、密码找回等场景)下请求获得验证码短信,如果迟迟无法获得服务器对该请求的响应,可能会导致用户无法及时支付、无法及时注册、登录或无法及时找回密码造成资产损失等问题。
还例如:在电子商务网站的定时促销抢购活动中,在约定时刻或时段内,电子商务网站会面临远超限流阈值的访问/支付等请求,如果由于交易系统大量限流导致用户无法下单、打开页面提示系统繁忙等不良体验,一方面给电子商务网站带来了交易额下降的损失,另一方面也影响了用户本该在该时刻/时段内应该获得的优惠权益,比如:很多卖家往往会给约定时刻/时段内最早下单的若干订单以特殊的优惠折扣,但在该最早的时间段,系统流量往往处于峰值,是最容易引起限流的时间,进而导致大量用户无法在该时刻/时段内下单。
针对上述问题,目前的处理方案一般是准备足够的机器和系统容量来保证用户体验,以相对提高限流阈值,确保没有限流发生。但这种方式的成本和预算会非常高,并且并不是每时每刻都会有大流量需求,可能会导致硬件浪费。
基于此,本说明书实施例提供了一种限流方法,通过对包括多个不同优先级的任务队列的任务集合进行动态限流来保证优先级较高的任务队列(例如验证码短信任务队列、某时段内的产品页面访问任务队列、某时段内的支付任务队列等)的及时响应,具体是将第二任务队列的限流值与第一任务队列的历史任务响应数量关联起来,使得优先级相对较低的第二任务队列的限流值与第一任务队列的历史任务响应数量负相关,当第一任务队列的历史任务响应数量越大时,优先级较低的第二任务队列的限流值就越低,以在第二任务队列在当前单位时间的任务响应数量超过其对应的限流值时,对第二任务队列中的任务请求执行拒绝策略,该拒绝策略包括令请求响应的任务请求排队等待或丢弃请求响应的任务请求,实现对第二任务队列的限流,保障优先级较高的第一任务队列可以获得及时响应。
下面参见图1对本说明书实施例提供的限流方法可能应用的实施场景进行示例性说明。该实施环境为一服务器网络,该服务器网络包括服务器10和终端20。图2中示出的服务器网络中包括一个服务器10,不难理解的是,当服务器网络较为庞大时,还可存在多个服务器10,本说明书对此并不做限定。
终端20可以是任何具有通信和运算功能的设备,例如,台式电脑、笔记本电脑或者其他可实施网络连接的计算设备,在此不进行限定。
服务器10可以是单台服务器,也可以是多台服务器或者服务器集群。服务器10可以是云端服务器,也可以是本地服务器。
终端20与服务器10建立有通信连接。可选地,终端20和服务器10可以通过无线网络建立通信连接,该无线网络可以包括移动通信网络和Wi-Fi(Wireless Fidelity,无线保真)网络等。
终端20可以与服务器10发起任务请求,服务器10在接收到任务请求后,将该任务请求加入任务队列,并按照一定的处理顺序对任务队列中的任务请求进行响应,获得响应结果后返回给终端20。任务队列可以按照FIFO(First Input First Output,先入先出)方式按序执行。
通常情况下,一个服务器10会负责多个任务队列的响应,以负责短信群发服务的服务器来说,至少会存在三个任务队列,分别为验证码短信任务队列、通知短信任务队列和营销短信服务队列。其中,验证码短信在用户注册登录、密码找回等场景有广泛应用,而这些场景对短信发送成功率、延时都有比较高的要求,在短信群发服务中验证码类短信也是SLA(Service Level Agreement,服务级别协议)最高、保障级别最高的业务;通知短信在物流通知、会议通知、活动通知等场景有广泛应用,在短信群发服务中通知类短信是保障级别仅次于验证码的业务;营销短信通常应用在企业推广上,比如大促商家营销,营销短信在短信群发服务中是保障级别相对较低的业务。在实际应用中,为了保证验证码短信和通知短信这类优先级相对较高的任务队列的及时响应,服务器10可以按照本说明书实施例提供的限流方法,对这三个任务队列进行联合限流。当然地,本说明书实施例提供的限流方法不仅适用于三个任务队列的情形,还适用于两个任务队列、四个任务队列或更多任务队列的动态限流。下面结合附图,详细说明书本说明书各实施例提供的技术方案。
参考图2,图2为本说明书实施例提供的一种限流方法的流程示意图,该限流方法以应用于图1中的服务器10为例进行说明,该方法具体可以包括如下步骤:
S201:根据任务集合中第一任务队列的历史任务响应数量,调整所述任务集合中第二任务队列对应的限流值,所述任务集合中包括多个优先级不同的任务队列,所述第一任务队列为所述任务集合中优先级高于所述第二任务队列的优先级的任务队列,所述历史任务响应数量表征所述第一任务队列在上一个单位时间内的被响应的任务请求数量,所述第二任务队列对应的限流值与所述第一任务队列的历史任务响应数量负相关。
任务集合,也可成为任务组,是由多个不同优先级的任务队列组成的。任务集合中包括的任务队列可以是2个、3个或以上。
负相关是指因变量值随自变量值的增大而减小,或因变量值随自变量值的减小而增大,自变量和因变量的相关系数为负值,则自变量和因变量为负相关关系。在本实施例中,第二任务队列对应的限流值为自变量,第一任务队列的历史任务响应数量为因变量。
单位时间可以是指统计与任务队列相关的被响应的任务请求数量的一个周期,例如可以是2秒、1秒、100毫秒、500毫秒等,具体可根据实际要求而定。
任务响应数量可以是指服务器在单位时间内响应任务请求的数量。当单位时间为1秒时,该任务响应数量可以用TPS(Transactions Per Second,每秒事务处理数)、QPS(Queries Per Second,每秒查询率)、RPS(Request Per Second,每秒请求率)等参数表示。其中,TPS和RPS是指服务器每秒处理的事务(请求)次数,QPS表示服务器每秒能够处理的查询次数。任务队列的历史任务响应数量则是指该任务队列中的任务请求在单位时间内被响应的任务请求数量。
任务集合中任务队列的优先级可以根据任务队列对应的服务类型、重要程度、对于实时性要求高低等因素综合确定。例如,以验证码短信任务队列、通知短信任务队列和营销短信任务队列为例,其中,验证码短信任务队列是指响应验证码短信请求的任务队列,通知短信任务队列是指响应通知短信请求的任务队列,营销短信任务队列是指响应营销短信请求的任务队列。
由于验证码短信任务队列对于实时性要求最高、保障级别最高,对于短信发送成功率和延时都有比较高的要求,在短信群发服务平台中验证码类短信也是SLA最高、保障级别最高的服务,因此可以将验证码短信任务队列的优先级设置为最高(例如优先级为1)。通知短信是保障级别仅次于验证码短信的服务,因此可以将通知短信任务队列的优先级设置为较高(例如优先级为2)。最后,对于时效性要求不高,且保障级别较低的营销短信任务队列,可以将其优先级设置为较低(例如优先级为3)。
在如此优先级设置的前提下,对于营销短信任务队列来说,营销短信任务队列为第二任务队列,则验证码短信任务队列和通知短信任务队列相较于营销短信任务队列为第一任务队列。
对于通知短信任务队列来说,通知短信任务队列为第二任务队列时,验证码短信任务队列为第一任务队列。
即,本说明书实施例中第一任务队列和第二任务队列是一个相对的概念,当不同优先级的任务队列作为第二任务队列时,可以作为第一任务队列的任务队列也有不同。
举例来说,当任务集合中包括N个优先级不同的任务队列时,N个任务队列的优先级从高到低分别为1~N,对于优先级为N的任务队列来说,当优先级为x的任务队列为第二任务队列时,优先级为N、N-1、N-2……1的任务队列均为第一任务队列。相应的,当优先级为N-1的任务队列为第二任务队列时,优先级为N-2、N-3……1的任务队列为第一任务队列,依次类推。
在步骤S201中,由于第二任务队列的限流值根据第一任务队列的历史任务响应数量确定,使得任务集合中多个任务队列的限流值彼此关联,且与上一单位时间内第一任务队列的被响应的任务请求数量负相关,使得优先级较高的任务队列具有较高的限流值,而优先级较低的任务队列的限流值相对较低,实现了任务队列中不同优先级的任务队列联动、高时效自适应限流调整,保障了相对重要的高优先级的任务队列的及时响应,也一定程度上降低了服务器被突发流量压垮的可能。
S202:根据所述第二任务队列的限流值,对所述第二任务队列进行限流。
当第二任务队列的限流值确定之后,可以根据该确定的限流值对各第二任务队列进行限流,使得各任务队列在不同限流值下运行,满足各任务队列的运行要求。根据确定的限流值,对第二任务队列进行限流可以是指限制第二任务队列在单位时间内可以被响应的任务请求数量的上限,当第二任务队列在当前单位时间的任务响应数量超过其对应的限流值时,对第二任务队列中的任务请求执行拒绝策略,该拒绝策略包括令请求响应的任务请求排队等待或丢弃请求响应的任务请求,从而实现对第二任务队列的限流。本说明书实施例仅提供了几种可行的拒绝策略,当实际应用场景不同时,还可以采用其他的拒绝策略,本说明书对此并不做限定。
为了便捷、快速地确定第二任务队列对应的限流值,且保证确定出的第二任务队列对应的限流值与第一任务队列的历史任务响应数量负相关。本说明书实施例提供了几种可行的确定方法,具体地,其中一种方法包括:
S301:将最大流量阈值与所述任务集合中第一任务队列的历史任务响应数量之差,作为所述第二任务队列对应的限流值,所述最大流量阈值为服务器在所述单位时间内的最大任务请求响应数量。
举例来说,参考图3,假设任务集合中有三个任务队列(分别为p1、p2和p3),任务队列p1、p2和p3的优先级从高到低依次排列,分别为1、2、3,任务队列p1、p2和p3的历史任务响应数量分别用P1QPS、P2QPS和P3QPS表示。则对于任务队列p2来说,第一任务队列为任务队列p1,任务队列p1的历史任务响应数量假设为P1QPS,假设最大流量阈值为Qmax,则任务队列p2的限流值P2limit可以表示为Qmax-P1QPS。相应的,对于任务队列p3来说,第一任务队列为任务队列p1和p2,任务队列p2的历史任务响应数量假设为P2QPS,则任务队列p3的限流值P3limit可以表示为Qmax-P1QPS-P2QPS。图3中,横坐标为表示时间,纵坐标表示各任务队列的历史任务响应数量,横坐标中的t1、t2、t3……t9分别表示不同时刻,各时刻上方方框中的数字从上到下分别表示任务队列p1、p2和p3该时刻的流量。
不失一般性地,当任务结合中有N个任务队列时,任务队列p1到pN的优先级从1~N依次排列(从1~N优先级依次降低)。PiQPS表示任务队列Pi的历史任务响应数量,最大流量阈值仍以Qmax表示,i=2,3……N,则任务队列Pi的限流值可以表示为:
Pilimit=Qmax-P1QPS-P2QPS-…-Pi-1QPS。
以该方法确定第二任务队列对应的限流值,具有运算简单的特点,有利于降低算法复杂度,提高运算效率。
本说明书实施例提供的另一种确定限流值的方法包括:
S302:获取所述第一任务队列的权重流量,所述权重流量为所述第一任务队列的历史任务响应数量与所述第一任务队列对应权重的乘积,所述第一任务队列对应权重与所述第一任务队列的优先级正相关。
S303:将最大流量阈值与所述第一任务队列的权重流量的差值,作为所述第二任务队列对应的限流值,所述最大流量阈值为服务器在所述单位时间内的最大任务请求响应数量。
在步骤S302和S303中,在确定第二任务队列对应的限流值时,为第一任务队列中优先级较高的任务队列的历史任务响应数量赋予了更高的权重,使得较高优先级的任务队列的历史任务响应数量对于第二任务队列的限流值的影响更加明显,可以凸显高优先级的任务队列的历史任务响应数量对第二任务队列的调节作用,有利于保证高优先级的任务队列的正常运行。
举例来说,假设任务集合中有三个任务队列(分别为p1、p2和p3),任务队列p1、p2和p3的优先级从高到低依次排列,分别为1、2、3。则对于任务队列p2来说,第一任务队列为任务队列p1,任务队列p1的历史任务响应数量假设为P1QPS,假设最大流量阈值为Qmax,任务队列p1对应权重k1,则任务队列p2的限流值P2limit可以表示为Qmax-k1×P1QPS。相应的,对于任务队列p3来说,第一任务队列为任务队列p1和p2,任务队列p2的历史任务响应数量假设为P2QPS,任务队列p2对应权重k2,k1大于k2,则任务队列p3的限流值P3limit可以表示为Qmax-k1×P1QPS-k2×P2QPS。从任务队列p3的限流值表达式中不难发现,由于k1>k2,则高优先级的任务队列p1的历史任务响应数量对于任务队列p3的限流值的影响更为明显,即可以为任务队列p1对应更高的权重,当任务队列p1的历史任务响应数量发生波动时,可以快速调节其他任务队列的限流值,保证高优先级的任务队列p1的正常响应。
不失一般性地,当任务结合中有N个任务队列时,任务队列p1到pN的优先级从1~N依次排列(从1~N优先级依次降低)。PiQPS表示任务队列Pi的历史任务响应数量,ki表示任务队列pi对应的权重,最大流量阈值仍以Qmax表示,i=2,3……N,则任务队列Pi的限流值可以表示为:
Pilimit=Qmax-k1×P1QPS-k2×P2QPS-…-ki×Pi-1QPS。
以该方法确定第二任务队列对应的限流值,可以放大更优先级任务队列的历史任务响应数量对于第二任务队列的限流值影响,保障高优先级任务队列的正常运行。
在确定了任务集合中各任务队列的限流值之后,本说明书实施例对具体任何进行限流也进行了示例性说明。例如在本说明书的一个实施例中,所述根据所述第二任务队列的限流值,对所述第二任务队列进行限流包括:
利用令牌桶对所述第二任务队列进行限流,所述令牌桶的令牌生成速率为所述第二任务队列的限流值。
利用令牌桶方法对所述第二任务队列进行限流,可以在实现对第二任务队列的限流目的的基础上,可以在令牌桶内的令牌数量相对较多时,应对突然的大流量请求。
利用令牌桶进行限流的方法可以包括:令牌桶中以恒定的令牌生成速率生成令牌,每当一个任务队列中的任务请求进入时消耗一个或多个令牌,当令牌桶中的令牌数量超过令牌桶容量时,多生产的令牌会被丢弃,当令牌桶中的令牌数量为零或小于一定值时,任务请求将被阻止或丢弃。
除了令牌桶算法之外,本说明书的一些实施例还可以采用漏桶算法或计数器算法对第二任务队列进行限流。
更具体地,在本说明书的一个实施例中,所述利用令牌桶对所述第二任务队列进行限流包括:
若所述第二任务队列对应的令牌桶中的令牌数量小于或等于预设数量,则暂停响应所述第二任务队列中的任务请求。
所述预设数量可以根据实际需求确定,所述预设数量可以为0,当第二任务队列对应的令牌桶中的令牌数量等于0时,对第二任务队列中的任务请求进行暂停响应直至第二任务队列对应的令牌桶中的令牌数量大于零,恢复对第二任务队列中的任务请求的响应。所述预设数量也可以为大于0的整数,这样可以在令牌桶中设置冗余的令牌,应对第二任务队列的特殊任务请求的响应需求。
当暂停响应所述任务队列中的任务请求,且该任务请求为终端发送的请求时,则还可以给终端返回如图4所示的界面,以“正在努力响应,稍等片刻哦”等提示语提示终端用户等待服务器响应,此外该界面还可以包括再次发送按钮,以在请求响应失败后,用户可以通过该按钮再次发送请求。
通过上述方法可以对任务队列中优先级为2~N的任务队列设置限流值,针对优先级为1的任务队列,在本说明书的一个实施例中,如图5所示,所述限流方法包括:
S401:将所述任务集合中优先级最高的任务队列的限流值设置为最大流量阈值,所述最大流量阈值为服务器在所述单位时间内的最大任务请求响应数量。
S402:利用滑动窗口法,统计所述任务队列的历史任务响应数量。
S403:根据任务集合中第一任务队列的历史任务响应数量,调整所述任务集合中第二任务队列对应的限流值,所述任务集合中包括多个优先级不同的任务队列,所述第一任务队列为所述任务集合中优先级高于所述第二任务队列的优先级的任务队列,所述历史任务响应数量表征所述第一任务队列在上一个单位时间内的被响应的任务请求数量,所述第二任务队列对应的限流值与所述第一任务队列的历史任务响应数量负相关。
S404:根据所述第二任务队列的限流值,对所述第二任务队列进行限流。
结合参考图3,将任务结合中优先级最高的任务队列的限流值设置为最大流量阈值,可以一定程度上保护服务器不被过高的瞬时流量压垮,提高服务器的运行稳定性。
此外,本说明书实施例还提供了统计任务队列的历史任务响应数量的方法,利用滑动窗口法统计任务队列的历史任务响应数量的过程中无需加锁操作,可实现无锁化设计,有利于提高系统的吞吐量。
下面将结合实际场景,对本说明书实施例提供的限流方法进行验证,体现本说明书实施例提供的限流方法的实际效果。
仍然假设系统中存在三个不同优先级的队列(分别为p1、p2和p3),任务队列p1、p2和p3的优先级从高到低依次排列,分别为1、2、3。假设最大流量阈值Qmax=100,则根据本说明书实施例提供的限流方法,任务队列p1的限流值P1limit=Qmax,任务队列p2的限流值P2limit=Qmax-P1QPS。任务队列p3的限流值P3limit=Qmax-P1QPS-P2QPS。以每秒查询率QPS作为历史任务响应数量的统计单位。
则通过实际模拟运行,得到运行结果参考图6和图7,图6为各任务队列的实际历史任务响应数量(Actual QPS)示意图,横坐标为时间(time),纵坐标为各任务队列的历史任务响应数量。
图7为各任务队列的限流值(Limit QPS)的示意图,横坐标为时间(time),纵坐标为各任务队列对应的限流值。
从图6和图7中可以发现,系统总计流量(total)有短暂时间超过最大流量阈值(100QPS),之后平稳运行在最大流量阈值附近,有效保障服务器不会长时间超负载运行。并且,从图7中可以发现,当优先级为2的任务队列p2的实际历史任务响应数量激增后,马上将任务队列p3的限流值动态调低到0附近,使得任务队列p3的实际流量也随之降低到0附近,保障高优先级队列p1和p2的实际流量不受影响。
参考图8,与上述的限流方法相对应的,本说明书实施例还提供了一种限流装置,包括:
第一调整模块100,用于根据任务集合中第一任务队列的历史任务响应数量,调整所述任务集合中第二任务队列对应的限流值,所述任务集合中包括多个优先级不同的任务队列,所述第一任务队列为所述任务集合中优先级高于所述第二任务队列的优先级的任务队列,所述历史任务响应数量表征所述第一任务队列在上一个单位时间内的被响应的任务请求数量,所述第二任务队列对应的限流值与所述第一任务队列的历史任务响应数量负相关;
第一限制模块200,用于根据所述第二任务队列的限流值,对所述第二任务队列进行限流。
本实施例提供的限流装置,与本申请上述实施例所提供的限流方法属于同一申请构思,可执行本申请上述任意实施例所提供的限流方法,具备执行该限流方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请上述实施例提供的限流方法的具体处理内容,此处不再加以赘述。
基于相同的多优先级队列联动思想,本说明书实施例还提供了一种限流方法,如图9所示,包括:
S701:根据关联任务队列的历史任务响应数量,调整预设任务队列对应的限流值,所述关联任务队列为优先级高于所述预设任务队列的任务队列。
S702:根据所述预设任务队列的限流值,对所述预设任务队列进行限流。
在步骤S701中,预设任务队列对应的限流值仍然与高优先级的关联任务队列的历史任务响应数量相关,确定预设任务队列对应的限流值的具体方式可以与前文描述的限流方法中第二任务队列的限流值确定方式类似,当然地,预设任务队列对应的限流值的确定方式还可以为其他方式,例如,当关联任务队列的历史任务响应数量逐渐递增,但系统总流量(任务集合中所有任务队列对应流量的综合)未超过系统最大流量阈值时,在预定的时间内(例如1秒、2秒、5秒等)暂时不调低预设任务队列对应的限流值,给预设任务队列一定的时间进行任务响应,随后再调低预设任务队列对应的限流值(例如使预设任务队列的限流值与关联任务队列的历史任务响应数量负相关),保障高优先级任务队列的正常运行。
至于如何使得预设任务队列的限流值与关联任务队列的历史任务响应数量负相关,以及历史任务响应数量如何统计等限定,可以参考上文描述的限流方法中的相关限定,本说明书在此不做赘述。
参考图10,与上述的限流方法相对应的,本说明书实施例还提供了一种限流装置,包括:
第二调整模块300,用于根据关联任务队列的历史任务响应数量,调整预设任务队列对应的限流值,所述关联任务队列为优先级高于所述预设任务队列的任务队列;
第二限制模块400,用于根据所述预设任务队列的限流值,对所述预设任务队列进行限流。
本实施例提供的限流装置,与本说明书上述实施例所提供的限流方法属于同一申请构思,可执行本说明书上述任意实施例所提供的限流方法,具备执行该限流方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本说明书上述实施例提供的限流方法的具体处理内容,此处不再加以赘述。
相应的,本说明书实施例还提供了一种任务响应系统,包括:终端和服务器;其中,
所述终端,用于向所述服务器发送任务请求;
所述服务器,用于根据上述任一实施例所述的限流方法对任务队列进行限流,在所述任务请求所属的任务队列处于第一状态时,响应所述任务请求,并将响应所述任务请求获得的响应结果发送给所述终端;
所述任务队列处于第一状态为在最近一个单位时间内被响应的任务请求数量小于或等于所述任务队列对应的限流值。
本实施例提供的任务响应系统,与本说明书上述实施例所提供的限流方法属于同一申请构思,服务器可执行上述任一实施例所述的限流方法,具备执行该限流方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请上述实施例提供的限流方法的具体处理内容,此处不再加以赘述。
本申请另一实施例还提出一种电子设备,参见图11所示,本说明书的一个示例性实施例还提供了一种电子设备,包括:存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时执行本说明书上述实施例中描述的根据本说明书各种实施例的限流方法中的步骤。
该电子设备的内部结构可以如图11所示,该电子设备包括通过系统总线连接的处理器、存储器、网络接口和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该中控设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以本说明书上述实施例中描述的根据本说明书各种实施例的限流方法中的步骤。
处理器可包括主处理器,还可包括基带芯片、调制解调器等。
存储器中保存有执行本说明书实施例提供的技术方案的程序,还可以保存有操作系统和其他关键业务。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。更具体的,存储器可以包括只读存储器(read-only memory,ROM)、可存储静态信息和指令的其他类型的静态存储设备、随机存取存储器(random access memory,RAM)、可存储信息和指令的其他类型的动态存储设备、磁盘存储器、flash等等。
处理器可以是通用处理器,例如通用中央处理器(CPU)、微处理器等,也可以是特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本说明书实施例提供的方案程序执行的集成电路。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
输入设备可包括接收用户输入的数据和信息的装置,例如键盘、鼠标、摄像头、扫描仪、光笔、语音输入装置、触摸屏、计步器或重力感应器等。
输出设备可包括允许输出信息给用户的装置,例如显示屏、打印机、扬声器等。
通信接口可包括使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等。
处理器执行存储器中所存放的程序,以及调用其他设备,可用于实现本说明书上述实施例所提供的任意一种限流方法的各个步骤。
该电子设备还可以包括显示组件和语音组件,该显示组件可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示组件上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本说明书方案相关的部分结构的框图,并不构成对本说明书方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
除了上述方法和设备以外,本说明书实施例提供的限流方法还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本说明书各种实施例的限流方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本说明书实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行本说明书上述“示例性方法”部分中描述的根据本说明书各种实施例的限流方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本说明书所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本说明书的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本说明书实施例提供的方案范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本说明书构思的前提下,还可以做出若干变形和改进,这些都属于本说明书的保护范围。因此,本说明书专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种限流方法,其特征在于,所述限流方法包括:
根据任务集合中第一任务队列的历史任务响应数量,调整所述任务集合中第二任务队列对应的限流值,所述任务集合中包括多个优先级不同的任务队列,所述第一任务队列为所述任务集合中优先级高于所述第二任务队列的优先级的任务队列,所述历史任务响应数量表征所述第一任务队列在上一个单位时间内被响应的任务请求数量,所述第二任务队列对应的限流值与所述第一任务队列的历史任务响应数量负相关;
根据所述第二任务队列的限流值,对所述第二任务队列进行限流。
2.根据权利要求1所述的方法,其特征在于,所述根据任务集合中第一任务队列的历史任务响应数量,调整所述任务集合中第二任务队列对应的限流值包括:
将最大流量阈值与所述任务集合中第一任务队列的历史任务响应数量之差,作为所述第二任务队列对应的限流值,所述最大流量阈值为服务器在所述单位时间内的最大任务请求响应数量。
3.根据权利要求1所述的方法,其特征在于,所述根据任务集合中第一任务队列的历史任务响应数量,调整所述任务集合中第二任务队列对应的限流值包括:
获取所述第一任务队列的权重流量,所述权重流量为所述第一任务队列的历史任务响应数量与所述第一任务队列对应权重的乘积,所述第一任务队列对应权重与所述第一任务队列的优先级正相关;
将最大流量阈值与所述第一任务队列的权重流量的差值,作为所述第二任务队列对应的限流值,所述最大流量阈值为服务器在所述单位时间内的最大任务请求响应数量。
4.根据权利要求1所述的方法,其特征在于,所述根据所述第二任务队列的限流值,对所述第二任务队列进行限流包括:
利用令牌桶对所述第二任务队列进行限流,所述令牌桶的令牌生成速率为所述第二任务队列的限流值。
5.根据权利要求4所述的方法,其特征在于,所述利用令牌桶对所述第二任务队列进行限流包括:
若所述第二任务队列对应的令牌桶中的令牌数量小于或等于预设数量,则暂停响应所述第二任务队列中的任务请求。
6.根据权利要求1-5任一项所述的方法,其特征在于,还包括:
将所述任务集合中优先级最高的任务队列的限流值设置为最大流量阈值,所述最大流量阈值为服务器在所述单位时间内的最大任务请求响应数量。
7.根据权利要求1-5任一项所述的方法,其特征在于,还包括:
利用滑动窗口法,统计所述任务队列的历史任务响应数量。
8.一种限流方法,其特征在于,包括:
根据关联任务队列的历史任务响应数量,调整预设任务队列对应的限流值,所述关联任务队列为优先级高于所述预设任务队列的任务队列;
根据所述预设任务队列的限流值,对所述预设任务队列进行限流。
9.一种任务响应系统,其特征在于,包括:终端和服务器;其中,
所述终端,用于向所述服务器发送任务请求;
所述服务器,用于根据权利要求1-8任一项所述的限流方法对任务队列进行限流,在所述任务请求所属的任务队列处于第一状态时,响应所述任务请求,并将响应所述任务请求获得的响应结果发送给所述终端;
所述任务队列处于第一状态为在最近一个单位时间内被响应的任务请求数量小于或等于所述任务队列对应的限流值。
10.根据权利要求9所述的系统,其特征在于,所述服务器还用于在所述任务请求所属的任务队列处于第二状态时,延迟响应所述任务请求,以使所述任务队列在单位时间内被响应的任务请求数量小于或等于所述任务队列对应的限流值;
所述任务队列处于第二状态为在最近一个单位时间内被响应的任务请求数量大于所述任务队列对应的限流值。
11.一种限流装置,其特征在于,包括:
第一调整模块,用于根据任务集合中第一任务队列的历史任务响应数量,调整所述任务集合中第二任务队列对应的限流值,所述任务集合中包括多个优先级不同的任务队列,所述第一任务队列为所述任务集合中优先级高于所述第二任务队列的优先级的任务队列,所述历史任务响应数量表征所述第一任务队列在上一个单位时间内的被响应的任务请求数量,所述第二任务队列对应的限流值与所述第一任务队列的历史任务响应数量负相关;
第一限制模块,用于根据所述第二任务队列的限流值,对所述第二任务队列进行限流。
12.一种限流装置,其特征在于,包括:
第二调整模块,用于根据关联任务队列的历史任务响应数量,调整预设任务队列对应的限流值,所述关联任务队列为优先级高于所述预设任务队列的任务队列;
第二限制模块,用于根据所述预设任务队列的限流值,对所述预设任务队列进行限流。
13.一种电子设备,其特征在于,包括:存储器和处理器;
其中,所述存储器与所述处理器连接,所述存储器用于存储程序;
所述处理器,用于通过运行所述存储器中存储的程序,实现如权利要求1-8任一项所述的限流方法。
14.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时,实现如权利要求1-8任一项所述的限流方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211057966.XA CN115357363A (zh) | 2022-08-30 | 2022-08-30 | 限流方法、装置、任务响应系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211057966.XA CN115357363A (zh) | 2022-08-30 | 2022-08-30 | 限流方法、装置、任务响应系统、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115357363A true CN115357363A (zh) | 2022-11-18 |
Family
ID=84004457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211057966.XA Pending CN115357363A (zh) | 2022-08-30 | 2022-08-30 | 限流方法、装置、任务响应系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115357363A (zh) |
-
2022
- 2022-08-30 CN CN202211057966.XA patent/CN115357363A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10291539B2 (en) | Methods, systems, and computer readable media for discarding messages during a congestion event | |
US9948791B2 (en) | Sharing group notification | |
KR101670642B1 (ko) | 클라이언트 디바이스 상에서의 패킷 송신을 스케줄링하기 위한 시스템 및 방법 | |
CN104283643B (zh) | 报文限速方法和装置 | |
US20200403913A1 (en) | Network Resource Scheduling Method, Apparatus, Electronic Device and Storage Medium | |
CN110808914A (zh) | 一种访问请求处理方法、装置及电子设备 | |
WO2021184589A1 (zh) | 流量调度方法、装置、服务器及存储介质 | |
CN113381944A (zh) | 系统限流方法、装置、电子设备、介质和程序产品 | |
Huang et al. | Modeling and analysis on congestion control in the internet of things | |
CN115102908B (zh) | 基于带宽控制的网络报文生成的方法以及相关装置 | |
CN113032410B (zh) | 数据处理方法、装置、电子设备及计算机存储介质 | |
WO2019047345A1 (zh) | 动态密码发送策略的生成方法和动态密码发送方法 | |
CN115357363A (zh) | 限流方法、装置、任务响应系统、电子设备及存储介质 | |
CN116192752A (zh) | 业务流量控制方法、装置、电子设备及存储介质 | |
CN106506660B (zh) | 一种联机请求处理方法、服务器及系统 | |
CN113225265B (zh) | 流量控制方法、装置、设备和计算机存储介质 | |
CN114048059A (zh) | 接口的超时时间调整方法、装置、计算机设备及存储介质 | |
CN108804152A (zh) | 配置参数的调节方法及装置 | |
CN114374657A (zh) | 一种数据处理方法和装置 | |
CN114337916A (zh) | 一种网络传输速率调整方法、装置、设备及存储介质 | |
US10979359B1 (en) | Polling resource management system | |
CN112684988A (zh) | 基于分布式存储的QoS方法及系统 | |
CN110928693A (zh) | 一种计算设备及资源分配方法 | |
CN114979979B (zh) | 一种消息处理的方法及其消息处理系统 | |
CN114095201B (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 |