限流算法
静态算法包含令牌桶、漏桶、固定窗口和滑动窗口。这些算法就是要求研发人员提前设置好阈值。在算法运行期间它是不会管服务器的真实负载的。
动态算法也叫做自适应限流算法,典型的是 BBR 算法。这一类算法利用一系列指标来判定是否应该减少流量或者放大流量。动态算法和 TCP 的拥塞控制是非常接近的,只不过 TCP控制的是报文流,而微服务控制的是请求流量
令牌桶:系统会以一个恒定的速率产生令牌,这些令牌会放到一个桶里面,每个请求只有拿到了令牌才会被执行。将漏桶算法看作是令牌桶算法的一种特殊形态。你将令牌桶中桶的容量设想为 0,就是漏桶了。
漏桶:是指当请求以不均匀的速度到达服务器之后,限流器会以固定的速率转交给业务逻辑。漏桶是绝对均匀的,而令牌桶不是绝对均匀的。
固定窗口:固定窗口是指在一个固定时间段,只允许执行固定数量的请求。
滑动窗口:也是指在一个固定时间段内,只允许执行固定数量的请求。区别就在于,滑动窗口是平滑地挪动窗口,而不像固定窗口那样突然地挪动窗口。
BBR: 的原理和实现都很有难度,大多数微服务框架都没提供 BBR 的限流器实现。
Loading...