相关疑难解决方法(0)

什么是一个好的速率限制算法?

我可以使用一些伪代码,或者更好的Python.我正在尝试为Python IRC机器人实现速率限制队列,它部分工作,但如果有人触发的消息少于限制(例如,速率限制是每8秒5条消息,而此人只触发4条消息),并且下一个触发器超过8秒(例如,16秒之后),机器人发送消息,但是队列变满并且机器人等待8秒,即使自8秒时间段已经过去也不需要它.

python algorithm message-queue

148
推荐指数
4
解决办法
8万
查看次数

为Web请求实施速率限制算法的最佳方法是什么?

可能/部分重复:

我正在寻找为Web应用程序实现移动时间窗口速率限制算法的最佳方法,以减少垃圾邮件或暴力攻击.

使用的示例是"在过去5分钟内来自给定IP的最大失败登录尝试次数","最近N分钟内的最大((帖子/投票/等等)...").

我宁愿使用移动时间窗口算法,而不是每X分钟重新统计一次(比如twitter api).

这将是一个C#/ ASP.Net应用程序.

c# asp.net algorithm throttling rate-limiting

27
推荐指数
3
解决办法
2万
查看次数

在使用"executeAsync"时如何限制写入请求到cassandra?

我使用datastax java驱动程序3.1.0连接到cassandra集群,我的cassandra集群版本是2.0.10.我与QUORUM一致性异步编写.

  private final ExecutorService executorService = Executors.newFixedThreadPool(10);

  public void save(String process, int clientid, long deviceid) {
    String sql = "insert into storage (process, clientid, deviceid) values (?, ?, ?)";
    try {
      BoundStatement bs = CacheStatement.getInstance().getStatement(sql);
      bs.setConsistencyLevel(ConsistencyLevel.QUORUM);
      bs.setString(0, process);
      bs.setInt(1, clientid);
      bs.setLong(2, deviceid);

      ResultSetFuture future = session.executeAsync(bs);
      Futures.addCallback(future, new FutureCallback<ResultSet>() {
        @Override
        public void onSuccess(ResultSet result) {
          logger.logInfo("successfully written");
        }

        @Override
        public void onFailure(Throwable t) {
          logger.logError("error= ", t);
        }
      }, executorService);
    } catch (Exception ex) {
      logger.logError("error= ", ex); …
Run Code Online (Sandbox Code Playgroud)

java multithreading rate-limiting backpressure datastax-java-driver

14
推荐指数
1
解决办法
1850
查看次数

如何限制每秒HttpWebRequest对Web服务器的数量?

当使用HttpWebRequest向一个应用程序服务器发出并行请求时,我需要实现一个限制机制(每秒请求数).我的C#app必须每秒向远程服务器发出不超过80个请求.远程服务管理员强加的限制不是硬限制,而是我平台和他们之间的"SLA".

使用HttpWebRequest时,如何控制每秒的请求数?

c# httpwebrequest

7
推荐指数
1
解决办法
2689
查看次数

每秒限制方法调用(达到限制时拒绝)

我有一个执行一些 IO 的方法,我想限制对这个方法的调用(每秒),以避免后端获得它无法处理的并发请求的爆发。

如果要求没有“每秒”,我可以只使用一个堆栈(基本上只是一个计数器)并offer()在开始请求时和poll()完成时使用。对于“每秒”要求,我需要以某种方式清除堆栈上比给定时间流逝更旧的插槽。

我该如何正确地做到这一点?显然,该结构应该是线程安全的。

感谢您的时间!

java thread-safety java-io

5
推荐指数
1
解决办法
6102
查看次数

限制Java的上传速度?

我想以编程方式限制Java中的上传或下载操作.我会假设我需要做的就是检查上传的速度和插入方式Thread.sleep(),如下所示:

while (file.hasMoreLines()) {
    String line = file.readLine();
    for (int i = 0; i < line.length(); i+=128) {
        outputStream.writeBytes(line.substr(i, i+128).getBytes());
        if (isHittingLimit())
            Thread.sleep(500);
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码会起作用吗?如果没有,有更好的方法吗?有没有一个描述这个理论的教程?

java theory network-programming bandwidth-throttling

5
推荐指数
1
解决办法
5700
查看次数

你如何限制呼叫服务器端?

我知道客户端_underscore.js可以用来限制点击率,但是如何限制服务器端的呼叫呢?我想过使用相同的模式但不幸的是_throttle似乎不允许区分Meteor.userId().

Meteor.methods({
  doSomething: function(arg1, arg2){
    // how can you throttle this without affecting ALL users
  }
);
Run Code Online (Sandbox Code Playgroud)

meteor

3
推荐指数
1
解决办法
1545
查看次数