作为我们服务的一部分,我们正在构build公开可用的API,让用户在我们的平台上执行简单的任务(主要用于自动化目的)(如评论,完成任务和创build新任务)。
API是基于HTTPS的,并且需要使用您的login名和密码以呼叫/login的forms进行授权才能接收令牌(可在您的configuration文件中使其失效)。 如果重要,我们使用金字塔,postgresql和nginx。
这是我的第一个这样的项目,我想知道如何保证这个东西不会吃掉我们所有的传输或处理能力(其中一些API函数非常重)。 我想在一个例子中考虑这个问题,在这个例子中,有人在他的脚本(使用我们的API)中犯了一个小错误,并且会在同一个任务下每秒发表评论(或者列出来自这个任务的所有评论)。 2天。
如果我强制所有通过caching读取(例如,有效的,例如,接下来的10秒),所以它会打我们的memcached服务器,而不是postgres基地 – 这是足以卸载这个问题(所以其他用户不会受到影响)或只是愚蠢?
如果我会检查某种计时器,并等待至less5秒,然后再进行写入(写入之间5秒钟) – 是否会好起来,或者我只是用定时器检查来终止我们的服务器?
我想这更多的是关于消毒公共API的最佳实践的问题,所以它不会咬它的创造者。 你怎么做呢?
你正在寻找的是速率限制 。 如果没有关于如何编写API的更多知识,我不能给你关于如何实现它的具体建议,但最好的办法是对API消费者进行评分,以便它们不会对服务的其他用户造成不利影响。