Tag: 速率限制

简化Node.js服务器的速率限制algorithm

我想出了一个针对Node.js服务器速率限制algorithm的天真解决scheme,我相信有一种方法可以简化它,但我不确定如何。 我们希望限制每秒50个请求。 所以如果最新的请求进来,最近的请求和50个位置之间的时间间隔小于1秒,我们应该拒绝新的请求。 实现这一点的天真的方法是有一个简单的数组,包含50个时间戳。 每次事件进来时,我们都给它赋值Date.now()/ process.hrtime()。 然后,我们查看队列中第50个(最后一个)时间戳的时间戳值以及新请求的Date.now()值,如果时间戳的差值大于1秒,那么我们接受新的请求并将其解除“队列”,并从队列中popup最早的时间戳。 但是,如果差值小于1秒,我们必须拒绝这个请求,而且我们也不会将其转移到队列中,也不会popup最早的时间戳。 这是我在Express服务器上的代码 var mostRecentRequestsTimestamps = []; app.use(function(req,res,next){ if(req.baymaxSource && String(req.baymaxSource).toUpperCase() === 'XRE'){ var now = process.hrtime(); //nanoseconds if(mostRecentRequestsTimestamps.length < 50){ mostRecentRequestsTimestamps.unshift(now); next(); } else{ var lastItem = mostRecentRequestsTimestamps.length -1; if(now – mostRecentRequestsTimestamps[lastItem] < 1000){ // 1000 milliseconds = 1 second res.status(503).json({error: 'Server overwhelmed by XRE events'}); } else{ […]

AWS Lambda TooManyRequestsException:速率超出

尝试执行Amazon Web Services(AWS)Lambda函数( 多次 )时,我们发现错误: AWS Lambda TooManyRequestsException: Rate Exceeded 我们如何解决这个问题?