扩展REST API - 架构

时间:2017-01-23 09:22:42

标签: rest architecture redis restful-architecture api-design

我们的产品是我们需要扩展并使其冗余的休息API。我们的计划是使用nginx作为负载均衡器和代理,它将api请求转发到三个不同的服务器,所有这些服务器都将连接到同一个MongoDB副本集。

我们的api根据用户的api密钥进行速率限制。用户将拥有多个客户端,并且所有客户端都将使用相同的api密钥对其请求进行签名。

我有两个问题:

  1. 需要对数据库执行多个cron作业。怎么能 我们确保只有一个服务器运行crons,但如果是这样的话 服务器关闭,另一个运行它们而不是?
  2. 我们如何在所有服务器上强制执行速率限制。怎么做 我们允许一个api密钥在这三个密钥上每天获得1000个请求 服务器组合?

1 个答案:

答案 0 :(得分:0)

  

需要对数据库执行多个cron作业。我们怎样才能确保只有一个服务器运行crons,但如果是这样的话   服务器关闭,另一个运行它们?

考虑使用队列。所有cron作业都可以从队列中获取。

  

我们如何在所有服务器上强制执行速率限制?我们如何允许一个api密钥在所有三台服务器上每天获得1000个请求   组合

考虑持久存储每次服务器收到租户(带有api密钥的用户)请求时更新的计数器。当服务器收到请求以查看他们是否已经消耗了配额时,请检查计数器(计数器<1000)。