系统设计 | 设计限流器

本文根据educative课程整理的学习笔记,侵删

题目

设计限流服务(限制范围:集群内的某个API),根据用户请求数量来限制用户请求

难度:easy

核心考点:几种限流算法

限流算法的目的就是T时间内控制事件数量不超过N,如果超过N则拒绝;
结论:从限制准确性和存储成本两个角度,我们选用了方案3,带计数器的滑动窗口算法;

1. 朴素计数器

  • 维护一个计数器count和起始时间startTime,count表示[startTime … curTime]的请求数;startTime过期后,重新设置startTime,并重置count;

假定一个user限制每分钟请求3次;我需要维护一个hash,key=userID,value={count, startTime};收到一个请求后,rate limiter有如下步骤

 `# step 1
 if userID not in hash: 
 	hash[userID] = {
   1, current_time}
 	accept req
# step 2
`if userID in hash and current_time - hash[userID].startTime >= 1m
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值