Rails Grape API 如何对访问频率做限制

xiaomage · 2017年11月08日 · 最后由 xiaomage 回复于 2017年12月17日 · 1763 次阅读

请问:对于某一个业务接口,单位时间内只允许提交一次,这样的限制改如何做?

把 IP 存起来,丢到 redis?

gem 'rack-attack'

原理也是用的 redis

不过当访问量巨大的时候,就很考验 redis 的负载能力了。 一般访问量还是没什么问题的

rate limit 相关的 gem

pathbox 回复

什么量级才算是巨大呢

感觉这种和限制抢票的系统差不多,都是从前向后限制,越靠前越好。越靠前后面系统的压力越小。

首先调用 API 的前端做限制,然后 API 前面加上 Nginx 并配置相应的 Nginx 限速模块。或者在系统层面使用 iptables 配置规则进行限速。这样应用本身不用做改动比较好。

解决了,使用 redis 记住状态,完成持久化之后,释放掉。谢谢各位。

xiaomage 关闭了讨论 12月17日 15:23
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册