一、限流算法
限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。
在开发高并发系统时有三把利器用来保护系统:
- 缓存:缓存的目的是提升系统访问速度和增大系统处理容量
- 降级:降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行
- 限流:限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理。
我们经常在调别人的接口的时候会发现有限制,比如微信公众平台接口、百度API Store、聚合API等等这样的,对方会限制每天最多调多少次或者每分钟最多调多少次。
常用的更平滑的限流算法有两种:
- 漏桶算法
- 令牌桶算法
两种限流的算法确有其独到之处,其他实现比如滑动时间窗或者三色速率标记法,其实是“漏桶”与“令牌桶”的变种。要么将“漏桶”容积换成了单位时间,要么是按规则将请求标记颜色进行处理,底层还是“令牌”的思想。
1.1 漏桶算法
水(请求)以任意的速度先进入到漏桶里,桶以固定的速度出水,当水流入桶的速度大于水流出的速度,就会直接溢出(拒绝服务),可以看出漏桶算法能强行限制数据的传输速率。文章来源:https://www.toymoban.com/news/detail-497685.html
- 入桶:以任意速率往桶中放入水滴。
- 出桶:以固定速率从桶中流出水滴。
技术本质:总量控制,桶的大小是设计关键。文章来源地址https://www.toymoban.com/news/detail-497685.html
到了这里,关于Spring Cloud Gateway自带RequestRateLimiter限流应用及扩展 | Spring Cloud 16的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!