CN111641563B - 基于分布式场景的流量自适应方法与系统 - Google Patents
基于分布式场景的流量自适应方法与系统 Download PDFInfo
- Publication number
- CN111641563B CN111641563B CN202010466150.7A CN202010466150A CN111641563B CN 111641563 B CN111641563 B CN 111641563B CN 202010466150 A CN202010466150 A CN 202010466150A CN 111641563 B CN111641563 B CN 111641563B
- Authority
- CN
- China
- Prior art keywords
- count
- token
- request
- tokens
- current limiting
- 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
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
-
- 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/22—Traffic shaping
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及云技术领域,公开了一种基于分布式场景的流量自适应方法,包括:在接收到客户端发送至服务端的请求时,获取qps计数器对应的第一计数以及超时计数器对应的第二计数,所述第一计数包括发送请求的次数,所述第二计数包括调用超时请求的次数;根据所述第一计数与所述第二计数判断是否进行限流处理;当进行限流处理时,获取令牌桶中的令牌,以在获取到所述令牌时将所述请求发送至所述服务端。能够自适应的进行限流处理。
Description
技术领域
本发明实施例涉及云技术领域,尤其涉及一种基于分布式场景的流量自适应方法与系统。
技术背景
公司部署计算型的云服务时,经常遇到云主机的性能是不一致的,机器间的性能可相差30%,更严重的是由于是多实例部署主机,经常在晚上(各大网站的高峰期)有某些机器的系统cpu突然飙高(原因是一次系统调用消耗突然增加,系统cpu能飙到90%,机器基本不可用)。究其原因,在同一个物理机上虚拟好多云主机,并且云主机之间隔离做的不好,一台云主机可能会影响同一物理机上的另一台云主机,导致云主机性能有问题的可能是另外一个集群应用使用的云主机。
目前,进行请求调用时,每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性。即接口也需要安装上保险丝,以防止非预期的请求对系统压力过大而引起的系统瘫痪。业界一般的流控策略是静态配置,且基于路由的动态流量分发也仅仅解决流量均衡问题,流量本身的控制粒度偏弱。
对于分布式服务的框架来说,除了远程调用,还要进行服务的治理。当进行促销的时候,所有的资源都用来完成重要的业务,就比如双11的时候,主要的业务就是让用户查询商品,以及购买支付,此时,金币查询、积分查询等业务就是次要的,因此要对这些服务进行服务的降级,典型的服务降级算法是采用令牌桶算法,但是令牌桶算法不能做到自适应的进行流量调度。
发明内容
有鉴于此,本发明实施例的目的是提供一种基于分布式场景的流量自适应方法与系统,能够自适应的进行限流处理。
为实现上述目的,本发明实施例提供了一种基于分布式场景的流量自适应方法,包括:
在接收到客户端发送至服务端的请求时,获取qps计数器对应的第一计数以及超时计数器对应的第二计数,所述第一计数包括发送请求的次数,所述第二计数包括调用超时请求的次数;
根据所述第一计数与所述第二计数判断是否进行限流处理;
当进行限流处理时,获取令牌桶中的令牌,以在获取到所述令牌时将所述请求发送至所述服务端。
进一步地,所述根据所述第一计数与所述第二计数判断是否进行限流处理包括:
当所述第一计数小于所述第二计数时,则判断为不需要进行限流处理;
当所述第一计数大于所述第二计数时,则判断为需要进行限流处理。
进一步地,所述当进行限流处理时,获取令牌桶中的令牌,以在获取到所述令牌时将所述请求发送至所述服务端包括:
当需要进行限流处理时,初始化所述qps计数器的第一计数与初始化所述超时计数器的第二计数,并将所述令牌桶的初始令牌数确定为:(第二计数-第一计数)/2,用以在获取到所述令牌时将所述请求发送至所述服务端。
进一步地,所述当进行限流处理时,获取令牌桶中的令牌,以在获取到所述令牌时将所述请求发送至所述服务端之后,包括:
下一个预设采样周期内,重新统计所述qps计数器与所述超时计数器的计数,得到第三计数以及第四计数,并记录采样时间;
判断所述第二计数是否大于预设阈值;
若所述第二计数大于所述预设阈值,根据所述第三计数、所述第四计数以及所述预设采样周期调整所述令牌桶中的令牌数;
若所述第二计数小于所述预设阈值,根据所述采样时间以及所述第三计数、所述第四计数调整所述令牌数。
进一步地,所述若所述第二计数大于预设阈值,根据所述第三计数、所述第四计数以及所述预设采样周期调整所述令牌数包括:
获取预设的第一调整公式;
根据所述第一调整公式调整所述令牌数;
还包括将所述令牌数上传至区块链中;
其中,所述第一调整公式具体为:token=token'-(b-a)/t,t表示预设采样周期,a表示所述第三计数,b表示所述第四计数,token表示所述令牌数,token'表示所述初始令牌数。
进一步地,所述若所述第二计数小于预设阈值,根据所述采样时间以及所述预设采样周期调整所述令牌数包括:
获取预设的第二调整公式;
根据所述第二调整公式调整所述令牌数;
其中,所述第二调整公式具体为:token=token'^(t2-t1),t1表示当前采样时间,t2表示所述下一个采样时间,token表示所述令牌数,token'表示所述初始令牌数。
为实现上述目的,本发明实施例还提供了一种基于分布式场景的流量自适应系统,包括:
第一获取模块,用于在接收到客户端发送至服务端的请求时,获取qps计数器对应的第一计数以及超时计数器对应的第二计数,所述第一计数包括发送请求的次数,所述第二计数包括调用超时请求的次数;
判断模块,用于根据所述第一计数与所述第二计数判断是否进行限流处理;
第二获取模块,用于当进行限流处理时,获取令牌桶中的令牌,以在获取到所述令牌时将所述请求发送至所述服务端。
进一步地,所述判断模块进一步用于:
当所述第一计数小于所述第二计数时,则判断为不需要进行限流处理;
当所述第一计数大于所述第二计数时,则判断为需要进行限流处理。
为实现上述目的,本发明实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的基于分布式场景的流量自适应方法的步骤。
为实现上述目的,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上所述的基于分布式场景的流量自适应方法的步骤。
本发明实施例提供的基于分布式场景的流量自适应方法与系统,通过在预设时间周期内对请求的第一计数qps与超时的第二计数qps进行统计计数,每次重新计数将第一计数qps与第二计数qps进行初始化,得到第三计数与第四计数。通过第一计数与第二计数判断服务端是否需要进行限流处理,根据第三计数与第四计数调整令牌数,以保证实际发送的第一计数qps在接近服务端真实处理能力时令牌数量只在很小的范围内调整。且依据令牌数,自动调整调用端请求的链路,从而也达到了流量整形的目的。
附图说明
图1为本发明基于分布式场景的流量自适应方法实施例一的流程图。
图2为本发明基于分布式场景的流量自适应方法实施例一中步骤S120的流程图。
图3为本发明基于分布式场景的流量自适应方法实施例一中步骤S160的流程图。
图4为本发明基于分布式场景的流量自适应方法实施例一中步骤S163的流程图。
图5为本发明基于分布式场景的流量自适应方法实施例一中步骤S164的流程图。
图6为本发明基于分布式场景的流量自适应系统实施例二的程序模块示意图。
图7为本发明计算机设备实施例三的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
参阅图1,示出了本发明实施例一之基于分布式场景的流量自适应方法的步骤流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以计算机设备2为执行主体进行示例性描述。具体如下。
步骤S100,在接收到客户端发送至服务端的请求时,获取qps计数器对应的第一计数以及超时计数器对应的第二计数,所述第一计数包括发送请求的次数,所述第二计数包括调用超时请求的次数。
具体地,预先设置好采样周期,可以为5秒、10秒等时间周期。通过计时器计算时间,每隔预设采样周期,当调用端每发送一次发送请求时,qps计数器执行加1操作,以进行统计请求qps。QPS即Queries Per Second的缩写,每秒能处理查询数目。是一台服务端每秒能够相应的查询次数,是对一个特定的查询服务端在规定时间内所处理流量多少的衡量标准。当进行限流处理前,统计当前预设采样周期内的请求qps,得到第一计数,调用端可以为客户端。
举例而言,步骤S100中的请求可以理解为是:是指从调用端(可以理解为客户端)到服务端端的请求消息,请求调用页面以进行查看,如输入网址后回车。主要为http请求,调用端向服务端发送请求命令。http请求的方法包括有8种:GET(完整请求一个资源)、POST(提交表单)、PUT(上传文件)、DELETE(删除)、PATCH、HEAD(仅请求响应首部)、OPTIONS(返回请求的资源所支持的方法)、TRACE(追求一个资源请求中间所经过的代理)。例如:GET/hello/index.jsp HTTP/1.1。
具体地,通过计时器计算时间,每隔预设时间周期,当调用请求在预设调用时间内,未得到回应时,或者由于调用端到服务端之间的软件或硬件有问题,导致这个请求可能无法送答服务端,或者送达到服务端但服务端无回应,即请求发送失败时,表示该调用请求的调用时间超时。服务端超时的可能性有以下几种:网络没有正确的连接上;网络的连接速度要小于调用端的要求;调用端的服务端正在维护;设置中网络类型与机器的网络类型不符。线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。当请求的调用时间超时或者调用端的线程繁忙时,启动超时计数器进行计数操作,得到第二计数qps。
步骤S120,根据所述第一计数与所述第二计数判断是否进行限流处理。
具体地,当第一计数小于第二计数时,判断服务端不需要进行限流处理;当第一计数大于第二计数时,判断服务端需要进行限流处理。限流需要提前评估好,如果用的不当,可能会导致有些该限制的流量没有被限流,服务被这些过载流量打垮。有些不该限制流量的被限制,被用户抱怨。例如,整体服务的QPS是400/s,如果限流阀值是300,就会导致每秒有100个请求本该接受服务,却被限制访问,如果阀值是500,就会导致每秒有100个请求负载,时间越长累积越多,这些过载的流量就有可能导致整个服务的瘫痪。
示例性地,参阅图2,所述步骤S120进一步包括:
步骤S121,当所述第一计数小于所述第二计数时,则判断为不需要进行限流处理。
具体地,当服务器接收的请求的第一计数小于,响应该请求的调用的第二请求时,表明服务器处于可应对请求的第一计数的情况下,不需要对服务器进行限流处理。
步骤S122,当所述第一计数大于所述第二计数时,则判断为需要进行限流处理。
具体地,当服务器接收的请求的第一计数大于,响应该请求的调用的第二请求时,表明服务器处于应对请求的第一计数不及时的情况下,需要对服务器进行限流处理。
步骤S140,当进行限流处理时,获取令牌桶中的令牌,以在获取到所述令牌时将所述请求发送至所述服务端。
具体地,当判断服务端需要进行限流处理时,初始化qps计数器的第一计数与初始化超时计数器的第二计数,并将当前令牌桶的初始令牌数确定为:(第一计数-第二计数)/2,以对当前周期内的请求进行限流处理。
示例性地,所述步骤S140进一步包括:
当需要进行限流处理时,初始化所述qps计数器的第一计数与初始化所述超时计数器的第二计数,并将所述令牌桶的初始令牌数确定为:(第二计数-第一计数)/2,用以在获取到所述令牌时将所述请求发送至所述服务端。
具体地,首先将qps计数器的第一计数重新执行计数操作,并且将重新计数操作之前得到的qps计数器的第一计数进行清零处理。初始化超时计数器的第二计数,首先将超时计数器的第二计数重新执行计数操作,并且将重新计数操作之前得到的超时计数器的第二计数进行清零处理。按照令牌桶算法进行限流处理,即将令牌桶的初始令牌数确定为:(第二计数-第一计数)/2,并按特定的速率(指数级)向令牌桶投放令牌;根据预设的匹配规则先对报文进行分类,不符合匹配规则的报文不需要经过令牌桶的处理,直接发送;符合匹配规则的报文,则需要令牌桶进行处理。当桶中有足够的令牌则报文可以被继续发送下去,同时令牌桶中的令牌量按报文的长度做相应的减少;当令牌桶中的令牌不足时,报文将不能被发送,只有等到桶中生成了新的令牌,报文才可以发送。这就可以限制报文的流量只能是小于等于令牌生成的速度,达到限制流量的目的。
示例性地,所述步骤S140之后还包括步骤S160。
具体地,当判断出服务器需要进行限流处理时,针对下一个预设采样周期,进行调整令牌数处理,以达到限流的效果。
示例性地,参阅图3,所述步骤S160进一步包括:
步骤S161,下一个预设采样周期内,重新统计所述qps计数器与所述超时计数器的计数,得到第三计数以及第四计数,并记录采样时间。
具体地,当服务端进行限流时,根据上一个预设采样周期调整当前预设采样周期内的令牌数。
步骤S162,判断所述第二计数是否大于预设阈值。
具体地,预设阈值根据服务器的想能进行设置的数值,以对服务器进行限流处理,平衡请求。根据判断结果对令牌数进行相应的调整,以实现限流处理。
步骤S163,若所述第二计数大于所述预设阈值,根据所述第三计数、所述第四计数以及所述预设采样周期调整所述令牌桶中的令牌数。
具体地,若在上一个周期内,如果超时计数器的第二计数大于预设阈值,可以为0,将缩小令牌数直到降为1,否则增加令牌数,直到令牌数大于第一计数qps,表示令牌数token>请求数(即第一计数)qps。
示例性地,参阅图4,所述步骤S163进一步包括:
步骤S163A,获取预设的第一调整公式。
具体地,预设的第一调整公式根据初始令牌数、第三计数、第四计数以及预设采样周期进行创建。
步骤S163B,根据所述第一调整公式调整所述令牌数;
其中,所述第一调整公式具体为:token=token'-(b-a)/t,t表示预设采样周期,a表示所述第三计数,b表示所述第四计数,token表示所述令牌数,token'表示所述初始令牌数。
具体地,令牌数量降低:假设当前采样时间区间为t,当前区间第三计数qps为a,第四计数qps为b,则令牌数量token=token-(a-b)/t。
步骤S163C还包括将令牌数上传至区块链中。基于令牌数得到对应的摘要信息,具体来说,摘要信息由令牌数进行散列处理得到,比如利用sha256s算法处理得到。将摘要信息上传至区块链可保证其安全性和对用户的公正透明性。用户设备可以从区块链中下载得该摘要信息,以便查证令牌数是否被篡改。
本示例所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
步骤S164,若所述第二计数小于所述预设阈值,根据所述采样时间以及所述第三计数、所述第四计数调整所述令牌数。
具体地,如果在上一采样周期在服务器能处理的预设阈值内,对初始令牌数执行增加操作,以增加服务器的处理能力,平衡请求数。
示例性地,参阅图5,所述步骤S164进一步包括:
步骤S164A,获取预设的第二调整公式。
具体地,预设的第二调整公式根据初始令牌数、采样时间、第三计数以及第四计数进行创建。
步骤S164B,根据所述第二调整公式调整所述令牌数。
其中,所述第二调整公式具体为:token=token'^(t2-t1),t1表示当前采样时间,t2表示所述下一个采样时间,token表示所述令牌数,token'表示所述初始令牌数。
具体地,令牌数量增加:假设上次采样时刻为t1,当前采样时刻为t2,则令牌数量token=token的(t2-t1)次方。令牌数从初始值开始按指数级增长,这样既能保证实际发送的qps在接近服务端真实处理能力时令牌数量只在很小的范围内调整,也能保证在订阅端在完全恢复或者进一步恶化后能够及时解除限流或加大限流。
实施例二
请继续参阅图6,示出了本发明基于分布式场景的流量自适应系统实施例二的程序模块示意图。在本实施例中,基于分布式场景的流量自适应系统20可以包括或被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明,并可实现上述基于分布式场景的流量自适应方法。本发明实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述基于分布式场景的流量自适应系统20在存储介质中的执行过程。以下描述将具体介绍本实施例各程序模块的功能:
第一获取模块200,用于在接收到客户端发送至服务端的请求时,获取qps计数器对应的第一计数以及超时计数器对应的第二计数,所述第一计数包括发送请求的次数,所述第二计数包括调用超时请求的次数。
具体地,预先设置好采样周期,可以为5秒、10秒等时间周期。通过计时器计算时间,每隔预设采样周期,当调用端每发送一次发送请求时,qps计数器执行加1操作,以进行统计请求qps。QPS即Queries Per Second的缩写,每秒能处理查询数目。是一台服务端每秒能够相应的查询次数,是对一个特定的查询服务端在规定时间内所处理流量多少的衡量标准。当进行限流处理前,统计当前预设采样周期内的请求qps,得到第一计数,调用端可以为客户端。
举例而言,步骤S100中的请求可以理解为是:是指从调用端(可以理解为客户端)到服务端端的请求消息,请求调用页面以进行查看,如输入网址后回车。主要为http请求,调用端向服务端发送请求命令。http请求的方法包括有8种:GET(完整请求一个资源)、POST(提交表单)、PUT(上传文件)、DELETE(删除)、PATCH、HEAD(仅请求响应首部)、OPTIONS(返回请求的资源所支持的方法)、TRACE(追求一个资源请求中间所经过的代理)。例如:GET/hello/index.jsp HTTP/1.1。
具体地,通过计时器计算时间,每隔预设时间周期,当调用请求在预设调用时间内,未得到回应时,或者由于调用端到服务端之间的软件或硬件有问题,导致这个请求可能无法送答服务端,或者送达到服务端但服务端无回应,即请求发送失败时,表示该调用请求的调用时间超时。服务端超时的可能性有以下几种:网络没有正确的连接上;网络的连接速度要小于调用端的要求;调用端的服务端正在维护;设置中网络类型与机器的网络类型不符。线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。当请求的调用时间超时或者调用端的线程繁忙时,启动超时计数器进行计数操作,得到第二计数qps。
判断模块202,用于根据所述第一计数与所述第二计数判断是否进行限流处理。
具体地,当第一计数小于第二计数时,判断服务端不需要进行限流处理;当第一计数大于第二计数时,判断服务端需要进行限流处理。限流需要提前评估好,如果用的不当,可能会导致有些该限制的流量没有被限流,服务被这些过载流量打垮。有些不该限制流量的被限制,被用户抱怨。例如,整体服务的QPS是400/s,如果限流阀值是300,就会导致每秒有100个请求本该接受服务,却被限制访问,如果阀值是500,就会导致每秒有100个请求负载,时间越长累积越多,这些过载的流量就有可能导致整个服务的瘫痪。
示例性地,所述判断模块202进一步用于:
当所述第一计数小于所述第二计数时,则判断为不需要进行限流处理。
具体地,当服务器接收的请求的第一计数小于,响应该请求的调用的第二请求时,表明服务器处于可应对请求的第一计数的情况下,不需要对服务器进行限流处理。
当所述第一计数大于所述第二计数时,则判断为需要进行限流处理。
具体地,当服务器接收的请求的第一计数大于,响应该请求的调用的第二请求时,表明服务器处于应对请求的第一计数不及时的情况下,需要对服务器进行限流处理。
第二获取模块204,用于当进行限流处理时,获取令牌桶中的令牌,以在获取到所述令牌时将所述请求发送至所述服务端。
具体地,当判断服务端需要进行限流处理时,初始化qps计数器的第一计数与初始化超时计数器的第二计数,并将令牌桶的初始令牌数确定为:(第一计数-第二计数)/2,以对当前周期内的请求进行限流处理。
示例性地,所述第二获取模块204进一步用于:
当需要进行限流处理时,初始化所述qps计数器的第一计数与初始化所述超时计数器的第二计数,并将所述令牌桶的初始令牌数确定为:(第二计数-第一计数)/2,用以在获取到所述令牌时将所述请求发送至所述服务端。
具体地,初始化qps计数器的第一计数表示,首先将qps计数器的第一计数重新执行计数操作,并且将重新计数操作之前得到的qps计数器的第一计数进行清零处理。初始化超时计数器的第二计数表示,首先将超时计数器的第二计数重新执行计数操作,并且将重新计数操作之前得到的超时计数器的第二计数进行清零处理。按照令牌桶算法进行限流处理,即将令牌桶的初始令牌数确定为:(第二计数-第一计数)/2,并按特定的速率(指数级)向令牌桶投放令牌;根据预设的匹配规则先对报文进行分类,不符合匹配规则的报文不需要经过令牌桶的处理,直接发送;符合匹配规则的报文,则需要令牌桶进行处理。当桶中有足够的令牌则报文可以被继续发送下去,同时令牌桶中的令牌量按报文的长度做相应的减少;当令牌桶中的令牌不足时,报文将不能被发送,只有等到桶中生成了新的令牌,报文才可以发送。这就可以限制报文的流量只能是小于等于令牌生成的速度,达到限制流量的目的。
示例性地,本系统还包括调整模块206,用于在下一个预设采样周期内,重新统计所述第一计数与所述第二计数,得到第三计数以及第四计数,并根据所述第三计数与所述第四计数调整令牌数。
具体地,当判断出服务器需要进行限流处理时,针对下一个预设采样周期,进行调整令牌数处理,以达到限流的效果。
示例性地,所述调整模块206进一步用于:
下一个预设采样周期内,重新统计所述第一计数与所述第二计数,得到第三计数以及第四计数,并记录采样时间。
具体地,当服务端进行限流时,根据上一个预设采样周期调整当前预设采样周期内的令牌数。
判断所述第二计数是否大于预设阈值。
具体地,预设阈值根据服务器的想能进行设置的数值,以对服务器进行限流处理,平衡请求。根据判断结果对令牌数进行相应的调整,以实现限流处理。
若所述第二计数大于所述预设阈值,根据所述第三计数、所述第四计数以及所述预设采样周期调整所述令牌数。
具体地,若在上一个周期内,如果超时计数器的第二计数大于预设阈值,可以为0,将缩小令牌数直到降为1,否则增加令牌数,直到令牌数大于第一计数qps,表示令牌数token>请求数(即第一计数)qps。
示例性地,所述调整模块206还用于:
获取预设的第一调整公式。
具体地,预设的第一调整公式根据初始令牌数、第三计数、第四计数以及预设采样周期进行创建。
根据所述第一调整公式调整所述令牌数;
其中,所述第一调整公式具体为:token=token'-(b-a)/t,t表示预设采样周期,a表示所述第三计数,b表示所述第四计数,token表示所述令牌数,token'表示所述初始令牌数。
具体地,令牌数量降低:假设当前采样时间区间为t,当前区间第三计数qps为a,第四计数qps为b,则令牌数量token=token-(b-a)/t。
示例性地,所述调整模块206还用于将令牌数上传至区块链中。基于令牌数得到对应的摘要信息,具体来说,摘要信息由令牌数进行散列处理得到,比如利用sha256s算法处理得到。将摘要信息上传至区块链可保证其安全性和对用户的公正透明性。用户设备可以从区块链中下载得该摘要信息,以便查证令牌数是否被篡改。
本示例所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
若所述第二计数小于所述预设阈值,根据所述采样时间以及所述第三计数、所述第四计数调整所述令牌数。
具体地,如果在上一采样周期在服务器能处理的预设阈值内,对初始令牌数执行增加操作,以增加服务器的处理能力,平衡请求数。
示例性地,所述调整模块208还用于:
获取预设的第二调整公式。
具体地,预设的第二调整公式根据初始令牌数、采样时间、第三计数以及第四计数进行创建。
根据所述第二调整公式调整所述令牌数。
其中,所述第二调整公式具体为:token=token'^(t2-t1),t1表示当前采样时间,t2表示所述下一个采样时间,token表示所述令牌数,token'表示所述初始令牌数。
具体地,令牌数量增加:假设上次采样时刻为t1,当前采样时刻为t2,则令牌数量token=token的(t2-t1)次方。令牌数从初始值开始按指数级增长,这样既能保证实际发送的qps在接近服务端真实处理能力时令牌数量只在很小的范围内调整,也能保证在订阅端在完全恢复或者进一步恶化后能够及时解除限流或加大限流。
实施例三
参阅图7,是本发明实施例三之计算机设备的硬件架构示意图。本实施例中,所述计算机设备2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。该计算机设备2可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图7所示,所述计算机设备2至少包括,但不限于,可通过系统总线相互通信连接存储器21、处理器22、网络接口23、以及基于分布式场景的流量自适应系统20。其中:
本实施例中,存储器21至少包括一种类型的计算机可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备2的内部存储单元,例如该计算机设备2的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器21还可以既包括计算机设备2的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备2的操作系统和各类应用软件,例如实施例二的基于分布式场景的流量自适应系统20的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备2的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如运行基于分布式场景的流量自适应系统20,以实现实施例一的基于分布式场景的流量自适应方法。
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述服务器2与其他电子装置之间建立通信连接。例如,所述网络接口23用于通过网络将所述服务器2与外部终端相连,在所述服务器2与外部终端之间的建立数据传输通道和通信连接等。所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,GSM)、宽带码分多址(Wideband CodeDivision Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。需要指出的是,图7仅示出了具有部件20-23的计算机设备2,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器21中的所述基于分布式场景的流量自适应系统20还可以被分割为一个或者多个程序模块,所述一个或者多个程序模块被存储于存储器21中,并由一个或多个处理器(本实施例为处理器22)所执行,以完成本发明。
例如,图6示出了所述实现基于分布式场景的流量自适应系统20实施例二的程序模块示意图,该实施例中,所述基于分布式场景的流量自适应系统20可以被划分为第一获取模块200、判断模块202以及第二获取模块204。其中,本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述基于分布式场景的流量自适应系统20在所述计算机设备2中的执行过程。所述程序模块200-204的具体功能在实施例二中已有详细描述,在此不再赘述。
实施例四
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储基于分布式场景的流量自适应系统20,被处理器执行时实现实施例一的基于分布式场景的流量自适应方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种基于分布式场景的流量自适应方法,其特征在于,包括:
在接收到客户端发送至服务端的请求时,获取qps计数器对应的第一计数以及超时计数器对应的第二计数,所述第一计数包括发送请求的次数,所述第二计数包括调用超时请求的次数;
根据所述第一计数与所述第二计数判断是否进行限流处理;
当进行限流处理时,获取令牌桶中的令牌,以在获取到所述令牌时将所述请求发送至所述服务端;
所述当进行限流处理时,获取令牌桶中的令牌,以在获取到所述令牌时将所述请求发送至所述服务端包括:当需要进行限流处理时,初始化所述qps计数器的第一计数与初始化所述超时计数器的第二计数,并将所述令牌桶的初始令牌数确定为:(第二计数-第一计数)/2,用以在获取到所述令牌时将所述请求发送至所述服务端。
2.根据权利要求1所述的基于分布式场景的流量自适应方法,其特征在于,所述根据所述第一计数与所述第二计数判断是否进行限流处理包括:
当所述第一计数小于所述第二计数时,则判断为不需要进行限流处理;
当所述第一计数大于所述第二计数时,则判断为需要进行限流处理。
3.根据权利要求1所述的基于分布式场景的流量自适应方法,其特征在于,所述当进行限流处理时,获取令牌桶中的令牌,以在获取到所述令牌时将所述请求发送至所述服务端之后,包括:
下一个预设采样周期内,重新统计所述qps计数器与所述超时计数器的计数,得到第三计数以及第四计数,并记录采样时间;
判断所述第二计数是否大于预设阈值;
若所述第二计数大于所述预设阈值,根据所述第三计数、所述第四计数以及所述预设采样周期调整所述令牌桶中的令牌数;
若所述第二计数小于所述预设阈值,根据所述采样时间以及所述第三计数、所述第四计数调整所述令牌数。
4.根据权利要求3所述的基于分布式场景的流量自适应方法,其特征在于,所述若所述第二计数大于预设阈值,根据所述第三计数、所述第四计数以及所述预设采样周期调整所述令牌数包括:
获取预设的第一调整公式;
根据所述第一调整公式调整所述令牌数;
还包括将所述令牌数上传至区块链中;
其中,所述第一调整公式具体为:token = token'-(b-a)/t,t表示预设采样周期,a表示所述第三计数,b表示所述第四计数,token表示所述令牌数,token'表示所述初始令牌数。
5.根据权利要求3所述的基于分布式场景的流量自适应方法,其特征在于,所述若所述第二计数小于预设阈值,根据所述采样时间以及所述预设采样周期调整所述令牌数包括:
获取预设的第二调整公式;
根据所述第二调整公式调整所述令牌数;
其中,所述第二调整公式具体为:token = token'^(t2-t1),t1表示当前采样时间,t2表示所述下一个采样时间,token表示所述令牌数,token'表示所述初始令牌数。
6.一种基于分布式场景的流量自适应系统,其特征在于,包括:
第一获取模块,用于在接收到客户端发送至服务端的请求时,获取qps计数器对应的第一计数以及超时计数器对应的第二计数,所述第一计数包括发送请求的次数,所述第二计数包括调用超时请求的次数;
判断模块,用于根据所述第一计数与所述第二计数判断是否进行限流处理;
第二获取模块,用于当进行限流处理时,获取令牌桶中的令牌,以在获取到所述令牌时将所述请求发送至所述服务端;
第二获取模块进一步用于:当需要进行限流处理时,初始化所述qps计数器的第一计数与初始化所述超时计数器的第二计数,并将所述令牌桶的初始令牌数确定为:(第二计数-第一计数)/2,用以在获取到所述令牌时将所述请求发送至所述服务端。
7.根据权利要求6所述的基于分布式场景的流量自适应系统,其特征在于,所述判断模块进一步用于:
当所述第一计数小于所述第二计数时,则判断为不需要进行限流处理;
当所述第一计数大于所述第二计数时,则判断为需要进行限流处理。
8.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-5中任一项所述的基于分布式场景的流量自适应方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如权利要求1-5中任一项所述的基于分布式场景的流量自适应方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010466150.7A CN111641563B (zh) | 2020-05-28 | 2020-05-28 | 基于分布式场景的流量自适应方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010466150.7A CN111641563B (zh) | 2020-05-28 | 2020-05-28 | 基于分布式场景的流量自适应方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111641563A CN111641563A (zh) | 2020-09-08 |
CN111641563B true CN111641563B (zh) | 2022-11-01 |
Family
ID=72330565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010466150.7A Active CN111641563B (zh) | 2020-05-28 | 2020-05-28 | 基于分布式场景的流量自适应方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111641563B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112398747A (zh) * | 2020-11-03 | 2021-02-23 | 深圳壹账通智能科技有限公司 | 一种限流方法、装置、计算机设备和存储介质 |
CN112491735A (zh) * | 2020-11-10 | 2021-03-12 | 京东数字科技控股股份有限公司 | 一种流量控制方法、装置、设备和计算机可读存储介质 |
CN112416964A (zh) * | 2020-11-17 | 2021-02-26 | 深圳依时货拉拉科技有限公司 | 一种数据处理的方法、装置、系统、计算机设备及计算机可读存储介质 |
CN115174588B (zh) * | 2022-07-28 | 2024-03-01 | 中国工商银行股份有限公司 | 带宽控制方法、装置、设备、存储介质和程序产品 |
CN115865820B (zh) * | 2022-11-23 | 2024-05-28 | 四川天邑康和通信股份有限公司 | 一种基于光猫流量监控的闹钟提醒系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108494703A (zh) * | 2018-03-08 | 2018-09-04 | 腾讯科技(深圳)有限公司 | 一种访问频率控制方法、装置及存储介质 |
CN110099009A (zh) * | 2018-01-31 | 2019-08-06 | 北京易真学思教育科技有限公司 | 基于接口响应时间趋势的动态限流方法及计算机可读介质 |
CN110213173A (zh) * | 2019-06-06 | 2019-09-06 | 北京百度网讯科技有限公司 | 流量控制方法及装置、系统、服务器、计算机可读介质 |
-
2020
- 2020-05-28 CN CN202010466150.7A patent/CN111641563B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110099009A (zh) * | 2018-01-31 | 2019-08-06 | 北京易真学思教育科技有限公司 | 基于接口响应时间趋势的动态限流方法及计算机可读介质 |
CN108494703A (zh) * | 2018-03-08 | 2018-09-04 | 腾讯科技(深圳)有限公司 | 一种访问频率控制方法、装置及存储介质 |
CN110213173A (zh) * | 2019-06-06 | 2019-09-06 | 北京百度网讯科技有限公司 | 流量控制方法及装置、系统、服务器、计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111641563A (zh) | 2020-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111641563B (zh) | 基于分布式场景的流量自适应方法与系统 | |
CN110276182B (zh) | Api分布式限流的实现方法 | |
JP6457447B2 (ja) | データセンターのネットワークトラフィックスケジューリング方法及び装置 | |
AU2014235793B2 (en) | Automatic tuning of virtual data center resource utilization policies | |
US10956596B2 (en) | System and method for automatically securing sensitive data in public cloud using a serverless architecture | |
US20160057201A1 (en) | File Uploading Method, Client, and Application Server in Cloud Storage, and Cloud Storage System | |
CN111614761B (zh) | 区块链消息传输方法、装置、计算机以及可读存储介质 | |
WO2021120975A1 (zh) | 一种监控方法及装置 | |
CN111698303A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN114257551A (zh) | 一种分布式限流的方法及系统、存储介质 | |
CN113411404A (zh) | 一种文件下载方法、装置、服务器及存储介质 | |
CN112165436A (zh) | 流量控制方法、装置及系统 | |
CN111343102A (zh) | 流速控制方法、服务端服务器、客户端服务器和系统 | |
CN111726266B (zh) | 热点数据分桶方法、系统和计算机设备 | |
WO2021174882A1 (zh) | 数据分片校验方法、装置、计算机设备及可读存储介质 | |
CN113505260A (zh) | 人脸识别方法、装置、计算机可读介质及电子设备 | |
CN105184559B (zh) | 一种支付系统及方法 | |
CN112969172B (zh) | 一种基于云手机的通讯流量控制方法 | |
CN112866296B (zh) | 应用线上验证方法、装置、设备及存储介质 | |
CN114513469A (zh) | 分布式系统的流量整形方法、装置和存储介质 | |
CN114707134A (zh) | 一种高性能密码卡安全管理方法、装置和系统 | |
KR102128832B1 (ko) | 네트워크 인터페이스 장치 및 그 네트워크 인터페이스 장치의 데이터 처리 방법 | |
CN113190364A (zh) | 远程调用管理方法、装置、计算机设备及可读存储介质 | |
CN114650252B (zh) | 基于企业服务总线的路由方法、装置及计算机设备 | |
CN111913732A (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 |