CN115883472B - 令牌发放方法及相关装置 - Google Patents
令牌发放方法及相关装置 Download PDFInfo
- Publication number
- CN115883472B CN115883472B CN202211517651.9A CN202211517651A CN115883472B CN 115883472 B CN115883472 B CN 115883472B CN 202211517651 A CN202211517651 A CN 202211517651A CN 115883472 B CN115883472 B CN 115883472B
- Authority
- CN
- China
- Prior art keywords
- token
- data
- input data
- token bucket
- water level
- 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 48
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims abstract description 91
- 238000012545 processing Methods 0.000 claims abstract description 26
- 238000004590 computer program Methods 0.000 claims description 7
- 230000002618 waking effect Effects 0.000 claims description 5
- 238000011084 recovery Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000013508 migration Methods 0.000 description 3
- 230000005012 migration Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供的一种令牌发放方法及相关装置,涉及流控技术领域。所述方法:首先,判断当前接收的输入数据的总流量是否超规格;若输入数据的总流量超规格且输入数据包括外部数据和内部数据,则根据外部数据的流量和初始化处理后的令牌桶的水位,对输入数据进行令牌发放;其中,外部数据来自客户端,内部数据来自多个第二节点;若输入数据的总流量未超规格,则根据输入数据的总流量,对输入数据进行令牌发放,从而避免需优先满足读写的数据耗费大量时间进行等待。
Description
技术领域
本发明涉及流控技术领域,具体而言,涉及一种令牌发放方法及相关装置。
背景技术
令牌桶(Token-bucket)是最常用的一种流量控制方法,它是以固定速率生成令牌放入桶中,输入存储***的每份数据均需从令牌桶中获取令牌,没有获取令牌的数据会被阻塞限流。
当存储***中数据的流量在规格内时,令牌消耗速度小于生成速度,令牌桶内会预存未消耗的令牌,直到桶的上限,使得有突发数据进入时,可以直接从桶中获取令牌。而当数据的流量超出规格时,令牌消耗速度大于生成速度,令牌桶内的令牌逐渐减少直至为0,使得数据进入等待阶段。
目前通常是依据存储***的资源指标检测结果,来调整令牌的发放速率,该方式虽然在一定程度上降低了数据在等待阶段的耗时,但其未考虑到存储***内不同类型的数据受延时的影响不同,一些需优先满足读写的数据仍需耗费时间进行等待。
发明内容
为了克服现有技术的不足,本发明实施例提供了一种令牌发放方法及相关装置。
本发明实施例的技术方案可以这样实现:
第一方面,本发明提供一种令牌发放方法,应用于存储***中的第一节点,所述存储***还包括多个第二节点和客户端,所述第一节点与所述客户端和每个所述第二节点均通信连接,所述第一节点内设置有令牌桶,所述方法包括:
判断当前接收的输入数据的总流量是否超规格;
若所述输入数据的总流量超规格且所述输入数据包括外部数据和内部数据,则根据所述外部数据的流量和初始化处理后的令牌桶的水位,对所述输入数据进行令牌发放;其中,所述外部数据来自所述客户端,所述内部数据来自所述多个第二节点;
若所述输入数据的总流量未超规格,则根据所述输入数据的总流量,对所述输入数据进行令牌发放。
可选地,在所述判断当前时刻接收的输入数据的总流量是否超规格的步骤之前,所述方法还包括初始化处理所述令牌桶的步骤,其包括:
获取所述存储***的流量规格值,并根据所述流量规格值,确定所述令牌桶的初始化参数;
按照所述初始化参数对所述令牌桶进行初始化处理,得到初始化处理后的令牌桶。
可选地,所述初始化参数包括单个周期内的令牌生成数和令牌桶的最大容量,所述根据所述流量规格值,确定所述令牌桶的初始化参数的步骤包括:
根据所述流量规格值和预设增量令牌数,计算单个周期内的令牌生成数;
所述流量规格值、所述预设增量令牌数和单个周期内的令牌生成数满足公式:
N=G×T×(1+x)
其中,N为单个周期内的令牌生成数,G为所述流量规格值,x为预设增量令牌数,T为令牌生成周期;
根据所述流量规格值和预设增量规格值,计算所述令牌桶的最大容量;
所述流量规格值、所述预设增量规格值和所述令牌桶的最大容量满足公式:
S=G×(1+y)
其中,S为所述令牌桶的最大容量,G为所述流量规格值,y为预设增量规格值。
可选地,所述根据所述外部数据的流量和初始化处理后的令牌桶的水位,对所述输入数据进行令牌发放的步骤包括:
若所述令牌桶的水位低于预设水位,则将所述内部数据置于等待状态;
根据所述外部数据的流量,确定所述外部数据对应的令牌需求个数;
按照所述外部数据对应的令牌需求个数,将所述令牌桶内的令牌发放给所述外部数据。
可选地,所述根据所述外部数据的流量和初始化处理后的令牌桶的水位,对所述输入数据进行令牌发放的步骤还包括:
间隔预设周期后,获取所述令牌桶内的水位;
若所述令牌桶内的水位不低于所述预设水位,则唤醒处于等待状态的所述内部数据,并根据所述内部数据的流量,确定所述内部数据对应的令牌需求个数;
按照所述内部数据对应的令牌需求个数,将所述令牌桶内的令牌发放给所述内部数据;
若所述令牌桶内的水位低于所述预设水位,则返回执行所述间隔预设周期后,获取所述令牌桶内的水位的步骤,直至所述令牌桶内的水位不低于预设水位。
可选地,所述根据所述输入数据的总流量,对所述输入数据进行令牌发放的步骤包括:
根据所述输入数据的总流量,确定所述输入数据对应的令牌需求总数;
按照所述输入数据对应的令牌需求总数,将所述令牌桶内的令牌发放给所述输入数据。
可选地,所述方法还包括:
统计所述输入数据的令牌发放时长;
根据所述令牌发放时长,修改所述令牌桶的初始化参数;
按照修改后的初始化参数,对所述令牌桶进行初始化处理。
第二方面,本发明提供一种令牌发放装置,应用于存储***中的第一节点,所述存储***还包括多个第二节点和客户端,所述第一节点与所述客户端和每个所述第二节点均通信连接,所述第一节点内设置有令牌桶,所述装置包括:
判断模块,用于判断当前接收的输入数据的总流量是否超规格;
处理模块,用于:
若所述输入数据的总流量超规格且所述输入数据包括外部数据和内部数据,则根据所述外部数据的流量和初始化处理后的令牌桶的水位,对所述输入数据进行令牌发放;其中,所述外部数据来自所述客户端,所述内部数据来自所述多个第二节点;
若所述输入数据的总流量未超规格,则根据所述输入数据的总流量,对所述输入数据进行令牌发放。
第三方面,本发明提供一种第一节点,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如前述第一方面所述的令牌发放方法。
第四方面,本发明提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如前述第一方面所述的令牌发放方法。
相较于现有技术,本发明实施例提供的一种应用于存储***中的第一节点的令牌发放方法,首先,判断当前接收的输入数据的总流量是否超规格;若输入数据的总流量超规格且输入数据包括外部数据和内部数据,则根据外部数据的流量和初始化处理后的令牌桶的水位,对输入数据进行令牌发放;其中,外部数据来自客户端,内部数据来自多个第二节点;若输入数据的总流量未超规格,则根据输入数据的总流量,对输入数据进行令牌发放。由于本发明实施例根据外部数据的流量和初始化处理后的令牌桶的水位,对超规格的输入数据中的外部数据和内部数据发放令牌,从而避免需优先满足读写的数据耗费大量时间进行等待。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的一种存储***的结构示意图;
图2为本发明实施例提供的一种应用场景示意图;
图3为本发明实施例提供的一种令牌发放方法的流程示意图一;
图4为本发明实施例提供的一种令牌桶初始化实现方式的流程示意图;
图5为本发明实施例提供的一种令牌发放方法的流程示意图二;
图6为本发明实施例提供的一种令牌发放装置的功能单元框图;
图7为本发明实施例提供的一种电子设备的结构示意框图。
图标:100-令牌发放装置;101-判断模块;102-处理模块;103-初始化模块;104-调整模块;200-电子设备;210-存储器;220-处理器。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
存储***可以包括客户端和多个节点,如图1所示,客户端与节点1、节点2、…、节点N均通信连接,每个节点均可处理来自客户端的数据读写请求,同时,两两节点间也可相互通信,以进行数据迁徙和数据恢复,也就是说,每个节点均可以接收来自客户端和其余节点的数据。
对于任一个节点,其接收的每份数据均需从该节点的令牌桶内获取令牌,没有获取到令牌的数据会被阻塞限流。
当进入节点的数据的流量在规格内时,令牌消耗速度小于生成速度,令牌桶内会预存未消耗的令牌,直到桶的上限,使得有突发数据进入时,可以直接从桶中获取令牌。而当数据的流量超出规格时,令牌消耗速度大于生成速度,令牌桶内的令牌逐渐减少直至为0,使得数据进入等待阶段。
为了降低数据获取令牌的延时,目前常用的方式通常是依据节点的资源指标检测结果,来调整令牌的发放速率,但该方式未考虑到进入节点的不同类型的数据受延时的影响不同,来自客户端的需优先满足读写的数据仍会耗费时间在等待阶段。
针对现有技术的不足,本发明实施例提供了一种令牌发放方法,下面将进行详细介绍。
在本发明实施例中,为了便于描述本发明实施例的技术方案,将图1所示的存储***中的任一节点(例如节点1)作为第一节点,其余节点作为第二节点,例如,将图1中的节点1作为第一节点时,节点2、节点3、…、节点N则作为第二节点。又例如,将图1中的节点3作为第一节点时,节点1、节点2、节点4、…、节点N则作为第二节点。
本发明实施例提供的令牌发送方法应用于第一节点,如图2所示,第一节点接收来自客户端和多个第二节点的数据,然后再通过执行下述技术方案向接收的数据进行令牌分发。
请参照图3,该令牌发放方法包括步骤S101~S103。
S101,判断当前接收的输入数据的总流量是否超规格。
对于进入第一节点的输入数据,若其总流量超过了整个存储***的流量规格值时,则可判定输入数据的总流量超规格,反之,则判定输入数据的未超规格。
示例性地,假设存储***的流量规格值为800MB/s,当输入数据的总流量为780MB/s时,输入数据的总流量未超规格;当输入数据的总流量为820MB/s时,输入数据的总流量超规格。
在本发明实施例中,令牌桶需要在执行步骤S101之前进行初始化,请参照图4,初始化处理令牌桶的过程可以包括步骤S201和S202。
S201,获取存储***的流量规格值,并根据流量规格值,确定令牌桶的初始化参数。
在本发明实施例中,用户可以通过调用特定接口,设置存储***的流量规格值。
可选地,步骤S201的实现过程可以如下:
S201-1,根据流量规格值和预设增量令牌数,计算单个周期内的令牌生成数。
其中,流量规格值、预设增量令牌数和单个周期内的令牌生成数满足公式:
N=G×T×(1+x)
公式中,N为单个周期内的令牌生成数,G为流量规格值,x为预设增量令牌数,T为令牌生成周期。
S201-2,根据流量规格值和预设增量规格值,计算令牌桶的最大容量。其中,流量规格值、预设增量规格值和令牌桶的最大容量满足公式:
S=G×(1+y)
公式中,S为令牌桶的最大容量,G为流量规格值,y为预设增量规格值。
示例性地,假设存储***的流量规格值为800MB/s,令牌生成周期T为100ms,预设增量令牌数x为1%,预设增量规格值y为20%,利用上述公式计算得到的单个周期内的令牌生成数N=80.0M,令牌桶的最大容量S为960M。
S202,按照初始化参数对令牌桶进行初始化处理,得到初始化处理后的令牌桶。
其中,初始化参数还包括已经细分的数据类型和优先级K={(1,1)(2,1)(3,1)(4,2)},其中第一个参数的1,2,3,4分别表示视频数据、图片数据、文件数据、恢复数据,第二个参数的1,2表示优先级。
初始化后的令牌桶,其在每个T内生成N个令牌,令牌桶的上限为S,令牌桶分发令牌时,根据K统计输入数据内视频数据、图片数据、文件数据、恢复数据的数据量。
S102,若输入数据的总流量超规格且输入数据包括外部数据和内部数据,则根据外部数据的流量和初始化处理后的令牌桶的水位,对输入数据进行令牌发放。
其中,外部数据来自客户端,内部数据来自多个第二节点。
外部数据可以细分为视频数据、图片数据、文件数据、音频数据等,由于外部数据是用户通过客户端传入的,需要优先满足此类数据的读写。
内部数据可以细分为恢复数据和迁徙数据,由于内部数据是存储***为了保证数据可靠性和负载均衡所需要的,其优先级低于外部数据。
由于内部数据只产生于数据恢复场景或数据迁徙场景,因此,本发明实施例中,输入数据存在以下两种情况:(1)输入数据只包括外部数据;(2)输入数据包括外部数据和内部数据。
可以理解地,上述两种情况均可能出现总流量超规格,但“输入数据的总流量超规格且输入数据只包括外部数据”和“输入数据的总流量超规格且输入数据包括外部数据和内部数据”两种情形下令牌的发放方式是不同的。
下面首先对“输入数据的总流量超规格且输入数据包括外部数据和内部数据”情形下令牌的发放方式,即步骤S102的实现过程,进行详细介绍S102-1,若令牌桶的水位低于预设水位,则将内部数据置于等待状态。
其中,预设水位是针对内部数据设置的,可以根据实际需求进行设置。
示例性地,假设令牌桶的最大容量为960M,对应的最高水位为120%,那么可以将预设水位设置为100%,即令牌桶中令牌的数量为800M个。
当零牌桶内的当前水位低于100%时,意味着此时令牌桶内的令牌需优先发送给外部数据,优先级低于外部数据的内部数据则进入等待状态,暂停对其的令牌发放。
S102-2,根据外部数据的流量,确定外部数据对应的令牌需求个数。
其中,外部数据对应的令牌需求个数是指单个周期内需发放给外部数据的令牌个数,其值为外部数据的流量与令牌生成周期的乘积。
示例性地,假设外部数据的流量为500MB/s,令牌生成周期为100ms,则计算得到的令牌需求个数为50M个。
S102-3,按照外部数据对应的令牌需求个数,将令牌桶内的令牌发放给外部数据。
需要注意地是,若外部数据对应的令牌需求个数小于单个周期内的令牌生成数,意味着令牌的生成速率大于令牌桶的消耗速率,则在每个周期,令牌桶还可以预存未消耗的令牌,令牌桶的水位逐渐上升。
若外部数据对应的令牌需求个数大于单个周期内的令牌生成数,意味着令牌的生成速率小于令牌的消耗速率,则在每个周期,令牌桶内令牌的数量不断减少,令牌桶的水位不断下降。
由于令牌桶中令牌是周期性放入的,在将内部数据置于等待状态后,若外部数据的流量未超规格,令牌桶中令牌的消耗速率小于生成速率,令牌桶的水位会逐渐上升,可以通过执行下述步骤S102-4~S102-7来实现对内部数据的令牌发放。
S102-4,间隔预设周期后,获取令牌桶内的水位。
其中,预设周期可以为令牌生成周期。
当令牌的生成速率小于令牌的消耗速率时,令牌桶的水位在每个周期内均会上升,可以每间隔预设周期判断令牌桶内的水位是否回升到预设水位之上。
S102-5,若令牌桶内的水位不低于预设水位,则唤醒处于等待状态的内部数据,并根据内部数据的流量,确定内部数据对应的令牌需求个数。
其中,内部数据对应的令牌需求个数是指单个周期内需发放给内部数据的令牌个数,其值为内部数据的流量与令牌生成周期的乘积。
S102-6,按照内部数据对应的令牌需求个数,将令牌桶内的令牌发放给内部数据。
需要注意地是,若外部数据对应的令牌需求个数与内部数据对应的令牌需求个数之和小于或等于单个周期内的令牌生成数时,意味着令牌的生成速率大于令牌桶的消耗速率,则在每个周期,令牌桶还可以预存未消耗的令牌,令牌桶的水位逐渐上升。
若外部数据对应的令牌需求个数与内部数据对应的令牌需求个数之和大于单个周期内的令牌生成数时,意味着令牌的生成速率小于令牌桶的消耗速率,则在每个周期,令牌桶内令牌的数量不断减少,令牌桶的水位不断下降,当水位又下降至预设水位之下时,需重新将内部数据置于等待状态。
S102-7,若令牌桶内的水位低于预设水位,则返回执行间隔预设周期后,获取令牌桶内的水位的步骤,直至令牌桶内的水位不低于预设水位。
可以理解地,对于处于等待状态的内部数据,只有在令牌桶的水位回升到预设水位之上时,才会被唤醒。
对于“输入数据的总流量超规格且输入数据只包括外部数据”的情形,令牌的发放方式如下:
首先,利用输入数据的总流量与令牌生成周期计算令牌需求个数;
然后,利用令牌桶的当前水位与令牌桶的最大容量计算当前令牌桶内的令牌个数;
若令牌需求个数大于当前令牌桶内的令牌个数,则将输入数据置于等待状态;
若令牌需求个数不大于当前令牌桶内的令牌个数,则从令牌桶中获取令牌需求个数个令牌发送给输入数据。
S103,若输入数据的总流量未超规格,则根据输入数据的总流量,对输入数据进行令牌发放。
可选地,步骤S103的实现过程可以如下:
S103-1,根据输入数据的总流量,确定输入数据对应的令牌需求总数。
其中,输入数据对应的令牌需求总数是指单个周期内需发放给输入数据的令牌个数,其值为输入数据的总流量与令牌生成周期的乘积。
S103-2,按照输入数据对应的令牌需求总数,将令牌桶内的令牌发放给输入数据。
其中,由于输入数据的总流量未超规格,意味着输入数据对应的令牌需求总数不大于单个周期内的令牌生成数,也就是说,令牌的生成速率大于令牌桶的消耗速率,则在每个周期,令牌桶内的令牌的个数是不少于输入数据对应的令牌需求总数。
请参照图5,该令牌发送方法还包括步骤S104~S106。
S104,统计输入数据的令牌发放时长。
在本发明实施例中,可以统计一段时间内进入第一节点的每份输入数据的令牌发放时长,统计方式可以如下:
将输入数据进入第一节点的时间点作为令牌发放的起始时间,将输入数据获得令牌的时间作为令牌发放的结束时间。
可以理解地,令牌发放的结束时间与令牌发放的起始时间差值即为令牌发放时长。
需要注意地是,当输入数据包括外部数据和内部数据时,由于内部数据可能被暂时置于等待状态,因此需将输入数据中内部数据获得令牌的时间作为令牌发放的结束时间。
S105,根据令牌发放时长,修改令牌桶的初始化参数。
可选地,步骤S105的实现过程可以如下:
首先,计算多份输入数据的令牌发放时长的方差;
然后,根据方差所在的区间,将区间对应的修改策略作为初始化参数的修改策略;
最后,按照修改策略对初始化参数进行修改。
在本发明实施例中,由于单个周期内的令牌生成数和令牌桶的最大容量是利用存储***的流量规格值计算得到的,所以可以通过对存储***的流量规格值进行修改,进而修改对单个周期内的令牌生成数和令牌桶的最大容量,也就是说,初始化参数的修改策略为存储***的流量规格值的调整量。
示例性地,假设当前用于计算初始化参数的存储***的流量规格值为800MB/s,得到的单个周期内的令牌生成数为80.8M,令牌桶的最大容量为960M,由于根据一段时间内多份输入数据的令牌发放时长的方差确定的初始化参数的修改策略为将存储***的流量规格值升高20MB/s,因此,按照存储***的流量规格值为820MB/s计算得到的单个周期内的令牌生成数为82.82M,令牌桶的最大容量为984M。
S106,按照修改后的初始化参数,对令牌桶进行初始化处理。
由于,步骤S106的实现原理与上述步骤S202相同,在此不再进行赘述。
下面将采用下述示例对本发明实施例提供的上述方法作进一步说明。
假设令牌桶的最大容量为960M,令牌生成周期为100ms,单个周期内的令牌生成数为80.8M,针对内部数据的预设水位为100%,存储***的流量规格值为800MB/s。
示例一:
在只有外部数据,没有内部数据的情况下,由于每100ms,会生成80.8M格令牌,在外部数据没有超规格的场景下,令牌桶的水位通常会维持在110%-120%之间(满水位是120%)。
外部数据每100ms消耗80M个令牌数,消耗数量小于令牌增加数量,也就是说,在只有外部数据且流量未超规格时,令牌桶的令牌总是足够的。
如果外部数据流量超规格,在消耗完令牌桶中的令牌数后,外部数据将处于等待状态,待新一周期的令牌生成后,才能唤醒外部数据,进行令牌发放。
示例二:
在外部数据流量未超规格且稳定时,第二节点出现磁盘故障,会出现内部数据。
在刚出现内部数据时,由于令牌桶水位维持在110%-120%之间,令牌桶内令牌足够,可以对外部数据和内部数据都进行令牌分发。
内部数据的流量会缓慢增加,令牌桶内令牌的消耗也将慢慢增加,此时令牌桶水位会缓慢降低,直到水位到达100%,此时内部数据将处于等待状态,等待令牌桶水位恢复到100%以上,才会唤醒内部数据,进行令牌发送。
最终外部数据和内部数据总流量将和单个周期内的令牌生成数持平,令牌桶的水位将维持在100%-110%之间。
示例三:
当存储***中存在恢复数据,即外部数据+内部数据的总流量稳定的,忽然外部数据增加。
外部数据增加时,会加速消耗令牌,此时会导致令牌桶水位降低。
当令牌桶水位下降到100%时,内部数据将处于等待状态。
此时将只有外部数据可以获取令牌,令牌桶水位将进入一个短期的下降,然后慢慢回升的变化过程。
当令牌桶水位恢复到100%时,内部数据将被唤醒,此时外部数据+内部数据的总流量将达到一个稳定值,等于单个周期内的令牌生成数,令牌桶的水位将维持在100%-110%之间。
相较于现有技术,本发明实施例的有益效果在于:在输入数据超规格时,根据外部数据的流量对输入数据包括的外部数据进行令牌发放,根据初始化处理后的令牌桶的水位对输入数据包括的内部数据进行令牌发放,使在令牌桶内令牌不足时,优先满足外部数据,延迟内部数据的令牌发放,避免需高优先级的外部数据耗费大量时间处于等待状态。
为了执行上述方法实施例及各个可能的实施方式中的相应步骤,下面分别给出一种令牌发放装置100的实现方式。
请参照图6,令牌发放装置100包括判断模块101、处理模块102、初始化模块103和调整模块104。
判断模块101,用于判断当前接收的输入数据的总流量是否超规格;
处理模块102,用于若输入数据的总流量超规格且输入数据包括外部数据和内部数据,则根据外部数据的流量和初始化处理后的令牌桶的水位,对输入数据进行令牌发放;其中,外部数据来自客户端,内部数据来自多个第二节点;若输入数据的总流量未超规格,则根据输入数据的总流量,对输入数据进行令牌发放。
可选地,初始化模块103用于获取存储***的流量规格值,并根据流量规格值,确定令牌桶的初始化参数;按照初始化参数对令牌桶进行初始化处理,得到初始化处理后的令牌桶。
可选地,初始化参数包括单个周期内的令牌生成数和令牌桶的最大容量,初始化模块103具体用于根据流量规格值和预设增量令牌数,计算单个周期内的令牌生成数;流量规格值、预设增量令牌数和单个周期内的令牌生成数满足公式:N=G×T×(1+x);其中,N为单个周期内的令牌生成数,G为流量规格值,x为预设增量令牌数,T为令牌生成周期;根据流量规格值和预设增量规格值,计算令牌桶的最大容量;流量规格值、预设增量规格值和令牌桶的最大容量满足公式:S=G×(1+y);其中,S为令牌桶的最大容量,G为流量规格值,y为预设增量规格值。
可选地,处理模块102具体用于若令牌桶的水位低于预设水位,则将内部数据置于等待状态;根据外部数据的流量,确定外部数据对应的令牌需求个数;按照外部数据对应的令牌需求个数,将令牌桶内的令牌发放给外部数据。
可选地,处理模块102还具体用于间隔预设周期后,获取令牌桶内的水位;若令牌桶内的水位不低于预设水位,则唤醒处于等待状态的内部数据,并根据内部数据的流量,确定内部数据对应的令牌需求个数;按照内部数据对应的令牌需求个数,将令牌桶内的令牌发放给内部数据;若令牌桶内的水位低于预设水位,则返回执行间隔预设周期后,获取令牌桶内的水位的步骤,直至令牌桶内的水位不低于预设水位。
可选地,处理模块102还具体用于根据输入数据的总流量,确定输入数据对应的令牌需求总数;按照输入数据对应的令牌需求总数,将令牌桶内的令牌发放给输入数据。
可选地,调整模块104用于统计输入数据的令牌发放时长;根据令牌发放时长,修改令牌桶的初始化参数;按照修改后的初始化参数,对令牌桶进行初始化处理。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的令牌发放装置100的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
进一步地,本发明实施例还提供了一种电子设备200,其可以为图2中的第一节点,请参照图7,电子设备200可以包括存储器210和处理器220。
其中,处理器220可以是一个通用的中央处理器(Central Processing Unit,CPU),微处理器,特定应用集成电路(Application-Specific Integrated Circuit,ASIC),或一个或多个用于控制上述方法实施例提供的令牌发放方法的程序执行的集成电路。
存储器210可以是ROM或可存储静态信息和指令的其它类型的静态存储设备,RAM或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmabler-Only MEMory,EEPROM)、只读光盘(CompactdiscRead-Only MEMory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器210可以是独立存在,通过通信总线与处理器220相连接。存储器210也可以和处理器220集成在一起。其中,存储器210用于存储执行本申请方案的机器可执行指令。处理器220用于执行存储器210中存储的机器可执行指令,以实现上述的方法实施例。
本发明实施例还提供一种包含计算机程序的计算机可读存储介质,计算机程序在被执行时可以用于执行上述的方法实施例提供的令牌发放方法中的相关操作。
综上,本发明实施例提供的一种应用于存储***中的第一节点的令牌发放方法,首先,判断当前接收的输入数据的总流量是否超规格;若输入数据的总流量超规格且输入数据包括外部数据和内部数据,则根据外部数据的流量和初始化处理后的令牌桶的水位,对输入数据进行令牌发放;其中,外部数据来自客户端,内部数据来自多个第二节点;若输入数据的总流量未超规格,则根据输入数据的总流量,对输入数据进行令牌发放。由于本发明实施例根据外部数据的流量和初始化处理后的令牌桶的水位,对超规格的输入数据中的外部数据和内部数据发放令牌,从而避免需优先满足读写的数据耗费大量时间进行等待。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种令牌发放方法,其特征在于,应用于存储***中的第一节点,所述存储***还包括多个第二节点和客户端,所述第一节点与所述客户端和每个所述第二节点均通信连接,所述第一节点内设置有令牌桶,所述方法包括:
判断当前接收的输入数据的总流量是否超规格;
若所述输入数据的总流量超规格且所述输入数据包括外部数据和内部数据,则根据所述外部数据的流量和初始化处理后的令牌桶的水位,对所述输入数据进行令牌发放;其中,所述外部数据来自所述客户端,所述内部数据来自所述多个第二节点;
若所述输入数据的总流量未超规格,则根据所述输入数据的总流量,对所述输入数据进行令牌发放;
所述根据所述外部数据的流量和初始化处理后的令牌桶的水位,对所述输入数据进行令牌发放的步骤包括:
若所述令牌桶的水位低于预设水位,则将所述内部数据置于等待状态;
根据所述外部数据的流量,确定所述外部数据对应的令牌需求个数;
按照所述外部数据对应的令牌需求个数,将所述令牌桶内的令牌发放给所述外部数据;
间隔预设周期后,获取所述令牌桶内的水位;
若所述令牌桶内的水位不低于所述预设水位,则唤醒处于等待状态的所述内部数据,并根据所述内部数据的流量,确定所述内部数据对应的令牌需求个数;
按照所述内部数据对应的令牌需求个数,将所述令牌桶内的令牌发放给所述内部数据;
若所述令牌桶内的水位低于所述预设水位,则返回执行所述间隔预设周期后,获取所述令牌桶内的水位的步骤,直至所述令牌桶内的水位不低于预设水位。
2.如权利要求1所述的方法,其特征在于,在所述判断当前接收的输入数据的总流量是否超规格的步骤之前,所述方法还包括初始化处理所述令牌桶的步骤,其包括:
获取所述存储***的流量规格值,并根据所述流量规格值,确定所述令牌桶的初始化参数;
按照所述初始化参数对所述令牌桶进行初始化处理,得到初始化处理后的令牌桶。
3.如权利要求2所述的方法,其特征在于,所述初始化参数包括单个周期内的令牌生成数和令牌桶的最大容量,所述根据所述流量规格值,确定所述令牌桶的初始化参数的步骤包括:
根据所述流量规格值和预设增量令牌数,计算单个周期内的令牌生成数;
所述流量规格值、所述预设增量令牌数和单个周期内的令牌生成数满足公式:
N=G×T×(1+x)
其中,N为单个周期内的令牌生成数,G为所述流量规格值,x为预设增量令牌数,T为令牌生成周期;
根据所述流量规格值和预设增量规格值,计算所述令牌桶的最大容量;
所述流量规格值、所述预设增量规格值和所述令牌桶的最大容量满足公式:
S=G×(1+y)
其中,S为所述令牌桶的最大容量,G为所述流量规格值,y为预设增量规格值。
4.如权利要求1所述的方法,其特征在于,所述根据所述输入数据的总流量,对所述输入数据进行令牌发放的步骤包括:
根据所述输入数据的总流量,确定所述输入数据对应的令牌需求总数;
按照所述输入数据对应的令牌需求总数,将所述令牌桶内的令牌发放给所述输入数据。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
统计所述输入数据的令牌发放时长;
根据所述令牌发放时长,修改所述令牌桶的初始化参数;
按照修改后的初始化参数,对所述令牌桶进行初始化处理。
6.一种令牌发放装置,其特征在于,应用于存储***中的第一节点,所述存储***还包括多个第二节点和客户端,所述第一节点与所述客户端和每个所述第二节点均通信连接,所述第一节点内设置有令牌桶,所述装置包括:
判断模块,用于判断当前接收的输入数据的总流量是否超规格;
处理模块,用于:
若所述输入数据的总流量超规格且所述输入数据包括外部数据和内部数据,则根据所述外部数据的流量和初始化处理后的令牌桶的水位,对所述输入数据进行令牌发放;其中,所述外部数据来自所述客户端,所述内部数据来自所述多个第二节点;
若所述输入数据的总流量未超规格,则根据所述输入数据的总流量,对所述输入数据进行令牌发放;
所述处理模块具体用于若所述令牌桶的水位低于预设水位,则将所述内部数据置于等待状态;根据所述外部数据的流量,确定所述外部数据对应的令牌需求个数;按照所述外部数据对应的令牌需求个数,将所述令牌桶内的令牌发放给所述外部数据;间隔预设周期后,获取所述令牌桶内的水位;若所述令牌桶内的水位不低于所述预设水位,则唤醒处于等待状态的所述内部数据,并根据所述内部数据的流量,确定所述内部数据对应的令牌需求个数;按照所述内部数据对应的令牌需求个数,将所述令牌桶内的令牌发放给所述内部数据;若所述令牌桶内的水位低于所述预设水位,则返回执行所述间隔预设周期后,获取所述令牌桶内的水位的步骤,直至所述令牌桶内的水位不低于预设水位。
7.一种第一节点,其特征在于,所述第一节点包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-5任一项所述的令牌发放方法。
8.一种计算机可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-5任一项所述的令牌发放方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211517651.9A CN115883472B (zh) | 2022-11-29 | 2022-11-29 | 令牌发放方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211517651.9A CN115883472B (zh) | 2022-11-29 | 2022-11-29 | 令牌发放方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115883472A CN115883472A (zh) | 2023-03-31 |
CN115883472B true CN115883472B (zh) | 2024-05-03 |
Family
ID=85764837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211517651.9A Active CN115883472B (zh) | 2022-11-29 | 2022-11-29 | 令牌发放方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115883472B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101420461A (zh) * | 2008-12-08 | 2009-04-29 | 北京邮电大学 | 一种基于业务感知的自适应令牌桶的标记方法 |
CN102420773A (zh) * | 2012-01-05 | 2012-04-18 | 北京网御星云信息技术有限公司 | 一种基于令牌桶算法的数据传输方法及流量控制装置 |
US8473880B1 (en) * | 2010-06-01 | 2013-06-25 | Xilinx, Inc. | Synchronization of parallel memory accesses in a dataflow circuit |
CN105024942A (zh) * | 2015-05-29 | 2015-11-04 | 桂林电子科技大学 | 一种动态流量监控方法 |
CN110198275A (zh) * | 2018-03-28 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种流量控制方法、***、服务器及存储介质 |
CN112751777A (zh) * | 2021-01-06 | 2021-05-04 | 烽火通信科技股份有限公司 | 一种高速率的流量控制方法和装置 |
CN113810307A (zh) * | 2021-10-11 | 2021-12-17 | 上海微盟企业发展有限公司 | 一种数据流量控制方法、***及存储介质 |
CN114745334A (zh) * | 2022-03-31 | 2022-07-12 | 广州易星信息科技有限公司 | 一种分布式***限流方法及*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8965954B2 (en) * | 2008-10-21 | 2015-02-24 | Google Inc. | Always ready client/server data synchronization |
US9178827B2 (en) * | 2013-08-05 | 2015-11-03 | Globalfoundries U.S. 2 Llc | Rate control by token buckets |
-
2022
- 2022-11-29 CN CN202211517651.9A patent/CN115883472B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101420461A (zh) * | 2008-12-08 | 2009-04-29 | 北京邮电大学 | 一种基于业务感知的自适应令牌桶的标记方法 |
US8473880B1 (en) * | 2010-06-01 | 2013-06-25 | Xilinx, Inc. | Synchronization of parallel memory accesses in a dataflow circuit |
CN102420773A (zh) * | 2012-01-05 | 2012-04-18 | 北京网御星云信息技术有限公司 | 一种基于令牌桶算法的数据传输方法及流量控制装置 |
CN105024942A (zh) * | 2015-05-29 | 2015-11-04 | 桂林电子科技大学 | 一种动态流量监控方法 |
CN110198275A (zh) * | 2018-03-28 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种流量控制方法、***、服务器及存储介质 |
CN112751777A (zh) * | 2021-01-06 | 2021-05-04 | 烽火通信科技股份有限公司 | 一种高速率的流量控制方法和装置 |
CN113810307A (zh) * | 2021-10-11 | 2021-12-17 | 上海微盟企业发展有限公司 | 一种数据流量控制方法、***及存储介质 |
CN114745334A (zh) * | 2022-03-31 | 2022-07-12 | 广州易星信息科技有限公司 | 一种分布式***限流方法及*** |
Non-Patent Citations (2)
Title |
---|
Scalable QoS for Distributed Storage Cluster using Dynamic Token Allocation;Yuhan Peng;《2019 35th Symposium on Mass Storage Systems and technologies》;20191104;全文 * |
基于改进令牌桶算法的分级协同流控模型设计;黎明;《通信技术》;20220331;第55卷(第3期);312-317 * |
Also Published As
Publication number | Publication date |
---|---|
CN115883472A (zh) | 2023-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107276827B (zh) | 一种分布式存储***中Qos的实现方法及装置 | |
CN105024933B (zh) | 请求包发送频率的控制方法及装置 | |
US9755935B2 (en) | Method, system and computer storage medium for bandwidth optimization of network application | |
CN111553699B (zh) | 一种资源调度方法及装置 | |
CN110162384A (zh) | 基于Redis分布式锁的超时时间动态调整方法及*** | |
CN107357392A (zh) | 移动终端温升控制方法、移动终端及可读存储介质 | |
CN111506423A (zh) | 一种资源的调度方法、装置、电子设备及存储介质 | |
CN106126335A (zh) | 终端设备的媒体扫描方法及终端设备 | |
CN112131005A (zh) | 一种资源调整策略确定方法和装置 | |
CN110020383B (zh) | 一种页面数据请求处理方法及装置 | |
CN107886424B (zh) | 结算数据处理方法和装置、计算机设备和存储介质 | |
CN109710286A (zh) | ***升级方法、装置、设备和存储介质 | |
CN115883472B (zh) | 令牌发放方法及相关装置 | |
CN115794342A (zh) | 流水线任务剩余时间估算方法、装置及电子设备 | |
CN104038842B (zh) | 一种在cdn网络中预取点播节目信息的方法与设备 | |
CN110349076B (zh) | 数据的处理方法及装置 | |
CN109495531A (zh) | 请求处理方法及装置 | |
CN110413393A (zh) | 集群资源管理方法、装置、计算机集群及可读存储介质 | |
CN114461323A (zh) | 一种卡顿处理方法、装置、电子设备及存储介质 | |
US20210135889A1 (en) | Mining machine and method for limiting computing power | |
CN112463416A (zh) | 消息队列中数据处理的方法、装置、设备及存储介质 | |
CN113439252B (zh) | 终端控制方法、装置、存储介质及电子设备 | |
CN113032207A (zh) | 应用进程的监控方法、装置、电子设备及存储介质 | |
CN108270744B (zh) | 媒体数据访问方法及装置 | |
CN116400871B (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 |