CN110198272B - 一种流量控制方法及装置、存储介质 - Google Patents
一种流量控制方法及装置、存储介质 Download PDFInfo
- Publication number
- CN110198272B CN110198272B CN201811191724.3A CN201811191724A CN110198272B CN 110198272 B CN110198272 B CN 110198272B CN 201811191724 A CN201811191724 A CN 201811191724A CN 110198272 B CN110198272 B CN 110198272B
- Authority
- CN
- China
- Prior art keywords
- preset
- request
- token resource
- resource
- current
- 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 79
- 230000004044 response Effects 0.000 claims abstract description 18
- 230000015654 memory Effects 0.000 claims description 34
- 125000004122 cyclic group Chemical group 0.000 claims description 13
- 230000009123 feedback regulation Effects 0.000 claims description 10
- 239000000725 suspension Substances 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 description 31
- 238000004422 calculation algorithm Methods 0.000 description 28
- 230000008569 process Effects 0.000 description 24
- 238000012545 processing Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 16
- 230000000694 effects Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000001514 detection method Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 6
- 230000001276 controlling effect Effects 0.000 description 6
- 230000033228 biological regulation Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000012937 correction Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000004069 differentiation Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 208000033748 Device issues Diseases 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000003643 water by type Substances 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/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6245—Modifications to standard FIFO or LIFO
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种流量控制方法及装置、存储介质,上述方法包括:接收业务请求;从预设令牌资源桶中读取当前令牌资源;根据当前令牌资源,检测预设令牌资源桶中的请求深度是否满足预设请求深度条件,请求深度表征业务请求对应的可用资源量;若满足预设请求深度条件,则采用预设令牌资源桶中的第一令牌资源进行所述业务请求的下发;第一令牌资源为从当前令牌资源中确定出的供业务请求使用的资源;当接收到业务请求的请求响应时,将第一令牌资源释放至预设令牌资源桶中。
Description
技术领域
本发明涉及通信领域中的网络传输技术,尤其涉及一种流量控制方法及装置、存储介质。
背景技术
随着网络技术的快速发展,网络业务对数据流的传输质量要求也越来越高,例如网络语音业务和网络视频业务,都对数据流的突发、网络延时等指标有着较高的服务质量要求。采用QoS(服务质量,Quality of Service)是保证网络服务质量的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。而流量控制是QoS的一个重要一环,因此,要提高QoS,可以通过提高流量控制的效果来实现。
目前,流量控制的方式一般采用漏桶算法和令牌算法的方式来实现。其中,漏桶算法是通过控制输入输出的流速来实现的,即控制数据注入到网络的速率,平滑网络上的突发流量的。令牌算法是通过发放令牌,每个请求(例如访问)来的时候,通过获取到令牌,实现对请求的响应服务,是通过控制令牌的产生速率来实现固定输入流速的,从而达到控制发送到网络上的数据的数目。
然而,采用漏桶算法由于输出流速是固定的,所以很容易造成溢出现象;采用令牌算法进行流量控制只考虑到了通过控制数据的输入流速进行流量控制的过程,并且输入流速也是通过固定流速控制的,那么当一些突发流量的场景,就会出现流量控制堵塞的现象发生,导致流量控制的效果差。
发明内容
本发明实施例提供一种流量控制方法及装置、存储介质,能够从多个维度综合进行流量控制,提升了流量控制的效果。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种流量控制方法,包括:
接收业务请求;
从预设令牌资源桶中读取当前令牌资源;
根据所述当前令牌资源,检测所述预设令牌资源桶中的请求深度是否满足预设请求深度条件,所述请求深度表征业务请求对应的可用资源量;
若满足所述预设请求深度条件,则采用所述预设令牌资源桶中的第一令牌资源进行所述业务请求的下发;所述第一令牌资源为从所述当前令牌资源中确定出的供所述业务请求使用的资源;
当接收到所述业务请求的请求响应时,将所述第一令牌资源释放至所述预设令牌资源桶中。
本发明实施例提供一种流量控制装置,包括:
接收单元,用于接收业务请求;
获取单元,用于从预设令牌资源桶中读取当前令牌资源;
检测单元,用于根据所述当前令牌资源,检测所述预设令牌资源桶中的请求深度是否满足预设请求深度条件,所述请求深度表征业务请求对应的可用资源量;
下发单元,用于若满足所述预设请求深度条件,则采用所述预设令牌资源桶中的第一令牌资源进行所述业务请求的下发;所述第一令牌资源为从所述当前令牌资源中确定出的供所述业务请求使用的资源;
资源更新单元,用于当接收到所述业务请求的请求响应时,将所述第一令牌资源释放至所述预设令牌资源桶中。
本发明实施例还提供一种流量控制装置,包括:
存储器,用于存储可执行流量控制指令;
处理器,用于执行所述存储器中存储的可执行流量控制指令时,实现本发明实施例提供的方法。
本发明实施例提供一种存储介质,存储有可执行流量控制指令,用于引起处理器执行时,实现本发明实施例提供的方法。
本发明实施例提供了一种流量控制方法及装置、存储介质,接收业务请求;从预设令牌资源桶中读取当前令牌资源;根据当前令牌资源,检测预设令牌资源桶中的请求深度是否满足预设请求深度条件,请求深度表征业务请求对应的可用资源量;若满足预设请求深度条件,则采用预设令牌资源桶中的第一令牌资源进行所述业务请求的下发;第一令牌资源为从当前令牌资源中确定出的供业务请求使用的资源;当接收到业务请求的请求响应时,将第一令牌资源释放至预设令牌资源桶中。采用上述技术实现方案,由于流量控制装置可以在对业务请求进行处理时,通过采用预设令牌资源桶的令牌资源进行业务请求的下发,同时还通过检测预设令牌资源桶中的请求深度作为业务请求的下发的判决,还通过业务请求的请求响应来进行预设令牌桶中的令牌资源的释放,也就是说,在本发明实施例中,流量控制装置可以通过令牌资源的使用、请求深度以及业务请求的请求响应多个维度的共同作用来进行业务请求时的资源的控制,进而实现流量的综合控制,考虑维度较多,提升了整个流量控制的效果。
附图说明
图1是本发明实施例提供的示例性的漏桶算法的一个可选的示意图;
图2是本发明实施例提供的示例性的令牌算法的一个可选的示意图;
图3是本发明实施例提供的流量控制系统架构的一个可选的结构示意图;
图4是本发明实施例提供的示例性的服务器的一个可选的结构示意图;
图5是本发明实施例提供的流量控制装置的一个可选的结构示意图;
图6是本发明实施例提供的流量控制方法的一个可选的流程示意图一;
图7是本发明实施例提供示例性的业务应用场景示意图一;
图8是本发明实施例提供的流量控制方法的一个可选的流程示意图二;
图9是本发明实施例提供的示例性的预设循环数组的示意图;
图10是本发明实施例提供的流量控制方法的一个可选的流程示意图三;
图11是本发明实施例提供的示例性的预设反馈调节模型的示意图;
图12是本发明实施例提供示例性的业务应用场景示意图二。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
需要指出的是,本发明实施例所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里描述的以外的顺序实施。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)漏桶算法,控制数据注入到网络的速率,平滑网络上的突发流量,将突发流量整形以便为网络提供一个稳定的流量。示例性的,如图1所示,当业务请求来的时候,业务请求先进入到漏桶里,漏桶以一定的速度匀速“水”,即业务请求,当业务请求过大时,会直接溢出,可以看出漏桶算法能强行限制数据的传输速率。也就是说,当通过接收到不规则的业务请求(数据包)时,通过网络传输接口的漏桶,输出规则的数据流(业务请求数据)到网络中进行传输。
2)令牌桶算法,控制发送到网络上的数据包(例如,业务请求),并允许突发数据的发送。示例性的,令牌桶算法示意图如图2所示,大小固定的令牌桶可自行以恒定的速率源源不断地生成令牌。如果令牌不被消耗,或者被消耗的速度小于产生的速度,令牌就会不断地增多,直到把令牌桶填满,再产生的令牌就会从桶中溢出,最后令牌桶中可以保存的最大令牌数永远不会超过令牌桶的大小,并且输入令牌桶的数据包需要获取令牌才能进行数据的传输,输出数据包,当令牌桶中的令牌是一直固定的速度生成的,只要有令牌的消耗就会有令牌填充进来。
3)order请求:后台程序自动生成的请求,即自生请求,是由后台程序自动搬迁数据产生的请求,属于非用户路径后台快照相关的请求。
4)trigger请求:用户IO操作触发的快照流量的一种IO请求,是COW(Copy OnWrite,写时复制技术)的一种形式的体现。
下面说明实现本发明实施例的流量控制装置的示例性应用,本发明实施例提供的流量控制装置可以实施为设置在智能手机、平板电脑、笔记本电脑等各种类型的用户终端中的流量控制模块,也可以实施为设置在服务器中的流量控制模块,还可以为与终端和服务器进行网络通信的网关设备。这里的服务器可以为运行应用功能的终端对应的业务服务器。下面将说明流量控制装置的示例性应用。
参见图3,图3是本发明实施例提供的流量控制系统100的一个可选的架构示意图,为实现支撑一个示例性应用,终端400(示例性示出了终端400-1和终端400-2)通过网络200连接服务器300,网络200可以是广域网或者局域网,又或者是二者的组合,使用无线链路实现数据传输。其中,网络200中包含网关设备200-1。
终端400,用于在图形界面410(示例性示出了图形界面410-1和图形界面410-2)显示的应用功能中接收用户的业务请求(这里是IO请求),并将业务请求通过网络200中的网络设备200-1传输至服务器300,服务器300用于通过接收网关设备200-1接收的业务请求,对该业务请求进行流量控制和响应,反馈请求响应至终端400。其中,服务器300中对业务请求的流量控制的过程可以为:接收业务请求;从预设令牌资源桶中读取当前令牌资源;根据当前令牌资源,检测预设令牌资源桶中的请求深度是否满足预设请求深度条件,请求深度表征业务请求对应的可用资源量;若满足预设请求深度条件,则采用预设令牌资源桶中的第一令牌资源进行所述业务请求的下发;第一令牌资源为从当前令牌资源中确定出的供业务请求使用的资源;当接收到业务请求的请求响应时,将第一令牌资源释放至预设令牌资源桶中。
本发明实施例提供的流量控制装置可以实施为硬件或者软硬件结合的方式,下面说明本发明实施例提供的流量控制装置的各种示例性实施。
参见图4,以流量控制装置为服务器300为例进行说明,图4是本发明实施例提供的服务器300一个可选的结构示意图,服务器300可以是移动电话、计算机、数字广播终端、信息收发设备、游戏控制台、平板设备、医疗设备、健身设备、个人数字助理等进行应用功能时对应的业务服务器,根据服务器300的结构可以预见流量控制装置的实施为服务器时的示例性结构,因此这里所描述的结构不应视为限制,例如可以省略下文所描述的部分组件,或者,增设下文所未记载的组件以适应某些应用的特殊需求。
图4所示的服务器300包括:至少一个处理器310、存储器340、至少一个网络接口320和用户接口330。服务器300中的各个组件通过总线系统350耦合在一起。可理解,总线系统350用于实现这些组件之间的连接通信。总线系统350除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图4中将各种总线都标为总线系统350。
其中,用户接口330可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。
存储器340可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、闪存(Flash Memory)等。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static RandomAccess Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random AccessMemory)。本发明实施例描述的存储器340旨在包括这些和任意其它适合类型的存储器。
本发明实施例中的存储器340能够存储数据以支持服务器300的操作。这些数据的示例包括:用于在服务器300上操作的任何计算机程序,如操作系统342和应用程序341。其中,操作系统包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序可以包含各种应用程序。
作为本发明实施例提供的流量控制方法采用软硬件结合实施的示例,本发明实施例所提供的流量控制方法可以直接体现为由处理器310执行的软件模块组合,软件模块可以位于存储介质中,存储介质位于存储器340,处理器310读取存储器340中软件模块包括的可执行流量控制指令,结合必要的硬件(例如,包括处理器310以及连接到总线350的其他组件)完成本发明实施例提供的流量控制方法。
作为示例,处理器310可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
也就是说,示例性的,本发明实施例提供了一种流量控制装置,至少包括:
存储器340,用于存储可执行流量控制指令;
处理器310,用于执行所述存储器340中存储的可执行流量控制指令时,实现本发明实施例提供的流量控制方法。
下面说明软件模块的示例性结构,图4为以流量控制装置为服务器300为例时的硬件结构示意图,本发明实施例所提供的流量控制方法可以直接体现为由处理器310执行的软件模块组合,软件模块可以位于存储介质中,存储介质位于存储器340,处理器310读取存储器340中软件模块包括的可执行流量控制指令(即图4中的可执行程序341),在一些实施例中,本发明实施例提出了一种软件模块的结构命名为流程控制装置1,该流程控制装置1执行图4中的可执行程序中的可执行流量控制指令,实现流程控制方法。示例性的,如图5所示,流量控制装置1中的软件模块可以包括:接收单元10、获取单元11、检测单元12、下发单元13和资源更新单元14,其中,
接收单元10,用于接收业务请求;
获取单元11,用于从预设令牌资源桶中读取当前令牌资源;
检测单元12,用于根据所述当前令牌资源,检测所述预设令牌资源桶中的请求深度是否满足预设请求深度条件,所述请求深度表征业务请求对应的可用资源量;
下发单元13,用于若满足所述预设请求深度条件,则采用所述预设令牌资源桶中的第一令牌资源进行所述业务请求的下发;所述第一令牌资源为从所述当前令牌资源中确定出的供所述业务请求使用的资源;
资源更新单元14,用于当接收到所述业务请求的请求响应时,将所述第一令牌资源释放至所述预设令牌资源桶中。
在本发明的一些实施例中,所述检测单元12,具体用于当所述当前令牌资源为可用时,获取所述预设令牌资源桶中的实际令牌资源;及当所述实际令牌资源与所述当前令牌资源相同时,表征检测到所述预设令牌资源桶中的请求深度满足预设请求深度条件;以及当所述实际令牌资源与所述当前令牌资源不相同时,表征检测到所述预设令牌资源桶中的请求深度不满足预设请求深度条件。
在本发明的一些实施例中,所述流量控制装置1中还包括:挂起单元15;
所述挂起单元15,用于所述根据所述当前令牌资源,检测所述预设令牌资源桶中的请求深度是否满足预设请求深度条件之后,当所述当前令牌资源为不可用时,表征检测到预设令牌资源桶中的请求深度不满足预设请求深度条件,将所述业务请求挂起。
在本发明的一些实施例中,所述资源更新单元14,还用于所述获取所述预设令牌资源桶中的实际令牌资源之后,当所述实际令牌资源与所述当前令牌资源不相同时,将所述实际令牌资源更新为下一次的当前令牌资源,以进行下一次的请求深度的检测。
在本发明的一些实施例中,所述流量控制装置1还包括:挂起单元15;
所述获取单元11,还用于所述根据所述当前令牌资源,检测所述预设令牌资源桶中的请求深度是否满足预设请求深度条件之后,统计预设时间段内的当前带宽;
所述检测单元12,还用于若满足所述预设请求深度条件,则检测所述当前带宽是否满足预设带宽阈值;
所述下发单元13,还用于当满足所述预设带宽阈值时,采用所述预设令牌资源桶中的第一令牌资源进行所述业务请求的下发;
所述挂起单元15,用于当不满足所述预设带宽阈值时,则将所述业务请求挂起。
在本发明的一些实施例中,所述流量控制装置1还包括:存储单元16;
所述存储单元16,用于所述接收业务请求之后,将所述业务请求存储在预设循环数组中,所述预设循环数组用于表征预设时间段内的业务流量。
在本发明的一些实施例中,所述获取单元11,具体用于从预设循环数组中统计从当前时间点开始向前的预设时间段内的业务流量;根据所述业务流量和所述预设时间段,获取所述当前带宽。
在本发明的一些实施例中,所述预设循环数组按照预设时间间隔划分为N个数据格,所述N个数据格形成一个具有时间顺序的环形数组,其中,N为大于等于2的正整数,并且所述预设时间间隔与N的乘积为所述预设时间段。
在本发明的一些实施例中,所述业务请求包括:输入输出IO请求和自生请求,所述自生请求是根据IO请求生成的自身内部请求;所述流量控制装置1还包括:调节单元17;
所述调节单元17,用于在统计所述预设时间段内的所述当前带宽之后,将所述当前带宽输入至预设反馈调节模型中,输出自生请求的当前生成速率;所述预设反馈调节模型用于表征带宽和自生请求的生成速率的对应的反相关性的;及采用所述当前生成速率对所述自生请求进行调节,进而调节所述当前带宽,直至达到稳态。
在实际应用中,上述接收单元10和下发单元13可通过用户接口实现,存储单元16可通过存储器实现,而其他单元则可以通过处理器实现,本发明实施例不作限制。
作为本发明实施例提供的流量控制方法采用硬件实施的示例,本发明实施例所提供的流量控制方法可以直接采用硬件译码处理器形式的处理器310来执行完成,例如,被一个或多个应用专用集成电路(ASIC,Application Spe cific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件执行实现本发明实施例提供的流量控制方法。
下面将结合前述的实现本发明实施例的流量控制装置的示例性应用和实施,来说明实现本发明实施例的流量控制方法。
参见图6,图6是本发明实施例提供的流量控制方法的一个可选的流程示意图,将结合图6示出的步骤进行说明。
S101、接收业务请求。
S102、从预设令牌资源桶中读取当前令牌资源。
S103、根据当前令牌资源,检测预设令牌资源桶中的请求深度是否满足预设请求深度条件,请求深度表征业务请求对应的可用资源量。
S104、若满足预设请求深度条件,则采用预设令牌资源桶中的第一令牌资源进行业务请求的下发;第一令牌资源为从当前令牌资源中确定出的供业务请求使用的资源。
S105、当接收到业务请求的请求响应时,将第一令牌资源释放至预设令牌资源桶中。
在本发明实施例中,流量控制方法是在网络中进行数据传输的过程中需要进行的数据处理过程。示例性的,以业务场景为例进行数据传输的说明,参考图7,图7为业务应用场景的数据传输示意图。这里,将数据传输的实体方可以分为数据源端,数据目的端,以及流量控制装置三侧。用户在数据源端进行IO(输入输出)操作,生成需要发出数据,例如业务请求中的trigger请求,这时针对生成的trigger请求通过进程A中的多个线程发送至数据目的端,去实现该trigger请求,并对该trigger请求进行响应,反馈至数据源端。而在数据传输的过程中,基于trigger请求的特性,在进程A中的不同线程中(例如线程0和线程1)中还会生成order请求(自生请求),然后将trigger请求和order请求作为源数据进行流控处理后,再传输至数据目的端(即网络传输后端的进程B1、进程B2和进程B3),而流控处理是由流控处理装置实现的。
需要说明的是,在本发明实施例中,数据源端可以为终端,此时的数据目的端就为在终端进行IO操作时对应的业务服务器。数据源端可以为服务器,此时的数据目的端就为与服务器进行数据通信的终端。而流量控制装置可以设置在数据源端,也可以设置在数据目的端,还可以设置在数据源端和数据目的端之间的网络的网关设备中,本发明实施例不作限制。
在S101中,流量控制装置是可以接收到数据源端的很多业务请求的,业务请求可以是由用户通过IO操作生成的。
在本发明实施例中,用户通过数据源端进行IO操作可以为网页的浏览触发,视频的播放请求,游戏的数据请求等,以便于在数据源端实现某些业务功能的,本发明实施例不作限制。
需要说明的是,流量控制装置在某一时刻接收到的业务请求的数量,即流量可能是很多的,很大的,也可能是某一时刻网络上突发的大访问量的数据。
这里,流量控制装置若为网关设备时,则该流量控制装置则可以同时接收不同数据源端的数据(即业务请求)的,大量业务请求接收到时,可以按照队列对数据进行存储,然后通过入队和出队过程进行数据的处理和传输。
在S102中,流量控制装置采用的是令牌算法中令牌桶(即预设令牌资源桶)的形式对业务请求进行流量控制的。
在本发明实施例中,设置有预设令牌资源桶,在该预设令牌资源桶中存储有预设数据的令牌,业务请求通过预设令牌桶向网络传输数据,当业务请求通过预设令牌资源桶时,需要从预设令牌资源桶中获取令牌资源,利用该令牌资源进行业务请求的数据传输。
在本发明实施例中,当流量控制装置在获取到了业务请求,需要进行该业务请求的传输时,该流量控制装置需要对预设令牌资源桶的数据进行处理,获取到可以传输该业务请求的第一令牌资源,再进行业务请求的传输。
但是,流量控制装置在从预设令牌资源桶中获取第一令牌资源之前,该流量控制装置需要先检测下预设令牌桶中的可用资源,即预设令牌资源桶中的请求深度是否满足继续进行数据传输的条件。其中,请求深度表征业务请求对应的可用资源量,这里的可用资源量是指之前的业务请求传输过后,有反馈之后释放的总资源量。
需要说明的是,在本发明实施例中,预设令牌资源桶中是都存在可用令牌资源不是本发明实施例进行数据传输的唯一条件了,而是同时需要考虑到预设令牌资源桶中的请求深度这个维度,进行综合的数据传输的检测。只有检测到预设令牌资源桶中的请求深度满足预设请求深度条件的时候才会进行此次业务请求的传输的。
也就是说,在本发明实施例中,流量控制装置采用预设令牌资源桶的方式,初始的令牌资源是一定的,而预设令牌资源桶中的资源的增加,是通过使用过令牌资源的业务请求,在接收到请求响应后再重新释放到预设令牌资源桶中来实现的,并不是采用按照一定速度产生令牌的,从而改变了控制预设令牌资源桶的请求深度的方式。
在本发明实施例中,进行预设请求深度条件的检测的时候,需要流量控制装置先从预设令牌资源桶中读取当前令牌资源(cur),采用当前令牌资源进行是否满足预设请求深度条件的检测的。
这里,当前令牌资源为接收业务请求的时间点,从预设令牌资源桶中获取到记录的可用的令牌资源的总数。
在本发明的一些实施例中,预设令牌资源桶中的初始的令牌资源数可以考虑网络传输后端(即数据目的端)处理请求的能力来决定。
在S103中,流量控制装置在读取到了当前令牌资源之后,该流量控制装置就可以根据当前令牌资源,检测预设令牌资源桶中的请求深度是否满足预设请求深度条件了,其中,请求深度表征业务请求对应的可用资源量。
在本发明实施例中,只要是预设令牌资源桶中存在令牌资源,就可以认为网络传输后端还是具有处理能力的,可以继续进行数据传输或进行业务请求的处理的。
在本发明的一些实施例中,流量控制装置在根据当前令牌资源,检测预设令牌资源桶中的请求深度是否满足预设请求深度条件的实现方式可以为:当当前令牌资源为可用时,获取预设令牌资源桶中的实际令牌资源(old);当实际令牌资源与当前令牌资源相同时,表征检测到预设令牌资源桶中的请求深度满足预设请求深度条件;当实际令牌资源与当前令牌资源不相同时,表征检测到预设令牌资源桶中的请求深度不满足预设请求深度条件。在获取预设令牌资源桶中的实际令牌资源之后的过程为当实际令牌资源与当前令牌资源不相同时,将实际令牌资源更新为下一次的当前令牌资源,以进行下一次的请求深度的检测。
需要说明的是,在本发明实施例中,流量控制装置可以同时处理多个业务请求即数据,因此,针对一个业务请求,流量控制装置在读取了当前令牌资源后,在进行检测的过程中,可能有其他业务请求在同时占用预设令牌资源桶的令牌资源的,也就是说实际令牌资源已经改变了,因此,流量控制装置需要获取实际令牌资源,进行正确的请求深度的检测。
这里,在当前令牌资源为非零时,说明有可用的令牌资源用来进行数据的传输,因此,将当前令牌资源和实际令牌资源进行对比,实现无锁解决不同线程处理的不同业务请求时的冲突问题,详细的,当当实际令牌资源与当前令牌资源相同时,表征业务请求可以正常进行传输,并无冲突发生,即检测到预设令牌资源桶中的请求深度满足预设请求深度条件,进行后续的流程。而当实际令牌资源与当前令牌资源不相同时,表征不同业务请求可能都进行了占用资源的处理,可能会产生不准确的占用资源的情况,即产生了冲突,于是需要进行冲突的解决,才可以正常进行传输,即检测到预设令牌资源桶中的请求深度不满足预设请求深度条件。在本发明实施例中,解决冲突的办法就是,当实际令牌资源与当前令牌资源不相同时,将实际令牌资源更新为下一次的当前令牌资源,以进行下一次的请求深度的检测,即重新进行业务请求的请求深度的检测,那么在重新检测的时候,在没有再发生冲突的情况下,当前令牌资源就是实际令牌资源了,这样就可以将业务请求进行正常传输了。若还是检测出有冲突,会继续循环进行再次的检测处理的,直至业务请求可以正常传输,或者,直至预设令牌资源桶中的资源占用完了,需要将业务请求挂起,等待令牌资源。
在本发明实施例中,流量控制装置根据当前令牌资源,检测预设令牌资源桶中的请求深度是否满足预设请求深度条件的方式可以采用CAS无锁的方式实现上述描述的逻辑流程。也就是说,本发明实施例中,预设令牌资源桶的大小固定,通过CAS(Compare andswap)的方式从预设令牌资源桶里获取和回收令牌资源,避免加锁。其中,CAS是一种无锁编程。无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫非阻塞同步(Non-blocking Synchronization),实现非阻塞同步的方案称为“无锁编程算法”(Non-blocking algorithm)。当多个线程尝试使用CAS同时更新同一个变量(例如本发明实施例中的预设令牌资源桶中的令牌资源数量)时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程被告知这次竞争中失败,并可以再次尝试。
在本发明的一些实施例中,流量控制装置还可以包括:流量控制装置检测预设令牌资源桶中的请求深度是否满足预设请求深度条件之后的过程,还可以包括:当当前令牌资源为不可用时,表征没有可以使用的令牌资源用于数据传输了,即检测到预设令牌资源桶中的请求深度不满足预设请求深度条件,那么,流量控制装置就可以将业务请求挂起了,等待令牌资源。
示例性的,实现一个原子操作函数为:
atomic_get_unless(桶地址,-1,0)
或者,
atomic_put_unless(桶,1,桶最大常值)
其中,原子操作函数的函数实现功能是:如果桶里面还有令牌资源,那么就获取到一个令牌资源。如果是0,那么就什么都不做,等待资源的回收。
示例性的,CAS实现预设请求深度条件检测的代码如下:
其中,实现atomic_cmpxchg的过程可以如下:
可以理解的是,采用无锁操作流程实现预设令牌资源桶中的请求深度的控制,既可以避免冲突,还可以避免加锁,简化了流量控制流程。
在S104中,流量控制装置在进行了预设请求深度条件的检测之后,就会出现满足预设请求深度条件,和不满足预设请求深度条件,那么若满足预设请求深度条件,流量控制装置则采用预设令牌资源桶中的可用资源中的第一令牌资源进行业务请求的下发;也就是说,第一令牌资源为从当前令牌资源中确定出的供业务请求使用的资源。
也就是说,流量控制装置在检测到满足预设请求深度条件后,说明可以使用预设令牌资源桶中的资源进行数据的传输,因此,流量控制装置对业务请求分配第一令牌资源,采用第一令牌资源进行业务请求的下发,即采用第一令牌资源向后端传输业务请求了。
在S105中,流量控制装置在采用第一令牌资源传输业务请求该数据目的端之后,由于数据目的端是可以对业务请求进行请求处理,得到该业务请求的请求响应的,因此,流量控制装置会收到数据目的端,或者网络传输后端传输回来的与业务请求对应的请求响应的,而当接收到业务请求的请求响应时,表征这个业务请求的整个数据处理已经完成了,那么就可以将第一令牌资源释放至预设令牌资源桶中了,从其他业务请求使用。
可以理解的是,流量控制装置可以无锁实现请求下发的深度,结合网络传输后端的请求处理能力进行资源的控制,从多个维度实现流量控制,提升了流量控制的效果。也就是说,由于流量控制装置可以在对业务请求进行处理时,通过采用预设令牌资源桶的令牌资源进行业务请求的下发,同时还通过检测预设令牌资源桶中的请求深度作为业务请求的下发的判决,还通过业务请求的请求响应来进行预设令牌桶中的令牌资源的释放,也就是说,在本发明实施例中,流量控制装置可以通过令牌资源的使用、请求深度以及业务请求的请求响应多个维度的共同作用来进行业务请求时的资源的控制,进而实现流量的综合控制,考虑维度较多,提升了整个流量控制的效果。
在本发明的一些实施例中,参见图8,图8是本发明实施例提供的流量控制方法的一个可选的流程示意图,图8示出在S103之后,上述流量控制方法还可以执行S106至S109,下面将结合各步骤进行说明。
S106、统计预设时间段内的当前带宽。
S107、若满足预设请求深度条件,则检测当前带宽是否满足预设带宽阈值。
S108、当满足预设带宽阈值时,采用预设令牌资源桶中的第一令牌资源进行所述业务请求的下发。
S109、当不满足预设带宽阈值时,则将业务请求挂起。
在本发明实施例中,流量控制装置在接收到业务请求,需要对该业务请求进行之后,该流量控制装置还可以将业务请求存储在预设循环数组中,该预设循环数组用于表征预设时间段内的业务流量。
这里,流量控制装置是将业务请求的相关数据(例如数据大小)进行记录存储在预设循环数组中的。
需要说明的是,在本发明实施例中,预设循环数组是实现设置好的,可用来进行带宽的统计的。
在本发明实施例中,流量控制装置在进行业务请求的流量控制的时候,还可以通过控制带宽进行流量的控制,那么可以进行业务请求的当前带宽的统计,然后,在从预设令牌资源桶中读取当前令牌资源之后,当依据当前令牌资源进行了检测预设令牌资源桶中的请求深度是否满足预设请求深度条件后,若满足预设请求深度条件,则检测当前带宽是否满足预设带宽阈值,而当满足预设带宽阈值时,表征带宽可用的还很多,不会造成负担,因此,流量控制装置就可以采用预设令牌资源桶中的第一令牌资源进行业务请求的下发了,具体的下发过程与前述描述的一致,不再赘述。当不满足预设带宽阈值时,那么,表明现在不适合进行业务请求的传输,因此,流量控制装置将业务请求挂起。
在本发明实施例中,流量控制装置针对业务请求进行当前带框的统计可以基于预设循环数组实现,实现方式为:从预设循环数组中统计从当前时间点开始向前的预设时间段内的业务流量(即统计预设循环数组中的记录的数据总量即可);根据业务流量和预设时间段,获取当前带宽,即业务流量除以预设时间段就是当前带宽。
在本发明的一些实施例中,预设循环数组按照预设时间间隔划分为N个数据格,N个数据格形成一个具有时间顺序的环形数组,其中,N为大于等于2的正整数,并且预设时间间隔与N的乘积为预设时间段。
也就是说,预设循环数组的N个数据格是具有时间顺序排列的,时间顺序可以是逆时针增长,也可以是顺时针增长,本发明实施例不作限制。并且,每个数据格可以表示一段时间内接收的业务请求可以存储在此,即预设时间间隔内接收的业务请求都存储在一个数据格中。
在本发明实施例中,还可以采用ringbuffer设置预设循环数组。
需要说明的是,预设循环数组所代表的时间就是预设时间段,这样,在流量控制装置在进行预设时间段的当前带宽的统计时,由于一个预设循环数组就代表了预设时间段内存储的业务请求的带宽,因此,只需统计预设循环数组中当前的全部存储的数据的带宽就可以了。
示例性的,如图9所示,采用简单高效的图9示出的预设循环数组,来记录1s内的流量,从而得到单位时间的IO流量(业务流量),这里假设预设循环数组中的N为100,预设时间间隔为10ms(即每一个格子存储10ms内接收的业务请求),预设时间段为1s,顺时针为时间增长方向,假设从0时刻开始,9ms的时候来了第一个1M的IO,那么就存储到了第0个格子,总环值(预设循环数组中的总流量)为1M。在25ms的时候,来了第二个1M的IO请求,表征10ms-20ms的第1个格子中未有数据,落到第2个格子,记录下来,并累加总环值为2M,再41ms,接收了第三个连续2M的IO请求,存储到第4个格子,那么总环为4M。如果之后的1s内都没有IO请求来,那么这1s的流量就是4M/s。这样就统计出来了流速(当前带宽)。如果第3个IO请求之后,过了来了第4个1M的IO请求,换算后是要存储到101个格子的,那么就需要覆盖第0个格子,即将第0个格子清零,存入第4个IO请求的数据。这时,统计到的带宽是3M/s。
也就是说,在本发明实施例中,在超出1s(预设时间段)时,流量控制装置需要根据最开始的时间起点计算当前的时刻落到的格子,再根据上一次落到的格子,计算出需要清理的格子,清理格子,计算流速,再置位。每次统计流速(带宽),只需要看预设循环数组环里的IO请求有多少,总量就是流速。以当前时刻为起点,向上追溯1s,每个IO请求来的时候,都按照特定的规则,根据前一个时刻来判断当前时刻应该落到哪个格子的。如果有覆盖的情况,就说明需要清理掉一些超过1s时间的格子(数据格)里的数据即可。
需要说明的是,本发明实施例提供的流量控制方式也可以在接收到业务请求的时候,光通过调整带宽进行流量的控制。
可以理解的是,采用预设循环数组的方式计算流速不需要加锁。因为每次业务请求来的时候,仅仅是通过计算出需要清理的格子来实时保证数组内的业务请求的统计和是有效的。这样就能直接读取到准确的当前流速了。那么假设相差1us的时间,有两个如果有并发,也不会有问题,这是因为并发造成的误差,最多是1个格子的影响。实现了在误差范围内,无锁实现带宽的统计。这种统计方式适用于普遍场景,可以应用于高并发,多线程环境中,并且,同时结合深度,进一步对流速(带宽)做了控制,实现了两重Qos保证,安全且提升了流量控制的效果。
在本发明的一些实施例中,参见图10,图10是本发明实施例提供的流量控制方法的一个可选的流程示意图,基于图8中的示出的实现,图10示出了S106之后,上述流量控制方法还可以执行S110至S111,下面将结合各步骤进行说明。
其中,在本发明实施例中,业务请求可以包括:IO请求(例如trigger请求)和自生请求(例如order请求),该自生请求是根据IO请求生成的自身内部请求,本发明实施例提供的流量控制方法还包括:
S110、在统计预设时间段内的当前带宽之后,将当前带宽输入至预设反馈调节模型中,输出自生请求的当前生成速率;预设反馈调节模型用于表征带宽和自生请求的生成速率的对应的反相关性的。
S111、采用当前生成速率对自生请求进行调节,进而调节当前带宽,直至达到稳态。
在本发明实施例中,流量控制装置在统计预设时间段内的当前带宽之后,针对业务请求包括自生请求的情况,本发明实施例中的流量控制装置还可以通过调节自生请求的生成速率来进行流量的有效控制。
这里,流量控制装置可以将当前带宽输入至预设反馈调节模型中,通预设反馈调节模型输出自生请求的当前生成速率;其中,预设反馈调节模型用于表征带宽和自生请求的生成速率的对应的反相关性的,再采用当前生成速率对自生请求进行调节,进而调节当前带宽,直至达到稳态(即整个数据传输可以正常进行的稳定态)。
在本发明实施例中,流量控制装置的自生当前带宽的过程是闭环控制的,闭环控制是根据控制对象输出反馈来进行校正的控制方式,它是在测量出实际与计划发生偏差时,按定额或标准来进行纠正的。比如控制一个电机的转速,就得有一个测量转速的传感器,并将结果反馈到控制路线上。比如锅炉加热,为了保持温度在一个水平不变,冷了就加火,温度高了就降火。在本发明实施例中,预设反馈调节模型可以采用PID控制器实现。闭环控制算法PID,是闭环控制算法。PID是比例(Proportion),积分(Integral),微分(Differential coefficient)的缩写,分别代表了三种控制算法。通过这三个算法的组合可有效地纠正被控制对象的偏差,从而使其达到一个稳定的状态。
示例性的,如图11所示的PID控制系统示意图中,r(t)表示给定输入值预设,c(t)表示实际输出值,e(t)表示信号偏差量,u(t)表示修正量。其中PID的3个参数是需要反复调的,这3个参数在每个系统稳态的都可能不一样,这就是本发明实施例中的流量控制装置通过调节自生请求和带宽直至PID模型中的参数达到稳态的过程。其中,比例参数,是最快调节偏差的参数方式。系数大,可以加快调节,但是过大的比例使得系统的稳定性下降,来回震荡,在本发明实施例中,可能就是一下暴涨,一下断流的场景。而系数小,可能导致力度比较小,敏感度不高。因此,单纯的比例参数的控制是很难保证调节的恰到好处,消除误差的。所以PID算法是比例,积分,微分同时生效,才能使系统具有比较好的稳态。
其中,积分,反应系统的累计偏差。积分项有减小误差的作用,只要有误差,那么就会导致积分调节,知道没有误差,积分部分就不会变化。
微分,主要是预见性,前导性。因为微分反应的是趋势变化,根据现有数据,预见性的变差的走势,产生超前的控制,在偏差还没有成之前,已经被微分调节作用消除,因此可以进一步改善系统的动态性能。
总的来说,PID控制器各校正环节的作用如下:
(1)比例环节:成比例地反映控制系统的偏差信号e(t),偏差一旦产生,控制器立即产生控制作用,以减少偏差。
(2)积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数Ti,Ti越大,积分作用越弱,反之则越强。
(3)微分环节:反映偏差信号的变化趋势(变化速率),并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。
需要说明的是,离散式PID分为位置型和增量型。下面以PID为位置型进行举例,由于计算机的输出u(k)直接控制执行机构(如阀门),u(k)的值与执行机构的位置(如阀门开度)一一对应,所以通常称公式(1)为位置式PID控制算法。
在本发明实施例中,流量控制装置可以通过预设反馈调节模型反向调节自生请求的生成速率。从而进一步降低业务请求等待的时延。预设反馈调节模型可以理解成一个黑盒。在本发明实施例中,带宽作为PID算法的输入r(t),自生请求的生成速率作为PID算法的输出c(t)。本发明实施例中的自生请求的生成速率就是动态变化的,而自生请求的生成速率会驱动带宽发生变化。当带宽值高于预定值时,c(t)就会往下走。这样生成速率就变小,从源头上治理流速过量的问题。当带宽值低于预定带宽阈值的时候,c(t)就会加大压力,也就是说带宽和自生请求的生成速率的对应的反相关性的。
在本发明的一些实施例中,流量控制装置通过PID算法对trigger请求(IO请求)和order请求(自生请求)不同程度的调节,还能针对优先级进行不同的处理。
需要说明的是,在本发明实施例中,IO请求的优先级高于自身请求的优先级,因此,流量控制装置在进行自生请求的生成速率的时候可以考虑按照优先级,优先将自生请求的生成速率降低,优先处理IO请求。或者,流量控制装置在进行业务请求处理的过程中,优先分配IO请求的资源等。
可以理解的是,流量控制装置使用自动PID控制算法,利用积分和微分的调节作用,有效的保证调节的稳态,而反向调节请求生成速率,进一步降低时延,提高服务质量,提升了流量控制的效果。
本发明实施例提供的流量控制方式也可以在接收到业务请求的时候,光通过调整自生请求的生成速率进行流量的控制,用到的带宽可以采用常规方式获取到,也可以与上述几种流量控制的控制方式相结合来实现,本发明实施例不作限制。
下面,采用如图12所示的业务场景示意图,说明本发明实施例在一个实际的业务场景中的示例性应用。
从数据源端接收业务请求中的trigger请求,以及针对trigger请求通过进程A中的多个线程发送至数据目的端,去实现该trigger请求,并对该trigger请求进行响应,反馈至数据源端。而在数据传输的过程中,基于trigger请求的特性,在进程A中的不同线程中(例如线程0)中还会生成order请求(自生请求),然后将trigger请求和order请求作为源数据进行流量控制处理后,再传输至数据目的端(即网络传输后端的进程B),而流控处理是由流控处理装置实现的。具体的流量控制的过程为流量控制装置将trigger请求和order请求通过请求深度控制模块实现通过进行预设请求深度条件的过程,进行流量控制的过程,即S101-S105,还可以结合通过带宽统计模块进行带宽控制模块进行流量控制,同时还可以采用预设反馈调节模型(即PID算法反馈调节)和带宽统计模块统计的带宽对order请求的生成速率进行调节,进而影响带宽统计模块的带宽,进而对整个流量控制装置的流量控制产生有效的影响。
本发明实施例提供一种存储有可执行流量控制指令的存储介质,其中存储有可执行流量控制指令,当可执行流量控制指令被处理器执行时,将引起处理器执行本发明实施例提供的流量控制方法,例如,如图6、图8和图10示出的流量控制方法。
在示例性实施例中,本发明实施例提供了一种存储介质,存储介质可为光盘、闪存或磁盘等存储介质,可选为非瞬间存储介质。作为示例,软件模块可以位于存储介质中,示例性的,存储介质可以是如图4示出的存储器340,处理器310读取存储器340中的信息,结合其硬件完成本发明实施例提供的应用于服务器的流量控制方法,其中,存储介质上存储有可执行流量控制指令(即程序341),所述可执行程序341被处理器310执行时,实现本发明实施例提供的流量控制方法。
在本发明的一些实施例中,存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在本发明的一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,通过本发明实施例,采用高效无锁的流速统计,适用于多线程并发环境。以及通过请求深度和带框的流控二次流控,保证服务质量,利用自动控制理论闭环调节算法:PID算法来对自生请求的生产效率反馈调节,使得系统达到稳态,进一步降低等待的时延,实现流量的综合控制,考虑维度较多,提升了整个流量控制的效果。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
Claims (15)
1.一种流量控制方法,其特征在于,包括:
接收业务请求;
从预设令牌资源桶中读取当前令牌资源;
当所述当前令牌资源为可用时,获取所述预设令牌资源桶中的实际令牌资源,根据所述当前令牌资源和所述实际令牌资源,检测所述预设令牌资源桶中的请求深度是否满足预设请求深度条件,所述请求深度表征业务请求对应的可用资源量;
若满足所述预设请求深度条件,则采用所述预设令牌资源桶中的第一令牌资源进行所述业务请求的下发;所述第一令牌资源为从所述当前令牌资源中确定出的供所述业务请求使用的资源;
当接收到所述业务请求的请求响应时,将所述第一令牌资源释放至所述预设令牌资源桶中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述当前令牌资源和所述实际令牌资源,检测所述预设令牌资源桶中的请求深度是否满足预设请求深度条件,包括:
当所述实际令牌资源与所述当前令牌资源相同时,表征检测到所述预设令牌资源桶中的请求深度满足预设请求深度条件;
当所述实际令牌资源与所述当前令牌资源不相同时,表征检测到所述预设令牌资源桶中的请求深度不满足预设请求深度条件。
3.根据权利要求1所述的方法,其特征在于,所述根据所述当前令牌资源和所述实际令牌资源,检测所述预设令牌资源桶中的请求深度是否满足预设请求深度条件之后,所述方法还包括:
当所述当前令牌资源为不可用时,表征检测到预设令牌资源桶中的请求深度不满足预设请求深度条件,将所述业务请求挂起。
4.根据权利要求2所述的方法,其特征在于,所述获取所述预设令牌资源桶中的实际令牌资源之后,所述方法还包括:
当所述实际令牌资源与所述当前令牌资源不相同时,将所述实际令牌资源更新为下一次的当前令牌资源,以进行下一次的请求深度的检测。
5.根据权利要求1所述的方法,其特征在于,所述根据所述当前令牌资源和所述实际令牌资源,检测所述预设令牌资源桶中的请求深度是否满足预设请求深度条件之后,所述方法还包括:
统计预设时间段内的当前带宽;
若满足所述预设请求深度条件,则检测所述当前带宽是否满足预设带宽阈值;
当满足所述预设带宽阈值时,采用所述预设令牌资源桶中的第一令牌资源进行所述业务请求的下发;
当不满足所述预设带宽阈值时,则将所述业务请求挂起。
6.根据权利要求1所述的方法,其特征在于,所述接收业务请求之后,所述方法还包括:
将所述业务请求存储在预设循环数组中,所述预设循环数组用于表征预设时间段内的业务流量。
7.根据权利要求5所述的方法,其特征在于,所述统计预设时间段内的当前带宽,包括:
从预设循环数组中统计从当前时间点开始向前的预设时间段内的业务流量;
根据所述业务流量和所述预设时间段,获取所述当前带宽。
8.根据权利要求6或7所述的方法,其特征在于,
所述预设循环数组按照预设时间间隔划分为N个数据格,所述N个数据格形成一个具有时间顺序的环形数组,其中,N为大于等于2的正整数,并且所述预设时间间隔与N的乘积为所述预设时间段。
9.根据权利要求5所述的方法,其特征在于,所述业务请求包括:输入输出IO请求和自生请求,所述自生请求是根据IO请求生成的自身内部请求,所述方法还包括:
在统计所述预设时间段内的所述当前带宽之后,将所述当前带宽输入至预设反馈调节模型中,输出自生请求的当前生成速率;所述预设反馈调节模型用于表征带宽和自生请求的生成速率的对应的反相关性的;
采用所述当前生成速率对所述自生请求进行调节,进而调节所述当前带宽,直至达到稳态。
10.一种流量控制装置,其特征在于,包括:
接收单元,用于接收业务请求;
获取单元,用于从预设令牌资源桶中读取当前令牌资源;
检测单元,用于当所述当前令牌资源为可用时,获取所述预设令牌资源桶中的实际令牌资源,根据所述当前令牌资源和所述实际令牌资源,检测所述预设令牌资源桶中的请求深度是否满足预设请求深度条件,所述请求深度表征业务请求对应的可用资源量;
下发单元,用于若满足所述预设请求深度条件,则采用所述预设令牌资源桶中的第一令牌资源进行所述业务请求的下发;所述第一令牌资源为从所述当前令牌资源中确定出的供所述业务请求使用的资源;
资源更新单元,用于当接收到所述业务请求的请求响应时,将所述第一令牌资源释放至所述预设令牌资源桶中。
11.根据权利要求10所述的装置,其特征在于,所述流量控制装置还包括:挂起单元;
所述获取单元,还用于所述根据所述当前令牌资源和所述实际令牌资源,检测所述预设令牌资源桶中的请求深度是否满足预设请求深度条件之后,统计预设时间段内的当前带宽;
所述检测单元,还用于若满足所述预设请求深度条件,则检测所述当前带宽是否满足预设带宽阈值;
所述下发单元,还用于当满足所述预设带宽阈值时,采用所述预设令牌资源桶中的第一令牌资源进行所述业务请求的下发;
所述挂起单元,用于当不满足所述预设带宽阈值时,则将所述业务请求挂起。
12.根据权利要求10所述的装置,其特征在于,所述流量控制装置还包括:存储单元;
所述存储单元,用于所述接收业务请求之后,将所述业务请求存储在预设循环数组中,所述预设循环数组用于表征预设时间段内的业务流量。
13.根据权利要求11所述的装置,其特征在于,所述业务请求包括:输入输出IO请求和自生请求,所述自生请求是根据IO请求生成的自身内部请求;所述流量控制装置还包括:调节单元;
所述调节单元,用于在统计所述预设时间段内的所述当前带宽之后,将所述当前带宽输入至预设反馈调节模型中,输出自生请求的当前生成速率;所述预设反馈调节模型用于表征带宽和自生请求的生成速率的对应的反相关性的;及采用所述当前生成速率对所述自生请求进行调节,进而调节所述当前带宽,直至达到稳态。
14.一种流量控制装置,其特征在于,包括:
存储器,用于存储可执行流量控制指令;
处理器,用于执行所述存储器中存储的可执行流量控制指令时,实现权利要求1至9任一项所述的方法。
15.一种存储介质,其特征在于,存储有可执行流量控制指令,用于引起处理器执行时,实现权利要求1至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811191724.3A CN110198272B (zh) | 2018-10-12 | 2018-10-12 | 一种流量控制方法及装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811191724.3A CN110198272B (zh) | 2018-10-12 | 2018-10-12 | 一种流量控制方法及装置、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110198272A CN110198272A (zh) | 2019-09-03 |
CN110198272B true CN110198272B (zh) | 2022-05-17 |
Family
ID=67751134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811191724.3A Active CN110198272B (zh) | 2018-10-12 | 2018-10-12 | 一种流量控制方法及装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110198272B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110647115B (zh) * | 2019-07-18 | 2021-04-06 | 浙江蓝卓工业互联网信息技术有限公司 | 一种基于工业互联网操作系统的数据采集方法 |
CN111158878B (zh) * | 2019-12-30 | 2023-08-29 | 北京三快在线科技有限公司 | 资源转移请求线程控制方法、装置及存储介质 |
CN113708945B (zh) * | 2020-05-20 | 2023-04-28 | 中国移动通信集团浙江有限公司 | 基于切片分组网的资源分配方法、装置及计算设备 |
CN113765811B (zh) * | 2020-06-05 | 2024-04-16 | 腾讯科技(深圳)有限公司 | 一种流量控制方法、装置、设备及存储介质 |
CN112600761B (zh) * | 2020-12-11 | 2024-04-09 | 腾讯科技(深圳)有限公司 | 一种资源分配的方法、装置及存储介质 |
CN112463066B (zh) * | 2020-12-11 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种控制分布式块存储逻辑卷突发服务质量的方法和设备 |
CN112714029B (zh) * | 2021-02-09 | 2023-02-21 | 北京金山云网络技术有限公司 | 一种内容分发网络带宽调度的方法、装置及设备 |
CN113326132B (zh) * | 2021-06-04 | 2023-06-09 | 深圳前海微众银行股份有限公司 | 一种信息调节方法、设备及存储介质 |
CN113452620A (zh) * | 2021-06-22 | 2021-09-28 | 新华三信息安全技术有限公司 | 一种负载分担方法及装置 |
CN114039854A (zh) * | 2021-10-26 | 2022-02-11 | 北京航天科工世纪卫星科技有限公司 | 一种基于pid算法的卫星动态带宽自适应调整方法 |
CN114500385B (zh) * | 2021-12-23 | 2024-10-18 | 武汉微创光电股份有限公司 | 一种通过fpga实现千兆以太网数据流量整形的方法及系统 |
CN115174487B (zh) * | 2022-09-06 | 2022-12-06 | 浙江大华技术股份有限公司 | 一种高并发限流方法、装置以及计算机存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9306939B2 (en) * | 2014-05-30 | 2016-04-05 | Oracle International Corporation | Authorization token cache system and method |
CN106713168B (zh) * | 2016-12-21 | 2020-03-31 | 上海艾融软件股份有限公司 | 一种流量控制方法及系统 |
-
2018
- 2018-10-12 CN CN201811191724.3A patent/CN110198272B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110198272A (zh) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110198272B (zh) | 一种流量控制方法及装置、存储介质 | |
US20210329077A1 (en) | System and method for throttling service requests having non-uniform workloads | |
CN108984282B (zh) | 具有闭环性能控制器的amp体系结构的调度器 | |
CN112003795B (zh) | 一种动态预防流量攻击的方法、系统、设备及存储介质 | |
US9419904B2 (en) | System and method for throttling service requests using work-based tokens | |
Allard et al. | FlowVR: a middleware for large scale virtual reality applications | |
US20120102503A1 (en) | Green computing via event stream management | |
Olston et al. | Best-effort cache synchronization with source cooperation | |
Nguyen et al. | Real-time serverless: Enabling application performance guarantees | |
US9304814B2 (en) | Determine variable wait time in an asynchronous call-back system based on calculated average sub-queue wait time | |
JP2006515690A (ja) | 複数のプロセッサを有するデータ処理システムと、複数のプロセッサを有するデータ処理システムのためのタスクスケジューラと、タスクスケジューリングの対応する方法 | |
CN114390000B (zh) | 基于入队整形的tsn流量调度方法及相关设备 | |
Zacheilas et al. | Maximizing determinism in stream processing under latency constraints | |
US20120297216A1 (en) | Dynamically selecting active polling or timed waits | |
US11422857B2 (en) | Multi-level scheduling | |
US20240333662A1 (en) | Multi-user flexible ethernet fine granularity time slot allocation method and apparatus | |
TWI435574B (zh) | 處理裝置及其操作方法 | |
US11997182B1 (en) | Adaptive system and method for dynamically adjusting message rates through a transport | |
Yu et al. | Cebinae: Scalable in-network fairness augmentation | |
Wang et al. | Energy minimization for federated asynchronous learning on battery-powered mobile devices via application co-running | |
CN114064316A (zh) | 一种多路采集数据的同步方法及系统 | |
Cho et al. | Protego: Overload Control for Applications with Unpredictable Lock Contention | |
US11886916B2 (en) | System for adaptive multithreaded recalculation operations | |
WO2021018058A1 (zh) | 系统过负荷控制方法及装置 | |
Siyoum et al. | Resource-efficient real-time scheduling using credit-controlled static-priority arbitration |
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 |