如何在环回中制定 API 速率限制策略
How to make API rate limit policy in loopback
我只想为每个帐户计划制定一个 API 请求率限制 所以假设我们有用户并且每个用户都有一个计划,该计划对每天的 API 请求数有一些限制他们可以。
所以现在,我如何在环回 3.x 中制定 API 限制策略。
谢谢
这样的政策只能*通过数据库制定,例如redis/memcached。对于我的项目,我依赖于基于 Redis 的 redback。它有一个内置的 RateLimit 助手(以及其他),它负责处理一些竞争条件和原子事务。
* 如果你没有数据库,你可以将它存储 in-memory (在散列或数组中)并使用间隔来刷新它,但我会选择 redback :)
这是访问控制策略。
您可以通过 role resolver 创建的自定义角色来处理此问题。
通过创建自定义角色并在当前用户是否超出速率限制时检查解析器回调。
如果您计划在 IBM Bluemix 托管上使用 Loopback,您可以使用他们的 API Connect service that includes customer plan based policies with API level throttling、监控、API 计费和许多其他 API 管理功能。
StrongLoop API Microgateway 由 API Connect 使用,但现已开源(2017 年 4 月)。
由于 Loopback 只是 Express 之上的一层,您也可以只使用 Express 库。
对于单个独立环回服务器的速率限制,您可以使用这些 Express 库之一:
如果您计划在 Loopback 服务器集群上使用它,您需要将 API 调用计数存储为每个用户或用户会话的共享服务器状态的一部分。为此选择的武器是 Redis,因为它是可以扩展的高性能内存数据存储。支持 Redis 的速率限制 Express 库包括:
最后,您还可以在反向代理上实施速率限制。参见 Nginx Rate Limiting
我只想为每个帐户计划制定一个 API 请求率限制 所以假设我们有用户并且每个用户都有一个计划,该计划对每天的 API 请求数有一些限制他们可以。
所以现在,我如何在环回 3.x 中制定 API 限制策略。
谢谢
这样的政策只能*通过数据库制定,例如redis/memcached。对于我的项目,我依赖于基于 Redis 的 redback。它有一个内置的 RateLimit 助手(以及其他),它负责处理一些竞争条件和原子事务。
* 如果你没有数据库,你可以将它存储 in-memory (在散列或数组中)并使用间隔来刷新它,但我会选择 redback :)
这是访问控制策略。
您可以通过 role resolver 创建的自定义角色来处理此问题。
通过创建自定义角色并在当前用户是否超出速率限制时检查解析器回调。
如果您计划在 IBM Bluemix 托管上使用 Loopback,您可以使用他们的 API Connect service that includes customer plan based policies with API level throttling、监控、API 计费和许多其他 API 管理功能。
StrongLoop API Microgateway 由 API Connect 使用,但现已开源(2017 年 4 月)。
由于 Loopback 只是 Express 之上的一层,您也可以只使用 Express 库。
对于单个独立环回服务器的速率限制,您可以使用这些 Express 库之一:
如果您计划在 Loopback 服务器集群上使用它,您需要将 API 调用计数存储为每个用户或用户会话的共享服务器状态的一部分。为此选择的武器是 Redis,因为它是可以扩展的高性能内存数据存储。支持 Redis 的速率限制 Express 库包括:
最后,您还可以在反向代理上实施速率限制。参见 Nginx Rate Limiting