2

作为我们服务的一部分,我们正在构建公开可用的 API,允许用户在我们的平台上执行简单的任务(主要用于自动化目的)(如评论、关闭已完成的任务和创建新任务)。

API 是基于 HTTPS 的,需要以使用您的登录名和密码调用 /login 的形式进行授权才能接收令牌(可以在您的个人资料中取消验证)。如果重要的话,我们会使用金字塔、postgresql 和 nginx。

这是我的第一个此类项目,我想知道我应该如何保护这个东西不吃掉我们所有的传输或处理能力(其中一些 API 函数非常繁重)。我想在一个示例的上下文中考虑它,其中某人在他的脚本(使用我们的 API)中犯了小错误,并且它会在同一任务下每秒发布评论(或列出该任务的所有评论)。2天。

如果我强制所有读取通过缓存(例如,在接下来的 10 秒内有效),那么它会命中我们的 memcached 服务器而不是 postgres 基础 - 是否足以解决这个问题(因此其他用户不会受到影响)或只是傻?

如果我要检查某种计时器并等待至少 5 秒,然后再进行另一次写入(两次写入之间的 5 秒) - 可以吗?或者我会通过计时器检查杀死我们的服务器?

我想这更多是关于清理公共 API 的最佳实践的问题,因此它不会咬它的创建者。你怎么做呢?

4

1 回答 1

2

您正在寻找的是速率限制。如果没有更多关于如何编写 API 的知识,我无法就如何实现它给你具体的建议,但你最好的办法是限制 API 使用者的速率,这样他们就不会对你的服务的其他用户产生不利影响。

于 2013-02-20T20:13:11.317 回答