一种应用层流量限速方法、终端设备及存储介质与流程

文档序号:24539147发布日期:2021-04-02 10:22阅读:231来源:国知局
一种应用层流量限速方法、终端设备及存储介质与流程

本发明涉及通讯技术领域,尤其涉及一种应用层流量限速方法、终端设备及存储介质。



背景技术:

常见的流量限流大部分是应用于网络物理设备(比如路由器、交互机)、主机网卡和应用层的nginx限速模块中。针对网络物理设备进行限流有以下问题:(1)网络物理设备配置不能轻易修改,会影响网络上的所有应用;(2)商业环境不能修改用户网络环境;(3)应用层控制网络物理设备需要考虑设备,型号,驱动等问题。针对主机网卡层面限流有以下问题:(1)只能限制单台主机的流量,不能保护整个带宽;(2)分布式、集群环境可能涉及大量主机,一台台配置不合理,浪费人力资源,不方便管理;(3)影响主机上的其他应用。而针对nginx限速模块限流有以下问题:nginx限速模块支持2种模式限制连接数,限制请求速率,不能直接限制请求流量的大小,请求中可能会占用大量带宽,无法避免网络风暴。



技术实现要素:

为了解决上述问题,本发明提出了一种应用层流量限速方法、终端设备及存储介质。

具体方案如下:

一种应用层流量限速方法,包括以下步骤:

s1:接收输入的文件流;

s2:初始化设定流量申请比例ratio=0.1,剩余流量bandwidth=最大带宽max_bandwidth;

s3:向流量限速系统申请ratio*bandwidth个令牌,如果申请失败,进入s4;如果申请成功,进入s5;

s4:根据申请失败时返回的当前流量限速系统的请求数和流量限速系统的剩余流量,重新设定流量申请比例ratio=1/当前流量限速系统的请求数,剩余流量bandwidth=流量限速系统的剩余流量,返回s3;

s5:将ratio*bandwidth*k大小的文件流写入网络流,k表示一个令牌对应的带宽;

s6:判断文件是否读完,如果是,结束;否则,进入s3。

进一步的,步骤s3中申请成功的判断标准为:申请令牌数ratio*bandwidth<流量限速系统的可用令牌数;申请失败的判断标准为:申请令牌数ratio*bandwidth≥流量限速系统的可用令牌数。

进一步的,步骤s5中k为1kb。

一种应用层流量限速终端设备,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例上述的方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述的方法的步骤。

本发明采用如上技术方案,并具有有益效果:

(1)应用层调用方便;

(2)支持对全部请求或者部分请求限速;

(3)可以有效防止网络风暴,保护带宽资源;

(4)支持分布式部署。

附图说明

图1所示为本发明实施例一中带宽划分的示意图。

图2所示为本发明实施例一方法的流程图。

具体实施方式

为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。

现结合附图和具体实施方式对本发明进一步说明。

实施例一:

该实施例中将允许使用的带宽分为多份,每份代表1kb大小的带宽。如图1所示,将允许使用的带宽分为80份,即为8*10的方格,白色表示已经使用,灰色表示空闲,则从图1中可得,系统限速为80kb/s,已使用14kb,一个单元对应1kb。

应用层传输文件时所用的流量需要先申请令牌,当申请令牌成功时再根据令牌的个数申请缓冲区,之后将缓冲区的比特流刷新到网络输出流。

为了充分利用带宽,每次申请的令牌数不是固定,申请的令牌数主要由2个值决定,分别为:a.流量限速系统允许的最大值maxbandwith;b.应用缓冲区大小,缓冲区太大会导致应用发生oom。通过设定的用于流量控制和解决拥堵问题的令牌数阈值threshold来确定每次申请的令牌数的个数。

基于上述的原理,本发明实施例提供了一种应用层流量限速方法,如图2所示,所述方法包括以下步骤:

s1:接收输入的文件流。

将文件抽象成流后,控制网速即控制文件流流向网络流。

s2:初始化设定流量申请比例ratio=0.1,剩余流量bandwidth=最大带宽max_bandwidth。

s3:向流量限速系统申请ratio*bandwidth个令牌,如果申请失败,进入s4;如果申请成功,进入s5。

申请成功的判断标准为:申请令牌数ratio*bandwidth<流量限速系统的可用令牌数,表示资源充足;申请失败的判断标准为:申请令牌数ratio*bandwidth≥流量限速系统的可用令牌数,表示资源不足。流量限速系统的可用令牌数由步骤s2设定的最大带宽max_bandwidth确定。申请除了返回状态,还返回当前流量限速系统的剩余流量和当前流量限速系统的请求数(请求下载文件数)。

s4:根据申请失败时返回的当前流量限速系统的请求数和流量限速系统的剩余流量,重新设定流量申请比例ratio=1/当前流量限速系统的请求数,剩余流量bandwidth=流量限速系统的剩余流量,返回s3。

s5:将ratio*bandwidth*k大小的文件流写入网络流,k表示一个令牌对应的带宽。

该实施例中k为1kb。需要说明的是,由于需要尽最大努力利用现有带宽,流量限速系统的最小单位是1kb,小于1kb会有所浪费。另外也可以采用缓冲区再写入网络流,或者直接将文件流写入网络流。

s6:判断文件是否读完,如果是,结束;否则,进入s3。

下面进行实例说明:

假设请求a正在下载文件,这次申请流量限速系统有rn个请求,剩余流量fn,上次申请流量限速系统有rn+1个请求,剩余流量fn+1,分析矩阵如表1所示。

表1

需要说明的是,资源竞争表示多个请求资源竞争,并不代表全部都获取不到资源,只是请求中会存在申请失败的,也会有申请成功的。

下面模拟固定请求数的场合,按照本实施例上述方法的步骤得到的每次分配的流量比例如表2所示。

表2

需要说明的是,当流量限速系统单独提供服务时,忽略http头部的流量和自身请求流量。

本发明实施例具有以下技术效果:

(1)能对经过流量限速系统的流量进行拦截后,再流向网络,起到限速的功能,避免网络风暴。

(2)支持热部署,热启动,当修改最大带宽时无需重启设备。

本发明实施例方法可以应用于以下应用场景:

(1)打造独立应用层软件限流系统产品。

(2)提供第三方依赖包,联合nginx依赖模块。

(3)视频网站、直播等视频播放根据业务需求创建不同流量限制值进行限速,比如vip通道和一般通道。

实施例二:

本发明还提供一种应用层流量限速终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例一的上述方法实施例中的步骤。

进一步地,作为一个可执行方案,所述应用层流量限速终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述应用层流量限速终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述应用层流量限速终端设备的组成结构仅仅是应用层流量限速终端设备的示例,并不构成对应用层流量限速终端设备的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述应用层流量限速终端设备还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。

进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述应用层流量限速终端设备的控制中心,利用各种接口和线路连接整个应用层流量限速终端设备的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述应用层流量限速终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述方法的步骤。

所述应用层流量限速终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)以及软件分发介质等。

尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1