问题标签 [rate-limiting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3152 浏览

algorithm - 限制每个时间段的事件数

我需要限制时间段deltaT期间允许的事件数n。我能想到的任何方法,空间都是O(m),其中m是每个deltaTO(deltaT/r)发送的最大事件请求数,其中r是可接受的分辨率。

编辑:deltaT 是相对于时间戳的滑动时间窗口。

例如:保持事件时间戳的循环缓冲区。在事件裁剪所有比t-deltaT更早的时间戳。如果时间戳数超过n则拒绝事件。将时间戳添加到缓冲区。

或者,初始化一个大小为deltaT/r的整数的循环桶缓冲区,该缓冲区按相对于当前分辨率r的时间进行索引。维护指针i发生事件时, i自上次事件以来的时间除以r递增。将原始i和新 i 之间的缓冲区归零。在i处增加。拒绝,如果错误的总和超过n

有什么更好的方法?


我刚刚在 c# 中实现了我上面的第二个建议,固定deltaT为 1 s,固定分辨率为 10 ms。

0 投票
4 回答
2614 浏览

java - 如何限制 Java 应用程序中的 Web 服务使用?

假设我有一个 Java 服务器应用程序,它实现了一些 Web 服务。还假设我可以对应用程序用户进行身份验证。

现在我想为每个用户添加一些服务使用限制:例如速率限制(每秒请求数)、最大请求大小等。

Java中是否有任何“即用型”库可以做到这一点?

0 投票
3 回答
9834 浏览

itunes-store - iTunes 搜索 API 速率限制

我打算使用 iTunes Search API 来获取应用相关信息 - http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html

想知道 API 使用是否有任何预定义的速率/油门限制。在他们的文档/堆栈/谷歌中找不到任何与此相关的信息。

有人有这方面的信息吗?

0 投票
1 回答
1197 浏览

api - 实现大规模 API 使用配额系统

从高层次上看,如何实现 API 使用配额系统?

特别是,它必须满足以下要求:

  • 即时的
  • 快速,不会显着减慢 API
  • 如果使用内存缓存,需要在突然关闭后恢复(有利于 API 客户端的配额精度的小损失是可以的)
  • 速率限制(DOS 保护)
  • 缩放良好

是否有任何普遍接受的架构模式/算法来实现此类系统?

0 投票
1 回答
1498 浏览

twitter - 使用 Twitter OAuth 对 API 调用进行身份验证以了解趋势

我正在开发一个网站,该网站允许用户搜索一个城市或国家的十大推特趋势。起初我只依赖 Twitter 的 Rest API,但我遇到了很多速率限制问题(在学校我的速率限制消失得比我有机会使用它的速度更快)。我知道对我的 API 调用进行身份验证将有助于我更好地处理这个问题(经过身份验证的 API 调用按身份验证用户的限制收费,而未经身份验证的 API 调用从调用 IP 地址的分配中扣除)。

我实现了@abraham 的 PHP 库(https://github.com/abraham/twitteroauth),不幸的是我的 API 调用没有经过身份验证。我知道我已经实现了@abraham 的 PHP 库,因为它会在最后打印出我的用户信息。我在它下面有我的 twitter 趋势搜索,但 API 调用没有经过身份验证。我不知道如何解决这个问题,任何帮助都将不胜感激!

这是我用来按国家/地区划分的十大趋势:

然后我将它添加到@abraham 的 html.inc 文件(连同一些 php 以查看速率限制状态),并且 html.inc 包含在 index.php 中:

@abraham 的 index.php 文件有一些示例调用,由于我的调用看起来不像这样,我认为这可能是它没有被验证的原因。

请帮助我找到我需要修复的问题,以便我的 API 调用通过身份验证。

更新 10-21

我认为为了进行经过身份验证的 API 调用,我需要包含如下代码:

它没有解决我的问题,但也许它在正确的轨道上?

0 投票
1 回答
182 浏览

facebook - 有没有办法向 Facebook API 发出许多请求而不会被阻止?

我需要制作一个网络服务来集中许多 Facebook 帐户(数据、照片、朋友)的信息。问题是:它可以在短时间内收到很多请求。出于这个原因,我需要一种有效的方法来在几个请求中获取 facebook 的所有信息,否则我会被阻止。

我已经阅读了 FQL,我可以假设在同一查询中请求有关许多用户的信息。如果是真的,那就完美了。但我没有找到有关 FQL 限制的详细信息。所以我担心确认这个需求的可行性,指望 FQL 会解决我所有的问题。

这是解决问题的好方法吗?如果没有,可以做什么?

0 投票
10 回答
21177 浏览

redis - 如何使用 Redis 实现速率限制

我使用INCREXPIRE实现速率限制,例如每分钟 5 个请求:

但是,在第一分钟的最后一秒可以发送 5 个请求,在第二分钟的第一秒可以再发送 5 个请求,即两秒内发送 10 个请求。

如何避免这个问题?


更新:我想出了这个列表实现。这是一个好方法吗?

0 投票
3 回答
2726 浏览

php - 如何管理请求受限的 API 调用

我正在使用 tmdb API,它对请求有一个新的限制,即每个 IP 在 10 秒内有 30 个请求。我可以通过在 MySQL 中保存每最后 10 秒的请求数量的表来跟踪这些调用,但是如何使用不同的 IP 地址来完成此操作?

我的应用程序的工作方式是:

  1. 从桌面应用程序向应用程序服务器发出请求。服务器端 php 然后进行搜索并返回数据。

  2. 然后桌面应用程序对应用程序服务器进行不同的调用,然后依次对 tmdb (4-7) 和其他 api 进行几次 api 调用。

在某些情况下,可以有从几个搜索请求到几千个的任何地方。跟踪和延迟 api 调用以使其低于限制的最佳方法是什么?

0 投票
1 回答
9651 浏览

algorithm - 分布式限速算法

我正在一个定价平台上工作,我必须实现一个分布式速率限制算法。我有k个提供x服务的网关。任何网关都可以提供任何服务(通过负载均衡器)。客户每秒向服务购买多个呼叫,其呼叫可以通过任何网关路由。那么,是否有人知道一种好的算法来更新所有网关上的呼叫计数器以限制客户呼叫?

关于该算法的两个重要指标是网络开销以及接受呼叫数与速率限制之间的偏差。

谢谢!

编辑 我只想知道是否有“知名”算法。

0 投票
1 回答
346 浏览

php - Twitter API on Magento CMS error

I have a twitter feed in the sidebar of my magento built site, the following PHP calls to the twitter API and posts the feed as a list:

Unfortunately I'm getting an error in my system.log that reads as follows:

2012-12-04T01:02:33+00:00 ERR (3): Warning: file_get_contents(https://api.twitter.com/1/statuses/user_timeline.xml?screen_name=ecpublish&count=4) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /clientdata/apache-www/e/c/ecpublishing.com.au/www/app/design/frontend/default/ecp/template/page/sidebar/twitter.phtml on line 9

I have tried fixes such as urlencode(), cURL, checked PHP version and fopen status, nothing is helping me out. I have a feeling it may be due to the twitter rate limiting: https://dev.twitter.com/docs/rate-limiting but can't work out why this would be.

My site is: http://ecpublishing.com.au