接口限流

简介: 防止用户恶意刷新接口, 防止对接口的恶意请求,减少不必要的资源浪费,从而保证服务可用。如果不做限流,任由某个用户以非正常方式高频率访问的话,会直接将网络流量、服务器资源挤占完,从而影响正常对外提供服务,造成服务不可用。

为什么要接口限流


防止用户恶意刷新接口, 防止对接口的恶意请求,减少不必要的资源浪费,从而保证服务可用。如果不做限流,任由某个用户以非正常方式高频率访问的话,会直接将网络流量、服务器资源挤占完,从而影响正常对外提供服务,造成服务不可用。


常见的解决方案


1.计数器法


使用redis或者其他方式存储单位时间内某个接口的或者IP的请求数量,当累加到最大数量时,返回错误,不再处理该请求。

该方案的缺点是,比如需求是5秒内只允许访问10次,那么如果第一秒内访问了10次,那么后面4秒的请求都会失败,全部被拒绝。


2.漏桶算法


漏桶算法是,将用户的请求当做水流,当用户请求进来的时候,相当于将水放到一个漏水的桶内,桶有自己漏水的速度,无论水流的大小,水流过大时,如果桶满了,就会被拒绝,返回错误。如果桶还没满,就放到桶里,等待执行。相当于有个缓冲,无论请求量大小,最后都会按照一定的速率执行。

该方案的缺点是,如果短时间内有大量请求进来,比如秒杀活动什么的,桶直接就满了,大量请求失败


3.令牌桶算法


令牌桶算法是漏桶算法的升级版,相对于漏桶算法而言,漏桶算法后台处理请求的速率是固定的,比如一秒处理十个请求;而令牌桶算法是有一个令牌桶,以一定的速率往桶里放令牌,和滴水一样,当桶满了令牌会被丢弃,只有拿到令牌的请求才会被处理,当桶里没有令牌时,会进行等待,当超过了超时时间还没拿到令牌时,请求会被拒绝。


该方案的优点是,可以应对短时大量请求。假如令牌桶的大小是100,放令牌的速率是1秒5个,前20秒没有请求,21秒来了100个请求,那么这100个请求都会被直接处理。22秒再来100个请求,等待时间是1秒,就只有5个请求会成功了,其余的拿不到令牌等待,再过1秒后,又有5个成功,其余90个被拒绝。


目录
相关文章
|
Prometheus 监控 Cloud Native
手把手教你Prometheus + Granafa实现mysql 性能监测部署
数据库性能监控可以说是十分重要,能否自行搭建环境实现像阿里云或是腾讯云那样直观的展示不同维度数据的功能?答案是肯定的。下面详细说明一下安装部署过程以及过程中出现的问题,希望对你有所帮助!
手把手教你Prometheus + Granafa实现mysql 性能监测部署
|
4月前
|
人工智能 供应链 安全
AI 开源库遭投毒事件的启示,和阿里云 AI 网关的回答
以LiteLLM投毒事件为鉴,解析阿里云AI网关的架构级安全防护。
582 43
|
算法 网络协议 Java
Spring Boot 的接口限流算法
本文介绍了高并发系统中流量控制的重要性及常见的限流算法。首先讲解了简单的计数器法,其通过设置时间窗口内的请求数限制来控制流量,但存在临界问题。接着介绍了滑动窗口算法,通过将时间窗口划分为多个格子,提高了统计精度并缓解了临界问题。随后详细描述了漏桶算法和令牌桶算法,前者以固定速率处理请求,后者允许一定程度的流量突发,更符合实际需求。最后对比了各算法的特点与适用场景,指出选择合适的算法需根据具体情况进行分析。
1084 56
Spring Boot 的接口限流算法
|
9月前
|
存储 弹性计算 缓存
阿里云2核4G服务器能支持多少人在线?2核4G云服务器性能测评
阿里云2核4G服务器支持的在线人数因应用类型、带宽和优化程度而异。静态网站在5M带宽下可支持30-50人/秒(配合CDN),小型动态应用约20-30人,低码率视频播放支持5-8人同时观看(CDN可提升至20人)。突发型实例性能有限,计算型更稳定。实际承载能力需结合具体场景优化。
1220 161
|
前端开发 JavaScript Java
解决Spring Boot文件上传问题:`MultipartException` 和 `FileUploadException`
解决Spring Boot文件上传问题:`MultipartException` 和 `FileUploadException`
1319 0
|
监控 算法 Java
保卫你的API:深入了解接口限流
保卫你的API:深入了解接口限流
1264 0
|
算法 NoSQL Java
6种限流实现,附代码![通俗易懂]
6种限流实现,附代码![通俗易懂]
1373 0
6种限流实现,附代码![通俗易懂]
|
SpringCloudAlibaba Cloud Native Docker
SpringCloudAlibaba:4.1云原生网关higress的搭建
SpringCloudAlibaba:4.1云原生网关higress的搭建
989 1
|
安全 Linux 数据安全/隐私保护
在Linux中,如何管理用户权限?
在Linux中,如何管理用户权限?

热门文章

最新文章