请问:对于某一个业务接口,单位时间内只允许提交一次,这样的限制改如何做?
把 IP 存起来,丢到 redis?
gem 'rack-attack'
原理也是用的 redis
不过当访问量巨大的时候,就很考验 redis 的负载能力了。一般访问量还是没什么问题的
rate limit 相关的 gem
什么量级才算是巨大呢
https://github.com/kickstarter/rack-attack
感觉这种和限制抢票的系统差不多,都是从前向后限制,越靠前越好。越靠前后面系统的压力越小。
首先调用 API 的前端做限制,然后 API 前面加上 Nginx 并配置相应的 Nginx 限速模块。或者在系统层面使用 iptables 配置规则进行限速。这样应用本身不用做改动比较好。
解决了,使用 redis 记住状态,完成持久化之后,释放掉。谢谢各位。