CN110297698B - 一种多优先级动态限流方法、装置、服务器及存储介质 - Google Patents
一种多优先级动态限流方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110297698B CN110297698B CN201810242146.5A CN201810242146A CN110297698B CN 110297698 B CN110297698 B CN 110297698B CN 201810242146 A CN201810242146 A CN 201810242146A CN 110297698 B CN110297698 B CN 110297698B
- Authority
- CN
- China
- Prior art keywords
- quota
- subtype
- current limiting
- sub
- reserved
- 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
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000036541 health Effects 0.000 claims abstract description 59
- 230000015654 memory Effects 0.000 claims description 25
- 230000001105 regulatory effect Effects 0.000 claims description 9
- 230000003828 downregulation Effects 0.000 claims description 7
- 230000003827 upregulation Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 10
- 230000008901 benefit Effects 0.000 abstract description 4
- 238000004422 calculation algorithm Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 230000002222 downregulating effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 241000508269 Psidium Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002238 attenuated effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000002542 deteriorative effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
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
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种多优先级动态限流方法、装置、服务器及存储介质,所述方法包括在限流key下划分若干子类型,并对各子类型设定不同的优先级;在每个限流周期为所述各子类型分配预留配额;获取所述各子类型的统计信息和当前系统健康度;根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的预留配额值进行动态调整。本发明采用多优先级动态限流,在系统处理能力有限的情况下,最大化最优化利用系统能力,保证优先级较高的请求能优先被处理,在保证系统不发生雪崩的前提下,将受益最大化。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种多优先级动态限流方法、装置、服务器及存储介质。
背景技术
雪崩效应是指系统中出现某个技术服务不可用造成整个系统不可用的情况,是一种因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程。
一个系统的处理能力是有限的,在外部请求流量超过后台系统处理能力时,为防止系统雪崩,限流是一种常见的自我保护的手段。通常限流可以分为:单机限流、全局限流和动态限流,其中,单机限流实现简单、运行可靠稳定,但流量不均匀会导致误限,机器数变化时,限流配额要调整;全局限流按照指定值控制系统总请求量,流量不均匀不会导致误限,机器数发生变化时,限流配额无需调整,但实现较复杂,不能根据服务情况,对限流配额做调整;动态限流则根据系统健康度动态调整总请求量,对限流配额做调整。
现有的动态限流方案可以根据当前系统健康度动态调整总流量,但是按限流key划分业务请求量后,每种限流key相互之间独立管理,当业务之间比较独立时,这种限流方式能够很好地发挥作用。然而,当出现多种请求公用相同系统能力时,多种请求需要公用一个限流key,此时会出现多种请求争用同一个限流key配额的情况。
发明内容
本发明所要解决的技术问题在于,针对多方来源的请求争用系统关键资源的场景,提出了一种多优先级动态限流方法、装置、服务器及存储介质,动态调整多种来源的请求量,保证高优先级请求被有限处理,最大化利用系统能力。
为了解决上述技术问题,一方面,本发明提供了一种动态限流方法,包括:
在限流key下划分若干子类型,并对各子类型设定不同的优先级;
在每个限流周期:
为所述各子类型分配预留配额;
获取所述各子类型的统计信息和当前系统健康度;
根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的预留配额值进行动态调整。
相应地,第二方面,本发明还提供了一种动态限流装置,包括:
子类型划分模块,用于在限流key下划分若干子类型,并对各子类型设定不同的优先级;
预留配额分配模块,用于在每个限流周期为所述各子类型分配预留配额;
信息获取模块,用于获取所述各子类型的统计信息和当前系统健康度;
配额调整模块,用于根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的预留配额值进行动态调整。
第三方面,本发明还提供了一种服务器,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行以下步骤:
在限流key下划分若干子类型,并对各子类型设定不同的优先级;
在每个限流周期:
为所述各子类型分配预留配额;
获取所述各子类型的统计信息和当前系统健康度;
根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的预留配额值进行动态调整。
第四方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令由处理器加载并执行以下步骤:
在限流key下划分若干子类型,并对各子类型设定不同的优先级;
在每个限流周期:
为所述各子类型分配预留配额;
获取所述各子类型的统计信息和当前系统健康度;
根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的预留配额值进行动态调整。
实施本发明实施例,具有如下有益效果:
本发明采用多优先级动态限流,在系统处理能力有限的情况下,最大化最优化利用系统能力,保证优先级较高的请求能优先被处理,在保证系统不发生雪崩的前提下,将受益最大化。
附图说明
图1是本发明实施例提供的实施环境的示意图;
图2是本发明实施例提供的一种基于系统负载的动态限流示意图;
图3是本发明实施例提供的常规动态限流配额调整方法流程图;
图4是本发明实施例提供的一种动态限流方法流程图;
图5是本发明实施例提供的一种多优先级动态限流配额管理模型示意图;
图6是本发明实施例提供的另一种动态限流方法流程图;
图7是本发明实施例提供的一种配额分配算法流程图;
图8是本发明实施例提供的一种动态限流装置结构框图;
图9是本发明实施例提供的一种动态限流装置中配额调整模块的结构框图;
图10是本发明实施例提供的一种限流服务器的内部结构框图;
图11是本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。而且,术语“第一”、“第二”等适用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
请参考图1,其示出了本发明实施例提供的实施环境的示意图,该实施环境包括:至少一个终端设备110和服务器120,其中,所述终端设备110可以但不限于为手机、平板电脑、台式计算机等终端设备。所述服务器120可以是一台服务器,也可以是由若干服务器组成的服务器集群,或者是一个云计算服务中心。
所述终端设备110可以与各种网络如互联网、企业内部网、无线网络等进行通讯,上述的无线网络可包括蜂窝式电话网、无线局域网或者城域网。上述的无线网络可以使用各种通信标准、协议及技术。所述终端设备110通过网络向所述服务器120发送请求,所述服务器120接收所述请求并进行处理。
在本发明实施例中,所述终端设备110中可运行有客户端,所述客户端可以是社交类应用客户端、即时通信客户端、支付类应用客户端、游戏客户端、阅读客户端、专用于发送虚拟物品的客户端等等。
一个系统中,当若干终端设备向服务器发送请求,所述服务器接收所述请求并对接收的请求进行处理。但是,一个系统的处理能力时有限的,当请求量超过服务器的处理能力时,通常会一起排队,造成响应时间迅速提升。如果对服务占用的资源量没有约束,还可能因为系统资源占用过多而宕机。因此,为了保证系统在遭遇突发流量时能够正常运行,需要加上限流。
通常限流可以分为两类:单机限流和全局限流。常见的单机限流工具有GuavaRateLimiter和Java Semaphore,全局限流可以用Redis做全局计数器来实现,基础架构组也提供了一个灵活的全局限流组件common-blocking。这些限流工具有一个共同的缺点:都需要手动设置一个固定的限流阈值。
首先,手动设置固定阈值需要做容量评估,准确的容量评估是比较难的。其次,在每次系统更新升级后,阈值会变得不再准确,需要重新调整,比较繁琐。再次,固定阈值也不能应对服务器性能波动的情况,对于一些日志量比较大的应用,整点日志压缩时,会消耗较多性能,此时系统的处理能力肯定比其他时候要稍差一些。
动态限流则解决了上述单机限流和全局限流的一些问题,请参见图2,其示出了一种基于系统负载的动态限流方法,在动态限流系统中,系统运行时,限流阈值能够根据实际情况做动态调整。本实施例中采用了最常见的三种监控指标:CPU使用率、Load和服务响应时间。
系统负载反过来说就是系统健康程度,这里定义了两个负载阈值,假设将CPU使用率阈值分别设置成50和70,如果此时系统CPU使用率是60那么系统就处于不健康状态,CPU使用率是80则系统处于恶化状态。实际中,可以通过配置来指定使用CPU、Load和响应时间中的一个或多个来计算系统健康度。使用多个指标时,先分别计算健康度,再取其中健康度最差的一个作为整体的健康度,起到一个多重约束的作用。这里可以参考限流技术中的“木桶理论”,一个系统的最大处理能力取决于多种资源中的瓶颈。
当系统负载较低,处于健康状态时不限流。当系统负载稍高,处于不健康状态时,以最近几秒处理请求的QPS(Query Per Second)计算限流阈值。当系统负载过高,状态恶化时,让限流阈值以一定的系数进行衰减,直到系统负载降低,系统状态由恶化变为不健康,最终让系统负载收敛在两个负载阈值之间。
前面提到在健康状态下不限流,那么系统在从健康状态变为不健康或恶化状态时,就需要计算一个初始限流阈值,初始限流阈值的计算参考了健康状态的QPS和当前处理请求的QPS。
请参见图3,其示出了本发明实施例提供的常规动态限流配额调整方法流程图,该动态限流方法针对不同业务流量分配不同限流key,针对每个key会统计其配额使用情况及当前系统健康度(包括成功率和时耗),当系统健康度在观察周期内下降时,会根据配置下调配额值;当系统健康度在观察周期内回升时,会根据配置上调配额值,其具体过程如下:
逐个SET及key遍历,扫描上报上来的数据;
统计各个SET及key前x秒的数据;
判断当前key状态是否为正常,若是,判断统计数据成功率是否低于下调阈值或耗时高于下调阈值;若否,判断观察周期是否到期。
其中,所述判断统计数据成功率是否低于下调阈值或耗时高于下调阈值,若是,则下调限流配额比率;若否,对限流配额不做调整。
其中,所述判断观察周期是否到期,若是,判断统计数据成功率是否高于上调阈值;若否,对限流配额不做调整。
其中,所述判断统计数据成功率是否高于上调阈值,若是,判断耗时是否不高于下调阈值;若否,判断统计数据成功率是否低于下调阈值或耗时高于下调阈值。
其中,所述判断耗时是否不高于下调阈值,若是,上调限流配额比率;若否,对限流配额不做调整。
限流key是限定单位时间窗口内并发访问/请求数量来保护系统正常运行的一种方式,当单位时间内的访问量达到设定值时可以拒绝服务或排队等待。上述的动态限流方法依据当前系统健康度动态调整总流量,按限流key划分业务请求量后,每种限流key相互之间独立管理,当业务之间比较独立时,这种限流方式能够很好地发挥作用。当出现多种请求公用相同系统能力时,多种请求需要公用一个限流key,此时会出现多种请求争用同一个限流key配额的情况。
因此,本实施例提供了一种动态限流方法,其参见图4,同时请参见图5,其示出一种多优先级动态限流配额管理模型,基于图5所示的限流配额管理模型的一种动态限流方法,包括:
S401.在限流key下划分若干子类型,并对各子类型设定不同的优先级。
其中,所述在限流key下划分若干子类型之前还包括:针对不同的业务流量分配不同的限流key。并且按外部请求的来源不同,为各个子类型设定不同的优先级。
S402.在每个限流周期为所述各子类型分配预留配额。
具体地,服务器在每个限流周期内给各个子类型分配预留配额,未能成功申请到配额的子类型对应的请求将会被后台服务器拒绝。
S403.获取所述各子类型的统计信息和当前系统健康度。
其中,所述统计信息包括预留配额值、已使用配额值、抢占配额值、限流错误码数和时耗。服务器的共享内存区域保存每个子类型的统计信息。
服务器将会对各个子类型的配额进行管理,统计个子类型配额使用情况及当前系统健康度。
S404.根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的预留配额值进行动态调整。
每种子类型对应的请求优先使用各自的配额,自身配额使用完毕后再从低往高一次使用其他子类型的配额。并且高优先级请求可以使用低优先级请求的配额,低优先级请求不可以使用高优先级的配额值。
若当前申请周期内某子类型出现配额不够情形,则在下个申请周期划分配额之前,会在原基础上对该子类型配额进行上调。相反,若当前周期内某子类型出现配额空闲过多情况,需要在下周期释放空闲配额。
例如,子类型x的预留配额值为Px,agent在向服务器申请配额时,会附带当前子类型并从算法所指定的子类型预留配额中拿走配额。
在当前限流周期内,若子类型x的所述限流错误码数大于零,判断所述优先级低于所述子类型x的子类型总配额值是否不小于一个调整单位,
当所述优先级低于所述子类型x的子类型总配额值不小于一个调整单位时,将所述子类型x的预留配额值上调一个调整单位;
当所述优先级低于所述子类型x的子类型总配额值小于一个调整单位时,保持所述子类型x的预留配额值不变。
在当前限流周期内,若子类型y的所述预留配额值减去所述已使用配额值大于一个调整单位,在下个限流周期将所述子类型y的预留配额值下调一个调整单位,所述下调一个调整单位的配额值释放给最低优先级的子类型。
其中,所述调整单位可以为预先设定的一个整数值N。
实际的分配过程可根据具体的配额分配算法实现,配额分配算法会依据优先级和共享内存中统计信息做动态调整。
以上所提供的一种动态限流方法在限流key下又划分了若干子类型,通过对各个子类型设定不同的优先级,解决了当多种请求需要公用一个限流key时,出现的多种请求争用一个限流key配额的问题。
请参见图6,其示出了另一种动态限流方法,包括:
S601.针对不同的业务流量分配不同的限流key。
S602.在限流key下划分若干子类型,并对各子类型设定不同的优先级。
其中,按外部请求的来源不同,为各个子类型设定不同的优先级。
S603.在每个限流周期为所述各子类型分配预留配额。
具体地,服务器在每个限流周期内给各个子类型分配预留配额,未能成功申请到配额的子类型对应的请求将会被后台服务器拒绝。
S604.获取所述各子类型的统计信息和当前系统健康度。
其中,所述统计信息包括预留配额值、已使用配额值、抢占配额值、限流错误码数和时耗。服务器的共享内存区域保存每个子类型的统计信息。
服务器将会对各个子类型的配额进行管理,统计个子类型配额使用情况及当前系统健康度。
S605.判断所述系统健康度是否正常,在所述系统健康度下降或回升时按所述优先级对所述各子类型的预留配额值进行动态调整。
S606.若所述系统健康度正常,则各子类型的配额保持不变。
S607.若所述系统健康度下降,从最低优先级的子类型的配额开始丢弃。
当所述当前系统健康度下降,需要下调所有子类型的总配额值,从最低优先级的子类型的配额开始丢弃。
S608.若所述系统健康度回升,从最低优先级的子类型的配额开始补偿。
当所述当前系统健康度回升,需要上调所有子类型的总配额值,从最低优先级的子类型的配额开始补偿。
上述动态限流算法能够在系统健康度发生变化时,根据当前系统健康度灵活调整系统的总配额值,使得系统能够在不同情况下正常对外部请求进行处理。
在上述图5的配额管理模型的基础上,以共享内存中信息作为数据源,本实施例提供了一种分配算法,请参见图7,在每个限流周期对各子类型的预分配配额进行调整,其中,图中参数释义如下:
Px,子类型x的预分配配额值;
Ex,子类型x限流错误码个数;
N,每次上调或下调的配额值,为系统总配额的百分比;
total,即比子类型x的优先级低的所有子类型总配额;
Ux,子类型x已使用的配额值。
上述各参数能够以矩阵的形式进行存储,如下所示:
矩阵A中的各参数代表其对应的具体数值,在具体实现过程中,矩阵中各元素的具体数值会根据配额管理流程的实现进行动态调整。
配额分配算法的具体实施步骤如下:
步骤一:初始状态下,所有配额都归最低优先级子类型n所有,即Pn=All。当agent向服务器申请配额时,子类型x依次从低优先级往高优先级消耗Pn到Px的配额值,Px的配额消耗完毕后子类型x开始限流;
步骤二:若子类型x发生了限流,即子类型x的限流错误码个数Ex>0,则在下个限流周期需要对子类型x的预留配额(Px)进行上调。Px上调单位为N,调整前需要判断低优先级总配额是否充足(即),若充足,则进行调整,调整规则为从最低优先级Pn中开始挪取,直至充足;若不充足,则无法为Px增加预分配值,Px保持不变;
步骤三:若子类型x继续发生限流,即Ex依旧大于0,则在下个限流周期需要继续按照步骤二的方案,继续对Px的值进行调整;
步骤四:若子类型x出现了预留配额空闲值超过了N的情况,即Px-Ux>N,则在下个周期需要对子类型x的预留配额Px进行下调。Px下调单位为N,被释放的配额N统一被加回到Pn中。
步骤五:如未出现步骤二和步骤四所述情况,则维持原预留配额值不变。
上述的配额分配算法给出了本实施例中动态限流方法的一种实现方式,只是众多分配算法中的一种,本实施例中的动态限流方法还可以通过其他分配算法实现。
请参见图8,其示出了一种动态限流装置,包括:
子类型划分模块810,用于在限流key下划分若干子类型,并对各子类型设定不同的优先级。
预留配额分配模块820,用于在每个限流周期为所述各子类型分配预留配额。
信息获取模块830,用于获取所述各子类型的统计信息和当前系统健康度。
所述统计信息包括预留配额值、已使用配额值、抢占配额值、限流错误码数和时耗。在所述装置中有专门的共享内存区保存每个子类型的所述统计信息。
配额调整模块840,用于根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的预留配额值进行动态调整。
请参见图9,其示出了本动态限流装置中配额调整装置840的结构图,所述配额调整模块840还包括总配额调整模块841,所述总配额调整模块841用于:
当所述当前系统健康度下降,需要下调所有子类型的总配额值时,从最低优先级的子类型的配额开始丢弃;
当所述当前系统健康度回升,需要上调所有子类型的总配额值时,从最低优先级的子类型的配额开始补偿。
所述配额调整模块840还包括配额上调模块842,所述配额上调模块842用于:
在当前限流周期内,若第一子类型的所述限流错误码数大于零,在下个限流周期对所述第一子类型的所述预留配额进行上调。
所述配额上调模块842还包括判断模块8421,所述判断模块8421用于:
当所述优先级低于所述第一子类型的子类型总配额值不小于一个调整单位时,将所述第一子类型的预留配额值上调一个调整单位;
当所述优先级低于所述第一子类型的子类型总配额值小于一个调整单位时,保持所述第一子类型的预留配额值不变。
所述配额调整模块840还包括配额下调模块843,所述配额下调模块843用于:
在当前限流周期内,若第二子类型的所述预留配额值减去所述已使用配额值大于一个调整单位,在下个限流周期将所述第二子类型的预留配额值下调一个调整单位,所述下调一个调整单位的配额值释放给最低优先级的子类型。
进一步地,所述装置还可以包括业务分配模块800,用于针对不同的业务流量分配不同的限流key。
例如,在上述装置中,所述配额调整模块840用于实现:每种子类型对应的请求优先使用各自的配额,自身配额使用完毕后再从低往高一次使用其他子类型的配额。并且高优先级请求可以使用低优先级请求的配额,低优先级请求不可以使用高优先级的配额值。
若当前申请周期内某子类型出现配额不够的情形,则在下个申请周期划分配额之前,会在原基础上对该子类型配额进行上调。相反,若当前周期内某子类型出现配额空闲过多情况,需要在下周期释放空闲配额。
例如,子类型x的预留配额值为Px,agent在向服务器申请配额时,会附带当前子类型并从算法所指定的子类型预留配额中拿走配额。
在当前限流周期内,若子类型x的所述限流错误码数大于零,判断所述优先级低于所述子类型x的子类型总配额值是否不小于一个调整单位,
若是,将所述子类型x的预留配额值上调一个调整单位;
若否,所述子类型x的预留配额值保持不变。
在当前限流周期内,若子类型y的所述预留配额值减去所述已使用配额值大于一个调整单位,在下个限流周期将所述子类型y的预留配额值下调一个调整单位,所述下调一个调整单位的配额值释放给最低优先级的子类型。
其中,所述调整单位可以为预先设定的一个整数值N。
采用上述装置,在有多个请求时,可以保证优先级较高的请求能优先被处理,在保证系统不雪崩的前提下,将受益最大化。
本实施例还提出了一种服务器,请参见图10,其包括了本实施例上述的动态限流装置,本实施例的服务器可以是图1所示的服务器,所述服务器的结构示意图如图11所示,所述服务器至少包括:输入输出(IO)总线1101、处理器1102、存储器1103、内存1104和通信装置1105,其中,所述输入输出(IO)总线1101分别与自身所属的服务器的其他部件(处理器1102、存储器1103、内存1104和通信装置1105)连接,并且为其他部件提供传送线路。
处理器1102通常管理自身所属的服务器的总体操作。例如,处理器1102执行计算和确认等操作。其中,处理器1102可以是中央处理器(CPU)。
存储器1103存储处理器可读、处理器可执行的软件代码,其包含用于管理处理器1102执行本文描述的功能的指令(即软件执行功能)。
处理器1102可以用于调用存储器1103中存储的应用程序,并具体执行以下操作:
在限流key下划分若干子类型,并对各子类型设定不同的优先级;
在每个限流周期:
为所述各子类型分配预留配额;
获取所述各子类型的统计信息和当前系统健康度;
根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的预留配额值进行动态调整。
内存1104,一般采用半导体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE),RAM是其中最重要的存储器。内存1104是计算机中重要的部件之一,它是与CPU进行沟通的桥梁,计算机中所有程序的运行都是在内存中进行的,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据,只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。
通信装置1105,通常包括一个或多个组件,其允许自身所属的服务器与无线通信系统或网络之间的无线电通信。
所述服务器通过所述通信装置1105和所述终端设备110进行通信,服务器接收来自终端设备110发送的业务请求,然后通过所述服务器的业务分配模块800,对不同业务请求分配不同的限流key;通过子类型划分模块810在限流key下划分若干子类型,并根据请求来源对各子类型设定不同的优先级;预留配额分配模块820在每个限流周期为所述各子类型分配预留配额;信息获取模块830获取所述各子类型的统计信息和当前系统健康度。这里所说的统计信息包括预留配额值、已使用配额值、抢占配额值、限流错误码数和时耗。在限流服务器中有专门的共享内存区保存每个子类型的所述统计信息。配额调整模块840根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的预留配额值进行动态调整。
本发明实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图4到图7所示实施例的方法步骤,具体执行过程可以参见图4到图7所示实施例的具体说明,在此不进行赘述。
本实施例中所示出的结构,仅仅是与本申请方案相关的部分结构,并不构成对本申请方案所应用于其上的设备的限定,具体的设备可以包括比示出的更多或更少的部件,或者组合某些部件,或者具有不同的部件的布置。
本领域技术人员还可以进一步意识到,结合本说明书所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合实现,为了清除地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但这种实现不应认为超出本发明的范围。
通过以上的实施例的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实时方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质,如ROM/RAM、磁碟、光盘中,包括若干指令用以使得一台终端设备,可以是手机、计算机、服务器、空调器、或者网络设备等,执行本发明各个实施例所述的方法。
以上所揭露的仅为本发明的较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (11)
1.一种动态限流方法,其特征在于,包括:
在限流key下划分若干子类型,并对各子类型设定不同的优先级;
在每个限流周期:
为所述各子类型分配预留配额;
获取所述各子类型的统计信息和当前系统健康度;所述统计信息包括预留配额值和已使用配额值;
根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的预留配额值进行动态调整;所述根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的配额值进行动态调整包括:
在当前限流周期内,若第二子类型的所述预留配额值减去所述已使用配额值大于一个调整单位,在下个限流周期将所述第二子类型的预留配额值下调一个调整单位,所述下调一个调整单位的配额值释放给最低优先级的子类型;
每种子类型对应的请求优先使用各自的配额,自身配额使用完毕后再从低往高依次使用其他子类型的配额;并且高优先级请求能够使用低优先级请求的配额,所述低优先级请求不可以使用所述高优先级请求的配额。
2.根据权利要求1所述的一种动态限流方法,其特征在于,所述在限流key下划分若干子类型之前还包括针对不同的业务流量分配不同的限流key。
3.根据权利要求2所述的一种动态限流方法,其特征在于,所述根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的配额值进行动态调整包括:
当所述当前系统健康度下降,需要下调所有子类型的总配额值时,从最低优先级的子类型的配额开始丢弃;
当所述当前系统健康度回升,需要上调所有子类型的总配额值时,从最低优先级的子类型的配额开始补偿。
4.根据权利要求3所述的一种动态限流方法,其特征在于,
所述统计信息包括抢占配额值、限流错误码数和时耗;
所述根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的配额值进行动态调整包括:
在当前限流周期内,若第一子类型的所述限流错误码数大于零,在下个限流周期对所述第一子类型的所述预留配额进行上调。
5.根据权利要求4所述的一种动态限流方法,其特征在于,所述在下个限流周期对所述第一子类型的所述预留配额进行上调之前包括:
当所述优先级低于所述第一子类型的子类型总配额值不小于一个调整单位时,将所述第一子类型的预留配额值上调一个调整单位;
当所述优先级低于所述第一子类型的子类型总配额值小于一个调整单位时,保持所述第一子类型的预留配额值不变。
6.一种动态限流装置,其特征在于,包括:
子类型划分模块,用于在限流key下划分若干子类型,并对各子类型设定不同的优先级;
预留配额分配模块,用于在每个限流周期为所述各子类型分配预留配额;
信息获取模块,用于获取所述各子类型的统计信息和当前系统健康度;所述统计信息包括预留配额值和已使用配额值;
配额调整模块,用于根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的预留配额值进行动态调整;所述配额调整模块还包括配额下调模块,所述配额下调模块用于:
在当前限流周期内,若第二子类型的所述预留配额值减去所述已使用配额值大于一个调整单位,在下个限流周期将所述第二子类型的预留配额值下调一个调整单位,所述下调一个调整单位的配额值释放给最低优先级的子类型;
每种子类型对应的请求优先使用各自的配额,自身配额使用完毕后再从低往高依次使用其他子类型的配额;并且高优先级请求能够使用低优先级请求的配额,所述低优先级请求不可以使用所述高优先级请求的配额。
7.根据权利要求6所述的一种动态限流装置,其特征在于,所述装置还包括业务分配模块,用于针对不同的业务流量分配不同的限流key。
8.根据权利要求7所述的一种动态限流装置,其特征在于,所述配额调整模块还包括总配额调整模块,所述总配额调整模块用于:
当所述当前系统健康度下降,需要下调所有子类型的总配额值时,从最低优先级的子类型的配额开始丢弃;
当所述当前系统健康度回升,需要上调所有子类型的总配额值时,从最低优先级的子类型的配额开始补偿。
9.根据权利要求8所述的一种动态限流装置,其特征在于,所述统计信息包括抢占配额值、限流错误码数和时耗;
所述配额调整模块还包括配额上调模块,所述配额上调模块用于:
在当前限流周期内,若第一子类型的所述限流错误码数大于零,在下个限流周期对所述第一子类型的所述预留配额进行上调;
所述配额上调模块还包括判断模块,所述判断模块用于:
当所述优先级低于所述第一子类型的子类型总配额值不小于一个调整单位时,将所述第一子类型的预留配额值上调一个调整单位;
当所述优先级低于所述第一子类型的子类型总配额值小于一个调整单位时,保持所述第一子类型的预留配额值不变。
10.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行以下步骤:
在限流key下划分若干子类型,并对各子类型设定不同的优先级;
在每个限流周期:
为所述各子类型分配预留配额;
获取所述各子类型的统计信息和当前系统健康度;所述统计信息包括预留配额值和已使用配额值;
根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的预留配额值进行动态调整;所述根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的配额值进行动态调整包括:
在当前限流周期内,若第二子类型的所述预留配额值减去所述已使用配额值大于一个调整单位,在下个限流周期将所述第二子类型的预留配额值下调一个调整单位,所述下调一个调整单位的配额值释放给最低优先级的子类型;
每种子类型对应的请求优先使用各自的配额,自身配额使用完毕后再从低往高依次使用其他子类型的配额;并且高优先级请求能够使用低优先级请求的配额,所述低优先级请求不可以使用所述高优先级请求的配额。
11.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令由处理器加载并执行以下步骤:
在限流key下划分若干子类型,并对各子类型设定不同的优先级;
在每个限流周期:
为所述各子类型分配预留配额;
获取所述各子类型的统计信息和当前系统健康度;所述统计信息包括预留配额值和已使用配额值;
根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的预留配额值进行动态调整所述根据所述统计信息和所述系统健康度,按所述优先级对所述各子类型的配额值进行动态调整包括:
在当前限流周期内,若第二子类型的所述预留配额值减去所述已使用配额值大于一个调整单位,在下个限流周期将所述第二子类型的预留配额值下调一个调整单位,所述下调一个调整单位的配额值释放给最低优先级的子类型;
每种子类型对应的请求优先使用各自的配额,自身配额使用完毕后再从低往高依次使用其他子类型的配额;并且高优先级请求能够使用低优先级请求的配额,所述低优先级请求不可以使用所述高优先级请求的配额。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810242146.5A CN110297698B (zh) | 2018-03-22 | 2018-03-22 | 一种多优先级动态限流方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810242146.5A CN110297698B (zh) | 2018-03-22 | 2018-03-22 | 一种多优先级动态限流方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110297698A CN110297698A (zh) | 2019-10-01 |
CN110297698B true CN110297698B (zh) | 2024-02-13 |
Family
ID=68025714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810242146.5A Active CN110297698B (zh) | 2018-03-22 | 2018-03-22 | 一种多优先级动态限流方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110297698B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992586B (zh) * | 2020-07-10 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 流量控制方法、装置、计算机设备和存储介质 |
CN111930507B (zh) * | 2020-08-14 | 2023-09-08 | 中国工商银行股份有限公司 | 限流方法及装置 |
CN112527524A (zh) * | 2020-12-09 | 2021-03-19 | 北京百度网讯科技有限公司 | 动态限流方法、装置以及电子设备 |
CN112929290B (zh) * | 2021-02-02 | 2023-02-24 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种限流方法、装置、系统、存储介质和设备、以及网关 |
CN114385370B (zh) * | 2022-01-18 | 2022-10-25 | 重庆紫光华山智安科技有限公司 | 内存分配方法、系统、设备及介质 |
CN115114133B (zh) * | 2022-08-05 | 2023-03-14 | 广东车海洋环保科技有限公司 | 基于java的系统自适应限流方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1738287A (zh) * | 2004-08-18 | 2006-02-22 | 华为技术有限公司 | 上送控制器通道限流方法 |
CN101127726A (zh) * | 2007-09-27 | 2008-02-20 | 中兴通讯股份有限公司 | 一种基于业务优先级的流量控制方法及其系统 |
CN107770088A (zh) * | 2017-09-06 | 2018-03-06 | 阿里巴巴集团控股有限公司 | 一种流量控制方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7895353B2 (en) * | 2008-02-29 | 2011-02-22 | Oracle International Corporation | System and method for providing throttling, prioritization and traffic shaping during request processing via a budget service |
-
2018
- 2018-03-22 CN CN201810242146.5A patent/CN110297698B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1738287A (zh) * | 2004-08-18 | 2006-02-22 | 华为技术有限公司 | 上送控制器通道限流方法 |
CN101127726A (zh) * | 2007-09-27 | 2008-02-20 | 中兴通讯股份有限公司 | 一种基于业务优先级的流量控制方法及其系统 |
CN107770088A (zh) * | 2017-09-06 | 2018-03-06 | 阿里巴巴集团控股有限公司 | 一种流量控制方法及装置 |
Non-Patent Citations (1)
Title |
---|
动态调整调度配额的TCSN调度算法;张华;谭献海;赵晋南;刘力浩;;计算机应用研究(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110297698A (zh) | 2019-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110297698B (zh) | 一种多优先级动态限流方法、装置、服务器及存储介质 | |
CN108667748B (zh) | 一种控制带宽的方法、装置、设备和存储介质 | |
EP2193472B1 (en) | Method and apparatus for managing license capacity in a telecommunication network | |
US11977784B2 (en) | Dynamic resources allocation method and system for guaranteeing tail latency SLO of latency-sensitive application | |
US9225668B2 (en) | Priority driven channel allocation for packet transferring | |
US9652150B2 (en) | Global memory sharing method and apparatus, and communications system | |
CN107426274B (zh) | 基于时序的业务应用及监控分析调度的方法和系统 | |
US6282424B1 (en) | Resource controllers for use in a non-unitary service system | |
US20050055694A1 (en) | Dynamic load balancing resource allocation | |
US20140036680A1 (en) | Method to Allocate Packet Buffers in a Packet Transferring System | |
WO2020259208A1 (zh) | 内存调度方法、装置、设备及存储介质 | |
CN111949408A (zh) | 一种边缘计算资源的动态分配方法 | |
CN114155026A (zh) | 一种资源分配方法、装置、服务器及存储介质 | |
US9621438B2 (en) | Network traffic management | |
US20210216371A1 (en) | Low latency distributed counters for quotas | |
CN114640630B (zh) | 一种流量管控方法、装置、设备及可读存储介质 | |
CN115766582A (zh) | 流量控制方法、装置和系统、介质和计算机设备 | |
CN109062707B (zh) | 电子装置及其限制进程间通信的方法、存储介质 | |
JP3803726B2 (ja) | 無線基地局装置における無線リソース管理方法及び無線基地局装置における無線リソース管理方式 | |
CN115834712B (zh) | 一种面向连接型业务的网关资源调度方法 | |
US20220141913A1 (en) | Core network for mobile communication system | |
CN113220458A (zh) | 一种数据库连接池实现负载均衡的实时调度方法和装置 | |
CN117544517A (zh) | 出口带宽管理方法、装置、电子设备、介质及产品 | |
CN114416344A (zh) | 一种计算资源调度方法、装置、设备及机器可读存储介质 | |
CN114390058A (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 |