API作为应用程序编程接口提供给调用方使用,在设计时不光光要考虑到安全性,还要考虑其稳定性。而对于API而言,提供给调用方使用时
限流需要考虑的问题
1、
阈值过小会影响用户的正常访问,所以需要视具体情定确定阈值大小。
2、
可以按天、小时、分钟等时间段计时。
3、
达到阈值后,该用户发出的请求不再处理,但需要在一段时间后恢复访问,重新计数,避免服务一直不可用。
限流处理模式
1、
我们在系统前端设置一个缓冲池,所有的请求全部进入这个缓冲池,但不立即处理请求。由后端程序依次从缓冲池里取出请求进行处理,这样就减小了后端的处理压力。
2、服务降级
将整个系统各个功能模块设置一个等级,当核心API负载过大时,将一些等级不高的服务进行降级处理(停止服务),这样就相当于把资源节省给核心API使用了,保证核心业务的正常运行。像一般电商平台推出活动时,都会有服务降级机制。
3、熔断
当API出现问题时,若短时间内无法修复及恢复服务,那就需要开启熔断开关,拒绝后续的流量请求,避免一个API的故障导致连锁反应。
限流方案
1、借助Nginx实现限流
通过Nginxlimit_req模块可以方便的基于特定IP、请求来做限流。
2、
比如根据用户IP创建一个Key,每次请求时就将此键值加1,当特定时间段内达到阈值后禁用服务访问,等Key过期后又重新计数。
从限流实现成本上说,Redis方案最易控制和实现,大家可以试下。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流~我是科技领域创作者,十年互联网从业经验,我了解更多科技知识!