限流
2022-09-20 10:41:18 0 举报
AI智能生成
分布式架构中,我们应该如何设计和选择一个最适合的API限流技术方案。
作者其他创作
大纲/内容
常见的API限流的应用常景
避免突发流量时,服务出现雪崩
流量整形,无论进入的流量频率如何,我们要保证请求转发大后端时是平稳的
用户SLA的分级,比如针对付费用户和免费用户,提供不同的API QPS额度
API市场中的API商品,会通过API限流来满足商品库存的调用限制
API的限流能力
基础能力
1、按照固定的时间维度来限制API的调用次数
2、请求缓存队列
业务维度
根据API认证信息限流
根据客户端IP进行限流
根据API请求报文参数限流
header
path
cookie
信息反馈
返回429或自定义限流信息
返回限流状态等信息
X-Ratelimit-Remaining
X-Ratelimit-Limiit
X-Ratelimit-Retry-After
常见的限流算法
固定窗口
优势
逻辑简单,实现成本低,维护成本低
时间和空间复杂度低,因为只需要维护当前窗口中的一个计数器
劣势
窗口切换时无法保证限流值
滑动日志
优势
准确率100%,因为我们保留了所有的请求日志,而且是针对每一个请求都会重新计算动态的窗口
实现成本低
劣势
时间空间复杂度高
滑动窗口
漏桶算法
优势
漏桶算法最大的优势在于它的流量整形功能,它适用于电商购物的支付环节,支付系统需要和上游的很多银行系统对接,这些银行系统负载能力有限,所以我们就需要针对不同的银行的SLA来求请求速率进行限制,避免银行系统高负载。
劣势
实现复杂度相比起前几种算法要更高,维护成本也会更高
限制了最大转发速率,所以该算法并不适用于一些流量经常会突增的场景
令牌桶
优势
针对流量可能会出现突增且后端可以接手突增的场景,令牌桶是一种更适合的方案,因为令牌桶在限制平均请求速率的同时。还可以允许一定的突增
劣势
实现复杂度相对较高
分布式限流的技术要点
准确性
性能
可扩展性
横向扩展
纵向扩展
可用性
0 条评论
下一页