目的
在系统能够提供的最大允许范围内尽可能提供服务,拒绝掉系统承载能力之外的请求以保证服务稳定性。
衡量
压测:单机 线上流量 全链路
监控:峰值估算
算法:
计数器
滑动窗口
令牌桶
漏洞
方案:
单机
集群
特性
开源:
RateLimiter
Hytrix
Setinel
Dagor
对比:
-
基于计数器的限流算法与基于生产者消费者模型的限流算法
-
计数器限流比较简单粗暴,但是没有处理突发流量的能力
-
生产者消费者模型的限流器可以对流量整形
-
-
漏桶算法与令牌桶算法
-
漏桶算法中流量会被强制整形,无论请求速度怎么波动,服务接收到的请求速度都是稳定的。在请求堆积的情况下,请求会被延时处理。
-
令牌桶算法中服务接收到的请求波形与实际请求的波形是一致的,另外令牌桶可以作为一个单独服务来对集群进行限制
-
ref