码迷,mamicode.com
首页 > 其他好文 > 详细

Guava-RateLimiter实现令牌桶控制接口限流方案

时间:2019-10-23 16:37:48      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:执行   center   body   ext   保护   oat   速度   假设   ant   

一.前言

  限流的目的是通过对并发/一个时间窗口内的请求进行限速来达到保护系统的效果,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理。

二.常见限流方案

  原理 优点 缺点

计数器法

在单位时间段内,对请求数进行计数,如果数量超过了单位时间的限制,则执行限流策略,当单位时间结束后,计数器清零,这个过程周而复始,就是计数器法。 null 不能均衡限流,在一个单位时间的末尾和下一个单位时间的开始,很可能会有两个访问的峰值,导致系统崩溃。

 

  漏桶算法                                                              

假设有一个水桶,水桶有一定的容量,所有请求不论速度都会注入到水桶中,然后水桶以一个恒定的速度向外将请求放出,当水桶满了的时候,新的请求被丢弃。 可以平滑请求,削减峰值。 瓶颈在漏出的速度,可能会拖慢整个系统,且不能有效地利用系统的资源。

令牌桶算法

(推荐)

有一个令牌桶,单位时间内令牌会以恒定的数量和速度加入到令牌桶中,所有请求都需要获取令牌才可正常访问。当令牌桶中没有令牌可取的时候,则拒绝请求。 相比漏桶算法,令牌桶算法允许一定的突发流量,但是又不会让突发流量超过我们给定的限制(单位时间窗口内的令牌数)。即限制了我们所说的 QPS(每秒查询率)。 null

 

 

Guava-RateLimiter实现令牌桶控制接口限流方案

标签:执行   center   body   ext   保护   oat   速度   假设   ant   

原文地址:https://www.cnblogs.com/xhq1024/p/11726873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!