CN116233010A - 流量控制方法、装置、设备及存储介质 - Google Patents
流量控制方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116233010A CN116233010A CN202310226499.7A CN202310226499A CN116233010A CN 116233010 A CN116233010 A CN 116233010A CN 202310226499 A CN202310226499 A CN 202310226499A CN 116233010 A CN116233010 A CN 116233010A
- Authority
- CN
- China
- Prior art keywords
- tokens
- token bucket
- sub
- data transmission
- token
- 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
- 238000000034 method Methods 0.000 title claims abstract description 83
- 230000005540 biological transmission Effects 0.000 claims abstract description 259
- 230000008569 process Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 9
- 238000004064 recycling Methods 0.000 claims description 7
- 238000004891 communication Methods 0.000 abstract description 10
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/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/10—Flow control; Congestion control
- H04L47/29—Flow control; Congestion control using a combination of thresholds
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供一种流量控制方法,涉及通信技术领域,具体涉及数据传输、流量控制等技术领域,可应用于文件传输、消费者流量控制等场景下。具体实现方案包括:消耗总令牌桶中的令牌对用户请求传输的数据进行传输;当用户的数量和至少一个用户需要的第一数据传输流量达到预设条件时,为每个用户生成一个子令牌桶,向子令牌桶中分配总令牌桶中的令牌至令牌数量达到第二令牌数量,消耗子令牌桶中的令牌,对子令牌桶对应的用户请求传输的数据进行传输;调整子令牌桶中令牌的数量,使子令牌桶中的令牌对应的第二数据传输流量与用户的第一数据传输流量的差值小于第一流量阈值。本公开可以减少用户之间的流量竞争,提高流量资源利用率。
Description
技术领域
本公开涉及通信技术领域,具体涉及数据传输、数据监控、流量控制等技术领域,可应用于文件传输、消费者流量控制等场景下,尤其涉及一种流量控制方法、装置、设备及存储介质。
背景技术
数据的生产者可以将数据发布在消息队列中,消费者可以从消息队列中消费生产者发布的数据。生成者发布数据所消耗的流量资源可以称为发布流量,消费者消费数据所消耗的流量资源可以称为订阅流量。当订阅流量过多时,消息队列所在的服务器会由于吞吐量过大而过载,影响了消息队列的稳定性和可用性。通过对订阅流量进行控制,可以限制消息队列所在的服务器的吞吐量,以提高消息队列的稳定性和可用性。
目前,对订阅流量进行控制的方案可以包括:面向每一个消费者进行流量控制的方案、或者面向消费者整体进行流量控制的方案。其中,面向每一个消费者进行流量控制的方案是指:根据每个消费者的订阅流量是否达到流量控制阈值,分别对每个消费者的订阅流量进行控制。面向消费者整体进行流量控制的方案是指:根据所有消费者的订阅流量整体是否达到整体流量控制阈值,从所有消费者的整体订阅流量进行控制。
但是,上述面向每一个消费者进行流量控制的方案中,部分订阅流量未达到流量控制阈值的消费者的连接上存在空闲资源,资源利用率不高。而上述面向消费者整体进行流量控制的方案中,由于不同消费者的流量消耗速度不同,导致消费者之间存在流量竞争,严重影响了部分消费者的消费体验。
发明内容
本公开提供了一种流量控制方法、装置、设备及存储介质,能够有效减少消费者之间的流量竞争,充分利用整体流量资源,提高流量资源的利用率。
根据本公开的第一方面,提供了一种流量控制方法,所述方法包括:
通过消耗总令牌桶中的令牌,对至少一个用户分别请求传输的第一目标数据进行传输,总令牌桶中令牌的数量不超过第一令牌数量;响应于检测到用户的数量和至少一个用户需要的数据传输流量达到预设条件,通过消耗每个用户对应的子令牌桶中的令牌,分别对每个用户请求传输的第一目标数据进行传输,子令牌桶中的令牌来自总令牌桶;根据用户需要的第一数据传输流量,调整用户对应的子令牌桶中令牌的数量,使子令牌桶中的令牌对应的第二数据传输流量与第一数据传输流量的差值小于第一流量阈值。
根据本公开的第二方面,提供了一种流量控制装置,装置包括:传输单元、调整单元。
传输单元,用于通过消耗总令牌桶中的令牌,对至少一个用户分别请求传输的第一目标数据进行传输,总令牌桶中令牌的数量不超过第一令牌数量;传输单元,还用于响应于检测到用户的数量和至少一个用户需要的数据传输流量达到预设条件,通过消耗每个用户对应的子令牌桶中的令牌,分别对每个用户请求传输的第一目标数据进行传输,子令牌桶中的令牌来自总令牌桶;调整单元,用于在传输单元对第一目标数据进行传输的过程中,对子令牌桶中令牌的数量进行调整,使子令牌桶中的令牌对应的第二数据传输流量与第一数据传输流量的差值小于第一流量阈值。
根据本公开的第三方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面所述的方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使计算机执行根据第一方面所述的方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据第一方面所述的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1为本公开实施例提供的流量控制方法的流程示意图;
图2为本公开实施例提供的一种令牌数量调整方法的流程示意图;
图3为本公开实施例提供的从第二目标子令牌桶中回收令牌的一种实现流程示意图;
图4为本公开实施例提供的流量控制方法的另一流程示意图;
图5为本公开实施例提供的流量控制方法的又一流程示意图;
图6为本公开实施例提供的流量控制装置的组成示意图;
图7为本公开实施例提供的可以用来实施本公开的实施例的示例电子设备700的示意性框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
应当理解,在本公开各实施例中,字符“/”一般表示前后关联对象是一种“或”的关系。术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
数据的生产者可以将数据发布在消息队列中,消费者可以从消息队列中消费生产者发布的数据。生产者发布数据所消耗的流量资源可以称为发布流量,消费者消费数据所消耗的流量资源可以称为订阅流量。当订阅流量过多时,消息队列所在的服务器会由于吞吐量过大而过载,影响了消息队列的稳定性和可用性。通过对订阅流量进行控制,可以限制消息队列所在的服务器的吞吐量,以提高消息队列的稳定性和可用性。
例如,生产者为某个视频文件的发布者,消费者为这个视频文件的观看者。在这个场景下,数据指的是这个视频文件;发布流量就是生产者发布这个视频文件所消耗的流量资源,订阅流量就是消费者加载这个视频文件所消耗的流量资源。当有大量的消费者同时加载这个视频文件时,就有可能造成网络拥堵、卡顿等问题,此时就需要控制消费者加载这个视频文件所消耗的流量来提高消息队列的稳定性和可用性。
目前,对订阅流量进行控制的方案可以包括:面向每一个消费者进行流量控制的方案、或者面向消费者整体进行流量控制的方案。其中,面向每一个消费者进行流量控制的方案是指:根据每个消费者的订阅流量是否达到流量控制阈值,分别对每个消费者的订阅流量进行控制。面向消费者整体进行流量控制的方案是指:根据所有消费者的订阅流量整体是否达到整体流量控制阈值,从所有消费者的整体订阅流量进行控制。
例如,比如有10个消费者,面向每一个消费者进行流量控制的方案就是根据这10个人中每一个人的订阅流量是否达到流量控制阈值,分别对这10个人中每一个人的订阅流量进行控制,如某一个人的订阅流量达到了流量控制阈值,则对这个人的订阅流量进行限制。面向消费者整体进行流量控制的方案是指,当这10个人的订阅流量全部加起来的总值达到整体流量控制阈值时,对整体订阅流量进行限制。
但是,上述面向每一个消费者进行流量控制的方案中,部分订阅流量未达到流量控制阈值的消费者的连接上存在空闲资源,资源利用率不高。而上述面向消费者整体进行流量控制的方案中,由于不同消费者的流量消耗速度不同,导致消费者之间存在流量竞争,严重影响了部分消费者的消费体验。
例如,面向每一个消费者进行流量控制的方案中,假设消费者1和消费者2都有100个单位的流量资源,但消费者1只需要80个单位,而消费者2需要110个单位,此时消费者1剩下的20个单位成为了空闲资源,消费者2无法利用消费者1的空闲资源,导致资源利用率不高。
又例如,面向消费者整体进行流量控制的方案中,假设整体有100个单位的流量资源供消费者3和消费者4使用,消费者3和消费者4都需要60个单位,而消费者3的消费速度比消费者4快,就会导致消费者3先消耗完60个单位,留给消费者4的资源不够用,消费者3和消费者4之间存在流量竞争,严重影响了消费者4的消费体验。
在此背景技术下,本公开提供了一种流量控制方法,可以根据用户数量和用户使用的流量资源的变化控制为每个用户分配的流量资源、以及对所有用户的整体流量资源进行限制,能够充分利用整体流量资源,提高流量资源利用率,同时有效减少用户之间的流量竞争,降低网络阻塞。
其中,用户可以是数据的消费者,也可以是数据的生产者。本公开实施例将以用户为消费者为例进行示例性说明,但对用户的具体类别不作限制。
示例性地,该流量控制方法的执行主体可以是计算机或服务器,或者还可以是其他具有数据处理能力的设备。在此对该方法的执行主体不作限制。
例如,服务器可以是维护消息队列的服务器,消息队列可以是数据生产者向消费者传输数据的渠道或平台。
一些实施例中,服务器可以是单独的一个服务器,或者,也可以是由多个服务器构成的服务器集群。部分实施方式中,服务器集群还可以是分布式集群。本公开对服务器的具体实现方式也不作限制。
图1为本公开实施例提供的流量控制方法的流程示意图。如图1所示,该方法可以包括:
S101、通过消耗总令牌桶中的令牌,对至少一个用户分别请求传输的第一目标数据进行传输,总令牌桶中令牌的数量不超过第一令牌数量。
示例性地,令牌桶是一种控制数据传输的机制。令牌桶中可以包括令牌,在传输数据时,可以通过消耗令牌桶中的令牌,来对数据进行传输,从而可以实现根据令牌桶中的令牌来控制数据传输的速度、数据传输流量等。其中,总令牌桶在消耗令牌的同时,可以按照预设速率生成新的令牌。预设速率可以是每秒生成100个、每秒生成50个等,在此对预设速率的大小不作限制。且,总令牌桶中令牌的数量不超过第一令牌数量,第一令牌数量指的是总令牌桶的最大容量。
例如,以用户观看某个视频文件为例,视频文件的生产者可以将视频文件传输到消息队列中,当某个消费者用户想要观看视频文件时,可以通过手机、电脑等终端设备向消息队列的服务器发送下载或观看该视频文件的请求,该请求即第一数据传输请求。消息队列的服务器可以接收第一数据传输请求。此时,这个视频文件就相当于第一目标数据,第一数据传输请求用于请求传输第一目标数据。
S102、响应于检测到用户的数量和至少一个用户需要的数据传输流量达到预设条件,通过消耗每个用户对应的子令牌桶中的令牌,分别对每个用户请求传输的第一目标数据进行传输,子令牌桶中的令牌来自总令牌桶。
示例性地,例如,当数据到达设备(如服务器)时,服务器首先可以根据数据的大小从用户对应的子令牌桶中取出与数据大小相当的令牌数量用来传输数据。子令牌桶中的令牌是由总令牌桶分配的。令牌桶中的每一个令牌可以代表一个或多个字节。如果令牌桶中存在令牌,则允许发送数据;如果令牌桶中不存在令牌,则不允许发送数据。数据越大,所需的数据传输流量越大,消耗的令牌越多;数据越小,所需的数据传输流量越小,消耗的令牌越少。
示例性地,在执行S102,通过消耗子令牌桶中的令牌,对子令牌桶对应的用户请求传输的第一目标数据进行传输的过程中,可以执行S103。
S103、根据用户需要的第一数据传输流量,调整用户对应的子令牌桶中令牌的数量,使子令牌桶中的令牌对应的第二数据传输流量与第一数据传输流量的差值小于第一流量阈值。
示例性地,在一些实现方式中,第一流量阈值可以为最小调整粒度对应的数据传输流量,其中,最小调整粒度对应的数据传输流量可以为预设值,如最小调整粒度对应的数据传输流量可以为1兆(MB)、2MB等,在此对最小调整粒度对应的数据传输流量不作限制。
例如,以第二令牌数量为0为例,对某个消费者X,在上述S102中,当消费者的数量和至少一个消费者需要的数据传输流量达到预设条件时,为该消费者X生成的子令牌桶中令牌的数量为0。此时,对消费者X请求传输的第一目标数据进行传输时,消费者X对应的子令牌桶中没有令牌可消耗。可以暂时用原有的总令牌桶中的令牌对消费者X请求传输的第一目标数据进行传输。在对第一目标数据进行传输的过程中,可以对消费者X对应的子令牌桶中令牌的数量进行调整,使消费者X对应的子令牌桶中的令牌对应的数据传输流量和消费者X的数据传输流量之间的差值小于最小调整粒度对应的数据传输流量。
类似地,对于每个用户,均可以按照上述对消费者X对应的子令牌桶中令牌的数量进行调整的方式,对每个用户X对应的子令牌桶中令牌的数量进行调整。
本公开实施例中,可以提供一个总令牌桶。本公开可以按照上述令牌桶的数据传输控制原理,通过消耗总令牌桶中的令牌进行传输。例如,在S102中,可以响应于检测到用户的数量和至少一个用户需要的数据传输流量达到预设条件,通过消耗每个用户对应的子令牌桶中的令牌,对第一目标数据进行传输。第一目标数据所需的数据传输流量越大,第一目标数据消耗的令牌越多;第一目标数据所需的数据传输流量越小,第一目标数据消耗的令牌越少。
本公开在通过消耗总令牌桶中的令牌,对用户请求传输的第一目标数据进行传输的过程中,当用户的数量和至少一个用户需要的数据传输流量达到预设条件时,通过为每个用户生成一个对应的子令牌桶,向每个子令牌桶中分配总令牌桶中的令牌至子令牌桶中令牌的数量达到第二令牌数量,并通过消耗子令牌桶中的令牌,对子令牌桶对应的用户请求传输的第一目标数据进行传输,可以有效减少用户之间的流量竞争。在对第一目标数据进行传输的过程中,通过调整子令牌桶中令牌的数量,使子令牌桶中的令牌对应的数据传输流量与子令牌桶对应的用户的数据传输流量之间的差值小于第一流量阈值,可以减少子令牌桶对应的用户所占用的冗余流量资源,从而减少了流量资源的浪费,提高了流量资源的利用率。也即,本公开既可以有效减少用户之间的流量竞争,又可以减少子令牌桶对应的用户所占用的冗余流量资源,从而减少流量资源的浪费,提高流量资源的利用率。
例如,以总令牌桶为A桶,子令牌桶为B桶为例,本公开实施例中,可以通过消耗A桶中的令牌对用户请求传输的数据进行传输。在消耗A桶中的令牌对用户请求传输的数据进行传输的过程中,当用户的数量和至少一个用户需要的数据传输流量达到预设条件时,可以为每个用户生成一个对应的B桶,并向每个B桶中分配A桶中的令牌至B桶中令牌的数量达到第二令牌数量。然后,可以通过消耗B桶中的令牌,对B对应的用户请求传输的数据进行传输。由于不同的用户对应的数据是通过消耗各自对应的B桶中的令牌进行传输,从而有效减少可不同用户之间的流量竞争。
在消耗B桶中的令牌,对B对应的用户请求传输的数据进行传输的过程中,可以通过调整B桶中令牌的数量,使B中的令牌对应的数据传输流量与B对应的用户的数据传输流量之间的差值小于第一流量阈值。在进一步调整B桶中令牌的数量,使其满足前述条件时,可以减少B桶对应的用户所占用的冗余流量资源,从而减少了流量资源的浪费,提高了流量资源的利用率。
可选地,子令牌桶中的令牌对应的第二数据传输流量与第一数据传输流量的差值小于第一流量阈值指的是,子令牌桶中的令牌对应的第二数据传输流量与第一数据传输流量的差值的绝对值小于第一流量阈值。
可选地,本公开实施例中,上述预设条件指的是用户的数量大于预设用户数量,且总令牌桶中消耗的令牌对应的数据传输流量大于第二流量阈值。
示例性地,预设用户数量是指大于1的任何一个数值,在此对预设用户数量的具体值不作限制,例如,预设用户数量可以是1,也可以是2、3、4、5等。第二流量阈值指总令牌桶的流量阈值,第二流量阈值可以是预设值,在此对第二流量阈值的大小不作限制。例如,第二流量阈值可以总令牌桶中的全部令牌(如第一令牌数量的令牌)对应的数据传输流量的80%对应的值。
可选地,本公开实施例中,在执行步骤S102之前,需要为每个用户生成一个对应的子令牌桶,并向每个子令牌桶中分配总令牌桶中的令牌至子令牌桶中令牌的数量达到第二令牌数量。
示例性地,当用户的数量和至少一个用户需要的数据传输流量达到预设条件时,可以为每个用户生成一个对应的子令牌桶。在为每个用户生成一个对应的子令牌桶后,可以向每个子令牌桶中分配总令牌桶中的令牌至子令牌桶中令牌的数量达到第二令牌数量,并通过消耗子令牌桶中的令牌,对子令牌桶对应的用户请求传输的第一目标数据进行传输。
本实施例通过为每个用户生成一个对应的子令牌桶,向每个子令牌桶中分配总令牌桶中的令牌至子令牌桶中令牌的数量达到第二令牌数量,并通过消耗子令牌桶中的令牌,对子令牌桶对应的用户请求传输的第一目标数据进行传输,可以有效减少用户之间的流量竞争。
可选地,本公开实施例中,根据用户需要的第一数据传输流量调整用户对应的子令牌桶中令牌的数量,使子令牌桶中的令牌对应的第二数据传输流量大于第一数据传输流量,且第二数据传输流量和第一数据传输流量的差值小于第一流量阈值。
示例性地,在对第一目标数据进行传输的过程中,可以对消费者X对应的子令牌桶中令牌的数量进行调整,使消费者X对应的子令牌桶中的令牌对应的数据传输流量大于消费者X的数据传输流量,且消费者X对应的子令牌桶中的令牌对应的数据传输流量和消费者X的数据传输流量之间的差值小于最小调整粒度对应的数据传输流量。
本实施例通过将消费者X对应的子令牌桶中令牌的数量调整至子令牌桶中的令牌对应的第二数据传输流量大于第一数据传输流量,且第二数据传输流量和第一数据传输流量的差值小于第一流量阈值,使每个用户对应的子令牌桶中令牌的数量都尽可能满足传输第一数据传输流量需要的令牌数量,减少了用户之间的竞争。
可选地,以上介绍了用户的数量和至少一个用户需要的数据传输流量达到预设条件的情况。当用户的数量和至少一个用户需要的数据传输流量未达到预设条件时分为两种情况,第一种是当用户数量等于1,且总令牌桶中消耗的令牌对应的数据传输流量大于第一流量阈值时,可以仅基于总令牌桶对用户的流量资源进行控制,如:限制用户的数据传输流量不超过上述第一流量阈值。第二种是当用户数量等于1,且总令牌桶中消耗的令牌对应的数据传输流量不大于(小于或等于)第一流量阈值时,不触发流量控制,不执行其他操作。
可选地,在其他一些实现方式中,第一流量阈值也可以为大于最小调整粒度对应的数据传输流量,本公开对第一流量阈值的大小不作限制。当第一流量阈值为大于最小调整粒度对应的数据传输流量时,可以为每个子令牌桶预留一部分闲置令牌,以应对子令牌桶对应的用户的数据传输流量发生突然增长,提高用户的消费体验。
图2为本公开实施例提供的一种令牌数量调整方法的流程示意图。如图2所示,一些实施例中,上述根据用户需要的第一数据传输流量调整用户对应的子令牌桶中令牌的数量的步骤,可以包括:
S201、对每个第一目标子令牌桶,按照预设周期检测第一目标子令牌桶中的令牌对应的第二数据传输流量、和第一目标子令牌桶对应的目标用户的第三数据传输流量,第一目标子令牌桶为任意一个子令牌桶。
其中,第一目标子令牌桶可以是任意一个上述子令牌桶。对每个第一目标子令牌桶,可以按照预设周期检测该第一目标子令牌桶中的令牌对应的第二数据传输流量、和该第一目标子令牌桶对应的目标用户的第三数据传输流量。例如,第一目标子令牌桶为子令牌桶1,则S201中可以按照预设周期检测子令牌桶1中的令牌对应的第二数据传输流量,和子令牌桶1对应的目标用户的第三数据传输流量。
示例性地,预设周期可以为1分钟、3分钟、5分钟等,预设周期可以为预设值,在此对预设周期的大小不作限制。
例如,以预设周期为3分钟为例,S201中可以每隔三分钟检测一次每个子令牌桶(即第一目标子令牌桶)中的令牌数量和每个子令牌桶对应的目标用户的第三数据传输流量。
在检测到第一目标子令牌桶中的令牌对应的第二数据传输流量和第一目标子令牌桶对应的目标用户的第三数据传输流量后,可以根据二者的大小,执行S202或S203。
S202、在每个预设周期内,当第一目标子令牌桶中的令牌对应的第二数据传输流量小于目标用户的第三数据传输流量时,继续从总令牌桶中选择预设数量的令牌分配至第一目标子令牌桶中。
示例性地,以第一目标子令牌桶为B1,B1对应的目标用户为用户1为例,在任意一个预设周期内,当B1中的令牌对应的第二数据传输流量小于用户1的第三数据传输流量(即用户1实际所需的数据传输流量)时,可以继续从总令牌桶中选择预设数量的令牌分配至B1中。
其中,预设数量可以为上述最小调整粒度对应的数据传输流量所对应的令牌数量。也即,预设数量的令牌可以提供最小调整粒度对应的数据传输流量。
例如,假设预设数量为5,在一个预设周期内,如果检测到某个用户需要20个令牌来传输数据,此时他的子令牌桶中只有10个令牌,那么从总令牌桶中先分配5个令牌至这个用户的子令牌桶。
S203、在每个预设周期内,当第一目标子令牌桶中的令牌对应的第二数据传输流量大于目标用户的第三数据传输流量,且第一目标子令牌桶中的令牌对应的第二数据传输流量与目标用户的第三数据传输流量之间的差值大于或等于第一流量阈值时,从第一目标子令牌桶中选择预设数量的令牌回收至总令牌桶中;其中,预设数量的令牌对应的第四数据传输流量小于或等于第一流量阈值。
示例性地,同样以第一目标子令牌桶为B1,B1对应的目标用户为用户1为例,在任意一个预设周期内,当B1中的令牌对应的第二数据传输流量大于用户1的第三数据传输流量,且B1中的令牌对应的第二数据传输流量与用户1的第三数据传输流量之间的差值大于或等于第一流量阈值时,可以从B1中选择预设数量的令牌回收至总令牌桶中。
例如,假设第一流量阈值等于预设数量的令牌对应的第四数据传输流量,预设数量为5,在一个预设周期内,如果检测到某个用户需要10个令牌来传输数据,而此时他的子令牌桶中有30个令牌,多出了20个令牌,且多出的20个令牌数量大于预设数量(即该用户对应的子令牌桶中的令牌对应的第二数据传输流量与该用户的第三数据传输流量之间的差值大于第一流量阈值时),则可以在当前周期内从多余的20个令牌中选择5个回收至总令牌桶中。
通过上述S201-S203,即可以实现在对第一目标数据进行传输的过程中,对子令牌桶中令牌的数量进行调整,使子令牌桶中的令牌对应的第二数据传输流量大于子令牌桶对应的用户的第三数据传输流量,且子令牌桶中的令牌对应的第二数据传输流量与子令牌桶对应的用户的第三数据传输流量之间的差值小于第一流量阈值。
本实施例通过周期性检测第一目标子令牌桶中的令牌对应的第二数据传输流量和第一目标子令牌桶对应的目标用户的第三数据传输流量,并在第一目标子令牌桶中的令牌对应的第二数据传输流量大于目标用户的第三数据传输流量,且第一目标子令牌桶中的令牌对应的第二数据传输流量与目标用户的第三数据传输流量之间的差值大于或等于第一流量阈值时,从第一目标子令牌桶中选择预设数量的令牌回收至总令牌桶中,以及,在第一目标子令牌桶中的令牌对应的第二数据传输流量小于目标用户的第三数据传输流量时,继续从总令牌桶中选择预设数量的令牌分配至第一目标子令牌桶中,可以在减少子令牌桶对应的用户所占用的冗余流量资源,提高资源利用率的同时,降低对子令牌桶中令牌的调整幅度,并使得对子令牌桶中令牌的调整能够更符合用户流量需求,提高用户使用流量资源的稳定性。
一些实施例中,上述S202可以包括:在每个预设周期内,当第一目标子令牌桶中的令牌对应的第二数据传输流量小于目标用户的第三数据传输流量,且总令牌桶中盈余的令牌数量大于或等于预设数量时,继续从总令牌桶中选择预设数量的令牌分配至第一目标子令牌桶中。
该流量控制方法还可以包括:在每个预设周期内,当第一目标子令牌桶中的令牌对应的第二数据传输流量小于目标用户的第三数据传输流量,且总令牌桶中盈余的令牌数量小于预设数量时,从第二目标子令牌桶中回收预设数量的令牌,并分配至第一目标子令牌桶中,第二目标子令牌桶为令牌数量大于第三令牌数量的子令牌桶,第三令牌数量为根据第一令牌数量和用户的数量得到的平均令牌数量。
示例性地,在本公开实施例中,当第一目标子令牌桶中的令牌对应的第二数据传输流量小于目标用户的第三数据传输流量时,总令牌桶中盈余的令牌数量可能大于或等于预设数量,也可能小于预设数量。当总令牌桶中盈余的令牌数量大于或等于预设数量时,可以继续从总令牌桶中选择预设数量的令牌分配至第一目标子令牌桶中。当总令牌桶中盈余的令牌数量小于预设数量时,需要从第二目标子令牌桶中回收预设数量的令牌,并分配至第一目标子令牌桶中。
第二目标子令牌桶的确定方式可以包括:根据第一令牌数量和用户的数量计算平均令牌数量,得到第三令牌数量;将令牌数量大于第三令牌数量的子令牌桶作为第二目标子令牌桶。
示例性地,假设存在用户1、用户2、用户3,总令牌桶为A,用户1对应有子令牌桶B1,用户2对应有子令牌桶B2,用户3对应有子令牌桶B3,当B1中的令牌对应的第二数据传输流量小于用户1的第三数据传输流量时,A中盈余的令牌数量可能大于或等于预设数量,也可能小于预设数量。当A中盈余的令牌数量大于或等于预设数量时,可以继续从A中选择预设数量的令牌分配至B1中。当A中盈余的令牌数量小于预设数量时,可以先用A的第一令牌数量除以用户数量(用户数量为3)得到一个平均令牌数量,该平均令牌数量即为第三令牌数量;然后,将令牌数量大于第三令牌数量的子令牌桶作为第二目标子令牌桶,如假设B2的令牌数量大于第三令牌数量,则B2可以为第二目标子令牌桶,可以从B2中回收预设数量的令牌,并分配至B1中。
本实施例中,在第一目标子令牌桶中的令牌对应的第二数据传输流量小于目标用户的第三数据传输流量,可以区分总令牌桶中盈余的令牌数量小于预设数量,或者总令牌桶中盈余的令牌数量大于或等于预设数量两种场景,根据总令牌桶中盈余的令牌数量,确定继续从总令牌桶中向第一目标子令牌桶分配令牌,或者,从其他子令牌桶中向第一目标子令牌桶分配令牌,可以实现更灵活地对子令牌桶中令牌的数量进行调整,能够进一步减少用户之间的流量竞争。
可选地,上述当总令牌桶中盈余的令牌数量小于预设数量,从第二目标子令牌桶中回收预设数量的令牌,并分配至第一目标子令牌桶中的场景中,的第一目标子令牌桶中已有的令牌数量小于上述第三令牌数量。当第一目标子令牌桶中已有的令牌数量大于或等于上述第三令牌数量时,也可以不再为其增加令牌数量。
一些实施例中,上述第二目标子令牌桶可以包括多个。图3为本公开实施例提供的从第二目标子令牌桶中回收令牌的一种实现流程示意图。如图3所示,上述从第二目标子令牌桶中回收预设数量的令牌,并分配至第一目标子令牌桶中的步骤,可以包括:
S301、从多个第二目标子令牌桶中确定令牌数量最多的第三目标子令牌桶。
示例性地,在得到多个第二目标子令牌桶后,可以从多个第二目标子令牌桶中,选择拥有令牌数量比平均令牌数量高出最多的一个子令牌桶,这个子令牌桶就是第三目标子令牌桶。
例如,有三个用户,用户1的子令牌桶中有50个令牌,用户2的子令牌桶中有60个令牌,用户3的子令牌桶中有10个令牌,若此时计算出的第三令牌数量为40,其中,用户1和用户2分别对应的子令牌桶的令牌数量均大于第三令牌数量,则,第二目标子令牌桶可以包括用户1对应的子令牌桶、用户2对应的子令牌桶。用户2对应的子令牌桶中的令牌数量最多,可以确定用户2对应的子令牌桶为第三目标子令牌桶。
S302、从第三目标子令牌桶中回收预设数量的令牌,并分配至第一目标子令牌桶中。
例如,如果已经确定了用户2对应的子令牌桶为第三目标子令牌桶,假设预设数量为10,就从用户2对应的子令牌桶中回收10个令牌并分配至第一目标子令牌桶中。
本实施例通过从令牌数量大于第三令牌数量的所有第二目标子令牌桶中选出令牌数量最多的子令牌桶作为第三目标子令牌桶,并从中回收预设数量的令牌,分配至第一目标子令牌桶中,实现了优先从流量资源占用最多的用户对应的子令牌桶中回收流量资源给其他流量资源较少的用户,保证了更多用户的流量体验。
图4为本公开实施例提供的流量控制方法的另一流程示意图。如图4所示,该流量控制方法还可以包括:
S401、响应于新用户的第二数据传输请求,为新用户生成一个对应的子令牌桶,第二数据传输请求用于请求传输第二目标数据。
其中,新用户是指新加入消息队列的用户。第二数据传输请求可以参考上述第一数据传输请求。为便于区别描述,新用户请求传输的数据可以称为第二目标数据。
示例性地,接入一个新用户时,服务器可以为新用户生成一个对应的子令牌桶。对于新用户,子令牌桶的初始令牌数量可以为0。
S402、当总令牌桶中盈余的令牌数量大于或等于预设数量时,从总令牌桶中选择预设数量的令牌分配至新用户对应的子令牌桶中,并通过消耗新用户对应的子令牌桶中的令牌,对第二目标数据进行传输。
例如,当接入一个新用户时,总令牌桶中盈余的令牌数量为20,预设数量设为10,总令牌桶中盈余的令牌数量大于预设数量,则可以从总令牌桶中选择10个令牌分配至新用户对应的子令牌桶中,并通过消耗新用户对应的子令牌桶中的令牌,对第二目标数据进行传输。
S403、在对第二目标数据进行传输的过程中,当总令牌桶中盈余的令牌数量大于或等于新用户的第五数据传输流量时,对新用户对应的子令牌桶中令牌的数量进行调整,使新用户对应的子令牌桶中的令牌对应的第六数据传输流量大于新用户的第五数据传输流量,且新用户对应的子令牌桶中的令牌对应的第六数据传输流量与新用户的第五数据传输流量之间的差值小于第一流量阈值。
示例性地,当总令牌桶中盈余的令牌数量大于或等于新用户的第五数据传输流量时,对新用户对应的子令牌桶中令牌的数量进行调整的具体方式,可以参考前述实施例中,对每个用户对应的子令牌桶中令牌的数量进行调整的方式,在此不再赘述。
例如,当接入一个新用户时,总令牌桶中盈余的令牌数量为30,预设数量设为8,新用户的子令牌桶中令牌数量为0,新用户传输数据所需令牌数量为15,此时,总令牌桶先分8个令牌至新用户的子令牌桶中,然后总令牌桶再对新用户的子令牌桶中令牌数量进行调整,使该新用户的子令牌桶中令牌数量大于15但小于23。
本实施例可以为新连接到消息队列的用户分配子令牌桶,并在总令牌桶中盈余的令牌数量大于或等于新用户的数据传输流量时,调整新用户对应的子令牌桶中令牌的数量,使新用户对应的子令牌桶中令牌的数量能够满足新用户的数据传输需求,同时减少新用户占用的冗余流量资源。
图5为本公开实施例提供的流量控制方法的又一流程示意图。如图5所示,该流量控制方法还可以包括:
S501、在对第二目标数据进行传输的过程中,当总令牌桶中盈余的令牌数量小于新用户的第五数据传输流量时,将第一令牌桶中盈余的令牌全部分配至新用户对应的子令牌桶中。
例如,在对第二目标数据进行传输的过程中,总令牌桶盈余的令牌数量为10,新用户子令牌桶的初始令牌数量为0,新用户传输数据所需令牌数量为15,先将总令牌桶盈余的10个令牌全部分配至新用户的子令牌桶中。
S502、当新用户的第五数据传输流量小于第四令牌数量时,从令牌数量大于第四令牌数量的第四目标子令牌桶中回收第一目标数量的令牌,并将第一目标数量的令牌分配至新用户对应的子令牌桶中,第一目标数量为新用户的第五数据传输流量对应的令牌数量和新用户对应的子令牌桶中已有的令牌数量的差值,第四令牌数量为根据第一令牌数量和新增新用户后用户的数量得到的平均令牌数量。
示例性地,在总令牌桶中盈余的令牌数量小于新用户的第五数据传输流量的情况下,当新用户的第五数据传输流量小于第四令牌数量时,从令牌数量大于第四令牌数量的第四目标子令牌桶中回收第一目标数量的令牌,并将回收的第一目标数量的令牌分配至新用户对应的子令牌桶中。
第四目标子令牌桶的确定方式可以包括:根据第一令牌数量和所有用户的数量计算平均令牌数量,得到第四令牌数量;将令牌数量大于第四令牌数量的子令牌桶作为第四目标子令牌桶。
示例性地,假设存在用户1、用户2、用户3,用户1对应有子令牌桶B1,用户2对应有子令牌桶B2,用户3对应有子令牌桶B3,总令牌桶为A,新用户为用户4,新用户对应的子令牌桶为B4,当新用户的第五数据传输流量小于第四令牌数量时,可以先用A的第一令牌数量除以用户数量(用户数量为4)得到一个平均令牌数量,该平均令牌数量即为第四令牌数量;然后,将令牌数量大于第四令牌数量的子令牌桶作为第四目标子令牌桶,如假设B2的令牌数量大于第四令牌数量,则B2可以为第四目标子令牌桶,可以从B2中回收预设数量的令牌,并分配至B4中。
例如,当接入一个新用户时,新用户子令牌桶的初始令牌数量为0,总令牌桶盈余的令牌数量为10,新用户传输数据所需令牌数量为15,先将总令牌桶盈余的10个令牌全部分配至新用户的子令牌桶中,此时新用户对应的子令牌桶中已有的令牌数量为10,可以用新用户的第五数据传输流量对应的令牌数量减去新用户对应的子令牌桶中已有的令牌数量得出第一目标数量5,此时还有三个老用户,老用户1对应的子令牌桶中令牌数量为20,老用户2对应的子令牌桶中令牌数量为60,老用户3对应的子令牌桶中令牌数量为30,可以用总令牌桶的第一令牌数量除以用户数量(用户数量为4)得到一个平均令牌数量,该平均令牌数量即为第四令牌数量;第四令牌数量为30,可以看出老用户2对应的子令牌桶中令牌数量高于第四令牌数量,所以从老用户2对应的子令牌桶中回收5个令牌分配至新用户对应的子令牌桶中。
S503、当新用户的第五数据传输流量大于或等于第四令牌数量时,从令牌数量大于第四令牌数量的第四目标子令牌桶中回收第二目标数量的令牌,并将第二目标数量的令牌分配至新用户对应的子令牌桶中,第二目标数量为第四令牌数量和新用户对应的子令牌桶中已有的令牌数量的差值。
示例性地,假设存在用户1、用户2、用户3,用户1对应有子令牌桶B1,用户2对应有子令牌桶B2,用户3对应有子令牌桶B3,总令牌桶为A,新用户为用户4,新用户对应的子令牌桶为B4,当新用户的第五数据传输流量小于第四令牌数量时,可以先用A的第一令牌数量除以用户数量(用户数量为4)得到一个平均令牌数量,该平均令牌数量即为第四令牌数量,将令牌数量大于第四令牌数量的子令牌桶作为第四目标子令牌桶;然后,可以用新用户的第五数据传输流量对应的令牌数量减去第四令牌数量得到一个数值,该数值为第二目标数量,从第四目标子令牌桶中回收第二目标数量的令牌,并将回收的第二目标数量的令牌分配至新用户对应的子令牌桶中。如假设B2的令牌数量大于第四令牌数量,则B2可以为第四目标子令牌桶,可以从B2中回收预设数量的令牌,并分配至B4中。
本实施例在总令牌桶中盈余的令牌数量小于新用户的第五数据传输流量时,通过从令牌数量大于第四令牌数量的第四目标子令牌桶中回收预设数量的令牌,分配至新用户的子令牌桶中,实现了优先从流量资源占用最多的用户对应的子令牌桶中回收流量资源给新用户,保证了新用户的流量体验。
可选地,其他一些实施例中,第二令牌数量可以为根据第一令牌数量和用户的数量得到的平均令牌数量、或者预设的固定令牌数量。第二令牌数量可以为0。
例如,假设用户1和用户2,总令牌桶中有100个令牌,预设值为10,预设周期为20秒,用户1和用户2传输数据所需的令牌数量均为40,用户1的子令牌桶中有0个令牌,(即用户1对应的子令牌桶的第二令牌数量为0),用户2的子令牌桶中有30个令牌,(即用户2对应的子令牌桶的第二令牌数量为60),在对用户1和用户2对应的子令牌桶桶中令牌的数量进行调整时,用户1需要4个周期可以达到预期调整效果,用户2需要1个周期可以达到预期调整效果。
本实施例中,第二令牌数量为根据第一令牌数量和用户的数量得到的平均令牌数量、或者预设的固定令牌数量时,能够使用户的子令牌桶更高效的达到预期调整效果。
可选地,一个消息队列对应一个存储分区,一个存储分区对应有一个总令牌桶,本公开实施例中流量控制方法在一个存储分区内进行。
可选地,前述实施例中,用户传输数据流量消耗对应的子令牌桶中的令牌指的是用户优先消耗对应的子令牌桶中的令牌,当子令牌桶中的令牌不够时,可以消耗总令牌桶中的令牌。
示例性实施例中,本公开实施例还提供一种流量控制装置,可以用于实现如前述实施例的流量控制方法。图6为本公开实施例提供的流量控制装置的组成示意图。如图6所示,该装置可以包括:传输单元601,调整单元602。
传输单元601,用于通过消耗总令牌桶中的令牌,对至少一个用户分别请求传输的第一目标数据进行传输,总令牌桶中令牌的数量不超过第一令牌数量;传输单元601,还用于响应于检测到用户的数量和至少一个用户需要的数据传输流量达到预设条件,通过消耗每个用户对应的子令牌桶中的令牌,分别对每个用户请求传输的第一目标数据进行传输,子令牌桶中的令牌来自总令牌桶。
调整单元602,用于根据用户需要的第一数据传输流量,调整用户对应的子令牌桶中令牌的数量,使子令牌桶中的令牌对应的第二数据传输流量与第一数据传输流量的差值小于第一流量阈值。
可选地,用户的数量大于预设用户数量,且总令牌桶中消耗的令牌对应的数据传输流量大于第二流量阈值。
可选地,调整单元602,具体用于:为每个用户生成一个对应的子令牌桶,并向每个子令牌桶中分配总令牌桶中的令牌至子令牌桶中令牌的数量达到第二令牌数量。
可选地,调整单元602,具体用于:根据用户需要的第一数据传输流量调整用户对应的子令牌桶中令牌的数量,使子令牌桶中的令牌对应的第二数据传输流量大于第一数据传输流量,且第二数据传输流量和第一数据传输流量的差值小于第一流量阈值。
可选地,调整单元602,具体用于:对每个第一目标子令牌桶,按照预设周期检测第一目标子令牌桶中的令牌对应的第二数据传输流量、和第一目标子令牌桶对应的目标用户的第三数据传输流量,第一目标子令牌桶为任意一个子令牌桶;在每个预设周期内,当第一目标子令牌桶中的令牌对应的第二数据传输流量小于目标用户的第三数据传输流量时,继续从总令牌桶中选择预设数量的令牌分配至第一目标子令牌桶中;在每个预设周期内,当第一目标子令牌桶中的令牌对应的第二数据传输流量大于目标用户的第三数据传输流量,且第一目标子令牌桶中的令牌对应的第二数据传输流量与目标用户的第三数据传输流量之间的差值大于或等于第一流量阈值时,从第一目标子令牌桶中选择预设数量的令牌回收至总令牌桶中;其中,预设数量的令牌对应的第四数据传输流量小于或等于第一流量阈值。
可选地,调整单元602,还用于:在每个预设周期内,当第一目标子令牌桶中的令牌对应的第二数据传输流量小于目标用户的第三数据传输流量,且总令牌桶中盈余的令牌数量大于或等于预设数量时,继续从总令牌桶中选择预设数量的令牌分配至第一目标子令牌桶中;调整单元602,还用于:在每个预设周期内,当第一目标子令牌桶中的令牌对应的第二数据传输流量小于目标用户的第三数据传输流量,且总令牌桶中盈余的令牌数量小于预设数量时,从第二目标子令牌桶中回收预设数量的令牌,并分配至第一目标子令牌桶中,第二目标子令牌桶为令牌数量大于第三令牌数量的子令牌桶,第三令牌数量为根据第一令牌数量和用户的数量得到的平均令牌数量。
可选地,调整单元602,还用于:从多个第二目标子令牌桶中确定令牌数量最多的第三目标子令牌桶;从第三目标子令牌桶中回收预设数量的令牌,并分配至第一目标子令牌桶中。
可选地,传输单元601,还用于:响应于新用户的第二数据传输请求,为新用户生成一个对应的子令牌桶,第二数据传输请求用于请求传输第二目标数据;传输单元601,还用于:当总令牌桶中盈余的令牌数量大于或等于预设数量时,从总令牌桶中选择预设数量的令牌分配至新用户对应的子令牌桶中,并通过消耗新用户对应的子令牌桶中的令牌,对第二目标数据进行传输;调整单元602,还用于:在对第二目标数据进行传输的过程中,当总令牌桶中盈余的令牌数量大于或等于新用户的第五数据传输流量时,对新用户对应的子令牌桶中令牌的数量进行调整,使新用户对应的子令牌桶中的令牌对应的第六数据传输流量大于新用户的第五数据传输流量,且新用户对应的子令牌桶中的令牌对应的第六数据传输流量与新用户的第五数据传输流量之间的差值小于第一流量阈值。
可选地,调整单元602,还用于:在对第二目标数据进行传输的过程中,当总令牌桶中盈余的令牌数量小于新用户的第五数据传输流量时,将第一令牌桶中盈余的令牌全部分配至新用户对应的子令牌桶中;当新用户的第五数据传输流量小于第四令牌数量时,从令牌数量大于第四令牌数量的第四目标子令牌桶中回收第一目标数量的令牌,并将第一目标数量的令牌分配至新用户对应的子令牌桶中,第一目标数量为新用户的第五数据传输流量对应的令牌数量和新用户对应的子令牌桶中已有的令牌数量的差值,第四令牌数量为根据第一令牌数量和新增新用户后用户的数量得到的平均令牌数量;当新用户的第五数据传输流量大于或等于第四令牌数量时,从令牌数量大于第四令牌数量的第四目标子令牌桶中回收第二目标数量的令牌,并将第二目标数量的令牌分配至新用户对应的子令牌桶中,第二目标数量为第四令牌数量和新用户对应的子令牌桶中已有的令牌数量的差值。
可选地,第二令牌数量为根据第一令牌数量和用户的数量得到的平均令牌数量、或者预设的固定令牌数量。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质、一种计算机程序产品。电子设备可以前述实施例中所述的服务器。
示例性实施例中,电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如以上实施例所述的方法。
示例性实施例中,可读存储介质可以是存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使计算机执行根据以上实施例所述的方法。
示例性实施例中,计算机程序产品包括计算机程序,所述计算机程序在被处理器执行时实现根据以上实施例所述的方法。
图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图7所示,电子设备700包括计算单元701,其可以根据存储在只读存储器(ROM)702中的计算机程序或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM 703中,还可存储电子设备700操作所需的各种程序和数据。计算单元701、ROM702以及RAM703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
电子设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许电子设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如流量控制方法。例如,在一些实施例中,流量控制方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到电子设备700上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的流量控制方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行流量控制方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (20)
1.一种流量控制方法,所述方法包括:
通过消耗总令牌桶中的令牌,对至少一个用户分别请求传输的第一目标数据进行传输,所述总令牌桶中令牌的数量不超过第一令牌数量;
响应于检测到所述用户的数量和所述至少一个用户需要的第一数据传输流量达到预设条件,通过消耗每个所述用户对应的子令牌桶中的令牌,分别对每个所述用户请求传输的第一目标数据进行传输,所述子令牌桶中的令牌来自所述总令牌桶;
根据所述用户需要的第一数据传输流量,调整所述用户对应的所述子令牌桶中令牌的数量,使所述子令牌桶中的令牌对应的第二数据传输流量与所述第一数据传输流量的差值小于第一流量阈值。
2.根据权利要求1所述的方法,所述预设条件包括:
所述用户的数量大于预设用户数量,且所述总令牌桶中消耗的令牌对应的数据传输流量大于第二流量阈值。
3.根据权利要求1或2所述的方法,所述通过消耗每个所述用户对应的子令牌桶中的令牌,分别对每个所述用户请求传输的第一目标数据进行传输之前,所述方法还包括:
为每个所述用户生成一个对应的所述子令牌桶,并向每个所述子令牌桶中分配所述总令牌桶中的令牌至所述子令牌桶中令牌的数量达到第二令牌数量。
4.根据权利要求1-3任一项所述的方法,所述根据所述用户需要的第一数据传输流量调整所述用户对应的所述子令牌桶中令牌的数量,使所述子令牌桶中的令牌对应的第二数据传输流量与所述第一数据传输流量的差值小于第一流量阈值,包括:
根据所述用户需要的第一数据传输流量调整所述用户对应的所述子令牌桶中令牌的数量,使所述子令牌桶中的令牌对应的第二数据传输流量大于所述第一数据传输流量,且所述第二数据传输流量和所述第一数据传输流量的差值小于所述第一流量阈值。
5.根据权利要求4所述的方法,所述根据所述用户需要的第一数据传输流量调整所述用户对应的所述子令牌桶中令牌的数量,使所述子令牌桶中的令牌对应的第二数据传输流量大于所述第一数据传输流量,且所述第二数据传输流量和所述第一数据传输流量的差值小于所述第一流量阈值,包括:
对每个第一目标子令牌桶,按照预设周期检测所述第一目标子令牌桶中的令牌对应的第二数据传输流量、和所述第一目标子令牌桶对应的目标用户的第三数据传输流量,所述第一目标子令牌桶为任意一个所述子令牌桶;
在每个所述预设周期内,当所述第一目标子令牌桶中的令牌对应的第二数据传输流量小于所述目标用户的第三数据传输流量时,继续从所述总令牌桶中选择预设数量的令牌分配至所述第一目标子令牌桶中;
在每个所述预设周期内,当所述第一目标子令牌桶中的令牌对应的第二数据传输流量大于所述目标用户的第三数据传输流量,且所述第一目标子令牌桶中的令牌对应的第二数据传输流量与所述目标用户的第三数据传输流量之间的差值大于或等于所述第一流量阈值时,从所述第一目标子令牌桶中选择所述预设数量的令牌回收至所述总令牌桶中;
其中,所述预设数量的令牌对应的第四数据传输流量小于或等于所述第一流量阈值。
6.根据权利要求5所述的方法,所述在每个所述预设周期内,当所述第一目标子令牌桶中的令牌对应的第二数据传输流量小于所述目标用户的第三数据传输流量时,继续从所述总令牌桶中选择预设数量的令牌分配至所述第一目标子令牌桶中,包括:
在每个所述预设周期内,当所述第一目标子令牌桶中的令牌对应的第二数据传输流量小于所述目标用户的第三数据传输流量,且所述总令牌桶中盈余的令牌数量大于或等于所述预设数量时,继续从所述总令牌桶中选择所述预设数量的令牌分配至所述第一目标子令牌桶中;
所述方法还包括:
在每个所述预设周期内,当所述第一目标子令牌桶中的令牌对应的第二数据传输流量小于所述目标用户的第三数据传输流量,且所述总令牌桶中盈余的令牌数量小于所述预设数量时,从第二目标子令牌桶中回收所述预设数量的令牌,并分配至所述第一目标子令牌桶中,所述第二目标子令牌桶为令牌数量大于第三令牌数量的所述子令牌桶,所述第三令牌数量为根据所述第一令牌数量和所述用户的数量得到的平均令牌数量。
7.根据权利要求6所述的方法,所述第二目标子令牌桶包括多个;
所述从第二目标子令牌桶中回收所述预设数量的令牌,并分配至所述第一目标子令牌桶中,包括:
从多个所述第二目标子令牌桶中确定令牌数量最多的第三目标子令牌桶;
从所述第三目标子令牌桶中回收所述预设数量的令牌,并分配至所述第一目标子令牌桶中。
8.根据权利要求1-7任一项所述的方法,所述方法还包括:
响应于新用户的第二数据传输请求,为所述新用户生成一个对应的子令牌桶,所述第二数据传输请求用于请求传输第二目标数据;
当所述总令牌桶中盈余的令牌数量大于或等于预设数量时,从所述总令牌桶中选择所述预设数量的令牌分配至所述新用户对应的所述子令牌桶中,并通过消耗所述新用户对应的所述子令牌桶中的令牌,对所述第二目标数据进行传输;
在对所述第二目标数据进行传输的过程中,当所述总令牌桶中盈余的令牌数量大于或等于所述新用户的第五数据传输流量时,对所述新用户对应的所述子令牌桶中令牌的数量进行调整,使所述新用户对应的所述子令牌桶中的令牌对应的第六数据传输流量大于所述新用户的第五数据传输流量,且所述新用户对应的所述子令牌桶中的令牌对应的第六数据传输流量与所述新用户的第五数据传输流量之间的差值小于所述第一流量阈值。
9.根据权利要求8所述的方法,所述方法还包括:
在对所述第二目标数据进行传输的过程中,当所述总令牌桶中盈余的令牌数量小于所述新用户的第五数据传输流量时,将所述第一令牌桶中盈余的令牌全部分配至所述新用户对应的所述子令牌桶中;
当所述新用户的第五数据传输流量小于第四令牌数量时,从令牌数量大于所述第四令牌数量的第四目标子令牌桶中回收第一目标数量的令牌,并将所述第一目标数量的令牌分配至所述新用户对应的所述子令牌桶中,所述第一目标数量为所述新用户的第五数据传输流量对应的令牌数量和所述新用户对应的所述子令牌桶中已有的令牌数量的差值,所述第四令牌数量为根据所述第一令牌数量和新增所述新用户后用户的数量得到的平均令牌数量;
当所述新用户的第五数据传输流量大于或等于所述第四令牌数量时,从令牌数量大于所述第四令牌数量的第四目标子令牌桶中回收第二目标数量的令牌,并将所述第二目标数量的令牌分配至所述新用户对应的所述子令牌桶中,所述第二目标数量为所述第四令牌数量和所述新用户对应的所述子令牌桶中已有的令牌数量的差值。
10.根据权利要求1-9任一项所述的方法,所述第二令牌数量为根据所述第一令牌数量和所述用户的数量得到的平均令牌数量、或者预设的固定令牌数量。
11.一种流量控制装置,所述装置包括:
传输单元,用于通过消耗总令牌桶中的令牌,对至少一个用户分别请求传输的第一目标数据进行传输,所述总令牌桶中令牌的数量不超过第一令牌数量;
所述传输单元,还用于响应于检测到所述用户的数量和所述至少一个用户需要的数据传输流量达到预设条件,通过消耗每个所述用户对应的子令牌桶中的令牌,分别对每个所述用户请求传输的第一目标数据进行传输,所述子令牌桶中的令牌来自所述总令牌桶;
调整单元,用于根据所述用户需要的第一数据传输流量,调整所述用户对应的所述子令牌桶中令牌的数量,使所述子令牌桶中的令牌对应的第二数据传输流量与所述第一数据传输流量的差值小于第一流量阈值。
12.根据权利要求11所述的装置,所述预设条件包括:
所述用户的数量大于预设用户数量,且所述总令牌桶中消耗的令牌对应的数据传输流量大于第二流量阈值。
13.根据权利要求11或12所述的装置,所述调整单元,具体用于:
为每个所述用户生成一个对应的所述子令牌桶,并向每个所述子令牌桶中分配所述总令牌桶中的令牌至所述子令牌桶中令牌的数量达到第二令牌数量。
14.根据权利要求11-13任一项所述的装置,所述调整单元,还用于:
根据所述用户需要的第一数据传输流量调整所述用户对应的所述子令牌桶中令牌的数量,使所述子令牌桶中的令牌对应的第二数据传输流量大于所述第一数据传输流量,且所述第二数据传输流量和所述第一数据传输流量的差值小于所述第一流量阈值。
15.根据权利要求14所述的装置,所述调整单元,还用于:
对每个第一目标子令牌桶,按照预设周期检测所述第一目标子令牌桶中的令牌对应的第二数据传输流量、和所述第一目标子令牌桶对应的目标用户的第三数据传输流量,所述第一目标子令牌桶为任意一个所述子令牌桶;
在每个所述预设周期内,当所述第一目标子令牌桶中的令牌对应的第二数据传输流量小于所述目标用户的第三数据传输流量时,继续从所述总令牌桶中选择预设数量的令牌分配至所述第一目标子令牌桶中;
在每个所述预设周期内,当所述第一目标子令牌桶中的令牌对应的第二数据传输流量大于所述目标用户的第三数据传输流量,且所述第一目标子令牌桶中的令牌对应的第二数据传输流量与所述目标用户的第三数据传输流量之间的差值大于或等于所述第一流量阈值时,从所述第一目标子令牌桶中选择所述预设数量的令牌回收至所述总令牌桶中;
其中,所述预设数量的令牌对应的第四数据传输流量小于或等于所述第一流量阈值。
16.根据权利要求15所述的装置,所述调整单元,还用于:
在每个所述预设周期内,当所述第一目标子令牌桶中的令牌对应的第二数据传输流量小于所述目标用户的第三数据传输流量,且所述总令牌桶中盈余的令牌数量大于或等于所述预设数量时,继续从所述总令牌桶中选择所述预设数量的令牌分配至所述第一目标子令牌桶中;
所述调整单元,还用于:在每个所述预设周期内,当所述第一目标子令牌桶中的令牌对应的第二数据传输流量小于所述目标用户的第三数据传输流量,且所述总令牌桶中盈余的令牌数量小于所述预设数量时,从第二目标子令牌桶中回收所述预设数量的令牌,并分配至所述第一目标子令牌桶中,所述第二目标子令牌桶为令牌数量大于第三令牌数量的所述子令牌桶,所述第三令牌数量为根据所述第一令牌数量和所述用户的数量得到的平均令牌数量。
17.根据权利要求16所述的装置,所述第二目标子令牌桶包括多个;所述调整单元,还用于:
从多个所述第二目标子令牌桶中确定令牌数量最多的第三目标子令牌桶;
从所述第三目标子令牌桶中回收所述预设数量的令牌,并分配至所述第一目标子令牌桶中。
18.一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-10任一项所述的方法。
19.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使计算机执行根据权利要求1-10任一项所述的方法。
20.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310226499.7A CN116233010A (zh) | 2023-03-09 | 2023-03-09 | 流量控制方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310226499.7A CN116233010A (zh) | 2023-03-09 | 2023-03-09 | 流量控制方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116233010A true CN116233010A (zh) | 2023-06-06 |
Family
ID=86582278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310226499.7A Pending CN116233010A (zh) | 2023-03-09 | 2023-03-09 | 流量控制方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116233010A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104734989A (zh) * | 2013-12-23 | 2015-06-24 | 腾讯数码(天津)有限公司 | 基于令牌桶的数据传输流量调度方法及其系统 |
WO2020014954A1 (zh) * | 2018-07-20 | 2020-01-23 | 威富通科技有限公司 | 数据控制方法及终端设备 |
CN111404836A (zh) * | 2020-03-30 | 2020-07-10 | 北京小米移动软件有限公司 | 数据传输控制方法、装置、控制中心、服务器及介质 |
WO2020151324A1 (zh) * | 2019-01-23 | 2020-07-30 | 平安科技(深圳)有限公司 | 一种虚拟私有云的流量控制方法及相关装置 |
CN113938435A (zh) * | 2021-08-30 | 2022-01-14 | 奇安信科技集团股份有限公司 | 数据传输方法、装置、电子设备、存储介质及程序产品 |
CN115080657A (zh) * | 2021-03-10 | 2022-09-20 | 中国移动通信集团山东有限公司 | 一种应用于分布式存储的操作令牌分配方法、系统及设备 |
-
2023
- 2023-03-09 CN CN202310226499.7A patent/CN116233010A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104734989A (zh) * | 2013-12-23 | 2015-06-24 | 腾讯数码(天津)有限公司 | 基于令牌桶的数据传输流量调度方法及其系统 |
WO2020014954A1 (zh) * | 2018-07-20 | 2020-01-23 | 威富通科技有限公司 | 数据控制方法及终端设备 |
WO2020151324A1 (zh) * | 2019-01-23 | 2020-07-30 | 平安科技(深圳)有限公司 | 一种虚拟私有云的流量控制方法及相关装置 |
CN111404836A (zh) * | 2020-03-30 | 2020-07-10 | 北京小米移动软件有限公司 | 数据传输控制方法、装置、控制中心、服务器及介质 |
CN115080657A (zh) * | 2021-03-10 | 2022-09-20 | 中国移动通信集团山东有限公司 | 一种应用于分布式存储的操作令牌分配方法、系统及设备 |
CN113938435A (zh) * | 2021-08-30 | 2022-01-14 | 奇安信科技集团股份有限公司 | 数据传输方法、装置、电子设备、存储介质及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110545246A (zh) | 一种基于令牌桶的限流方法和装置 | |
CN112559182B (zh) | 资源分配方法、装置、设备及存储介质 | |
CN109981225B (zh) | 一种码率预估方法、装置、设备及存储介质 | |
CN113742114B (zh) | 一种系统限流的方法和装置 | |
CN112445857A (zh) | 一种基于数据库的资源配额管理方法和装置 | |
CN111190719B (zh) | 优化集群资源分配的方法、装置、介质及电子设备 | |
CN112650575B (zh) | 资源调度方法、装置和云端服务系统 | |
CN112600761A (zh) | 一种资源分配的方法、装置及存储介质 | |
CN111857992A (zh) | 一种Radosgw模块中线程资源分配方法和装置 | |
CN114327918B (zh) | 调整资源量的方法、装置、电子设备和存储介质 | |
CN109428926B (zh) | 一种调度任务节点的方法和装置 | |
CN104202305A (zh) | 一种转码处理方法、装置及服务器 | |
WO2022062981A1 (zh) | 资源调度方法和系统、电子设备及计算机可读存储介质 | |
CN113225265B (zh) | 流量控制方法、装置、设备和计算机存储介质 | |
CN112887407A (zh) | 用于分布式集群的作业流量控制方法和装置 | |
CN116594563A (zh) | 分布式存储扩容方法、装置、电子设备和存储介质 | |
CN115665054A (zh) | 带宽分配的方法和模块、以及数据传输管理系统 | |
CN114827281B (zh) | 一种网络请求的发送及接收方法、系统及装置 | |
CN116233010A (zh) | 流量控制方法、装置、设备及存储介质 | |
CN115967677A (zh) | 服务调用的流量控制方法、装置、设备及存储介质 | |
CN113824689B (zh) | 边缘计算网络、数据传输方法、装置、设备和存储介质 | |
CN115190180A (zh) | 在网络资源请求骤增时的网络资源请求调度方法和装置 | |
CN113163236B (zh) | 基于频率控制的数据传输方法、装置、设备和存储介质 | |
CN113285890A (zh) | 网关流量的分配方法、装置、电子设备及存储介质 | |
CN113064620A (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 |