扩展REST API - 架构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展REST API - 架构相关的知识,希望对你有一定的参考价值。

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

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

我有两个问题:

  1. 需要对数据库执行多个cron作业。我们怎样才能确保只有一个服务器运行crons,但如果该服务器关闭,另一个服务器运行它们呢?
  2. 我们如何在所有服务器上强制执行速率限制。我们如何允许一个api密钥在所有三台服务器上每天获得1000个请求?
答案

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

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

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

考虑持久化计数器,每当服务器收到来自租户(具有api密钥的用户)的请求时,该计数器就会更新。当服务器收到请求以查看它们是否已消耗其配额时,请检查计数器(计数器<1000)。

以上是关于扩展REST API - 架构的主要内容,如果未能解决你的问题,请参考以下文章

RESTful API使用详解

在 Chrome 扩展程序中安全地存储 Django REST API 令牌

是否可以通过自定义扩展或 REST API 添加新的工作项类型?

C# REST API - 如何使用错误代码扩展模型状态错误

错误 Woocommerce REST API 扩展订单“line_items”响应

如何使用 ANGULAR 5 的 ARC 扩展发送 POST 请求以测试 api Rest?