第三方API调用的node.js应用程序级速率限制

我正在构build的应用程序会对Facebook Graph API进行大量调用(但它可能是任何带有速率限制的API)。 为了论证的缘故,假设每10分钟有600个请求。

我正在使用https://github.com/jhurliman/node-rate-limiter来限制个人线程,但我需要做的是在macros应用程序级别限制所有Facebook API调用的速率限制,以便将应用程序作为整体不超过这个限制。

我真的不知道如何做到这一点。 我对节点相当陌生,没有任何解决scheme的概念,甚至看起来像。

知道Facebook的速率限制是每个应用程序还是每个经过validation的用户,这将是一件好事。 我假设的应用程序,因此这个问题。

如果您需要根据您的所有请求的总和限制对特定资源的访问速度,我会创build一个单独的http服务来封装和控制对该资源的所有访问。

假设您使用express,并且您的应用程序在端口80上运行,如下所示:

var express=require('express'), app=express(); app.get(route,function(req,res){ ... do things here that need access to the FB Graph API }); app.listen(80); 

我会添加以下行到您的app.js,创build一个新的服务器端口8080上运行:

 var fbApiGatewayApp=express(); fbApiGatewayApp.get('/fb',function(req,res){ ... provide access to FB Graph API here }); fbApiGatewayApp.listen(8080); 

您为其创build的路线控制对FB API的访问。

重构您的原始应用程序,以便在需要向FB API提交请求时调用此新网关服务上的路由(通过http.js)。

然后,您可以对这项新服务进行费率限制,以符合FB的要求。

我也会让它拒绝所有不是来源于你的主应用程序(在本地主机上运行的请求 – 127.0.0.1)的请求来限制外部的访问。 (同样可以使用防火墙来完成。)