几种限流算法
2023-03-15 23:26:29 时间
安全稳定的Open API必须有限频措施,防止接口被某个用户非预期超量调用,影响正常用户使用
常用的限流算法有直接计数法,漏斗算法,令牌桶算法
计数法
单位时间内设定限频阈值,如果访问超过该阈值则拒绝。实现简单,缺点是容易在小突发流量情况下,拒绝很多请求,影响服务可用性
漏斗算法(Leaky Bucket)
核心思想就是请求收到后,会先进入漏斗,然后再按照限定速度请求服务,及可以达到限流的目的,也可以保证后台收到的请求都是平稳的。 但是也有一个缺点,就是突然流量的时候,会导致处理时间太长。当然流量更大的时候会被拒绝,这个是正常的。
常见实现方式有:限制大小的队列
令牌桶(Token Bucket)
核心思想是所有请求需要再令牌桶获取到令牌才可以处理, 同时有一个服务匀速的往令牌桶装令牌。 可以满足一定的突发请求处理,如果超过令牌桶的请求,也会被拒绝
常见实现方式有:gauva包中的RateLimiter
参考
相关文章
- 不常见但是有用的 Chrome 调试技巧
- 我是如何做软件工程化的
- 鸿蒙轻内核M核源码分析系列十五CPU使用率CPUP
- GitHub 被“GitHub Copilot”倒逼成为开源项目?
- 七夕,诺奖得主用算法教你如何脱单
- 一篇学会抽象工厂模式
- Redisson 分布式锁源码 10:读写锁
- 回归分析的七种武器
- 面试官:React中的Key有什么作用?
- 代码写的烂,经常被同事怼,教你一招!
- Vue 2 系统如何快速迁移 Vite 作为开发工具
- 第一次面试,我差点被面试官打,就因为Collections.sort
- 知道创宇发布Sebug漏洞社区百万奖励计划
- 前端如何开始写第一个 Node Server: 从请求到响应深入浅出
- Test Blog
- 鸿蒙HarmonyOS相机的基本使用实战
- R语言的igraph画社交关系图示例
- 重磅长文|个性化推荐十大挑战
- Go项目实战:一步步构建一个并发文件下载器
- 五个工业风满满的 Look-alike 算法