一、本地模式(单机)
1、责任链
2、流控规则配置
基于Guava本地缓存,保存流控规则配置信息
二、集群模式
1、流控规则配置
基于Redis分布式缓存,保存流控规则配置信息
2、静态流控
通过令牌桶限流策略,达到指定阈值(规则配置),对流量进行控制。
3、动态流控
根据配置规则或算法进行动态调整阈值大小(比如WAL算法通过资源利用率动态控制阈值,资源利用率越高流控阈值越小)
基于CPU利用率进行动态限流(等级越高接口越重要):
- < 80%:全不放通
- 80%~85%:一级接口限流5%
- 85%~90%:一级接口限流10%,二级5%
- 90%~95%:一级15%,二级10%,三级5%
-
95%:20% 15% 10% 5%(除核心接口均进行限流)
4、QPS 和 Quota
QPS
:流量整形,一般基于漏桶或令牌桶实现
Quota
:基于配额限流
5、集群流控
单机流控无法精准实现流量控制,需要一个单独的Server来做入口统计总的流量,再结合单机限流兜底
三、对比
支持全局动态流控,支持人工屏蔽的降级,支持业务优先级流控和降级:
① 一级:一般
② 二级:次重要
③ 三级:重要
④ 四级:此核心
⑤ 五级:核心