【发布时间】:2017-06-07 02:40:36
【问题描述】:
我只想为每个帐户计划制定一个 API 请求速率限制,假设我们有用户,每个用户都有一个计划,限制他们每天可以发出多少 API 请求。
那么现在,我如何在 loopback 3.x 中制定 API 限制策略。
谢谢
【问题讨论】:
标签: node.js rest express loopbackjs strongloop
我只想为每个帐户计划制定一个 API 请求速率限制,假设我们有用户,每个用户都有一个计划,限制他们每天可以发出多少 API 请求。
那么现在,我如何在 loopback 3.x 中制定 API 限制策略。
谢谢
【问题讨论】:
标签: node.js rest express loopbackjs strongloop
如果您计划在 IBM Bluemix 托管上使用 Loopback,您可以使用他们的 API Connect 服务,其中包括基于客户计划的策略以及 API level throttling、监控、API 计费和许多其他 API 管理功能。
StrongLoop API Microgateway 由 API Connect 使用,但现已开源(2017 年 4 月)。
由于 Loopback 只是 Express 之上的一个层,您也可以只使用 Express 库。
对于单个独立 Loopback 服务器的速率限制,您可以使用以下 Express 库之一:
如果您打算在 Loopback 服务器集群上使用它,您需要将 API 调用计数存储为每个用户或用户会话的共享服务器状态的一部分。为此选择的武器是Redis,因为它是可扩展的内存数据存储中的高性能。支持 Redis 的限速 Express 库包括:
最后,您还可以在反向代理上实施速率限制。见Nginx Rate Limiting
【讨论】:
【讨论】:
这样的策略只能*使用数据库,例如 redis/memcached。对于我的项目,我依赖基于 Redis 的 redback。它有一个内置的 RateLimit 助手(以及其他),它负责处理一些竞争条件和原子事务。
* 如果你没有数据库,你可以将它存储在内存中(在哈希或数组中)并使用间隔来刷新它,但我会选择 redback :)
【讨论】: