目录
一、限流前言
无论是传统还是互联网技术框架,我们要保证系统的高可用----减少系统不能提供服务的时间,保证服务高度可用性。其中,保障高可用的实践方案之一:限流。
按照个人理解,限流可分为如下:
1.1、网关限流
一般是借用第三方组件技术来实现,主要在高并发场景的系统架构使用的较多。
1.2、服务端限流–单机限流
主要有三种常见的算法:计数器、漏桶算法、令牌桶算法
计数器
如限流QPS为100,那么1秒内最多100个请求,超过的给拒绝。
漏桶算法
一个固定容量的漏桶按照常量固定速率流出水滴。能够让突发流量被整形,以便为网络提供稳定的流量。
流入桶的速率任意,如果桶容量超过了,那么就丢弃水滴。但流出桶的速率固定不变【无法解决系统突发流量】。
令牌桶算法
保证均匀速度产生令牌,一个令牌对应处理一个请求。同时,产生的令牌数量达到了桶的容量时,会被丢弃。那么能很好地处理突发高流量。
令牌桶有一定容量,后台服务以恒定速率向桶中放入令牌(token),当桶中数量超过容量后,多余的令牌直接丢弃。当N个请求进入,从桶中拿N个令牌,能拿到的请求继续后续流程