我在这里有一个备份应用程序,它连接到各种web服务,并从ftp或http服务器下载/上传文件.限制应用程序带宽使用的最简单方法是什么?
我需要这样做,因为安装和运行的应用程序将减慢所有办公室人员的互联网访问速度,最终将让我陷入地狱.所以我想实现一个在工作时间内活动的速度限制,并在晚上被禁用.
我在Akka有一个演员,它将处理消息以创建某些实体.这些实体上的某些字段是根据创建时数据库中其他实体的状态计算的.
我想避免创建一个竞争条件,其中actor处理速度比数据库能够持久化实体的速度快.这可能会导致数据不一致,如下所示:
Foo并将其发送给其他actor以进行进一步处理和保存Foo.由于第一个尚未保存,因此根据DB的旧内容创建新的一个,从而产生错误Foo.现在,这种可能性非常小,因为Foos 的创建将手动触发.但仍然可以想象,双击可能会在高负荷下引起问题.谁知道明天Foo是否会自动创建.
因此,我需要的是告诉演员等待的一些方法,并且只有在确认Foo已经保存之后才恢复其操作.
有没有办法让一个演员处于空闲状态,并告诉它一段时间后恢复其操作?
基本上,我想将邮箱用作消息队列,并控制队列的处理速度.
我和其他一些开发者正在进行AI比赛.基本上,我们有一个简单的棋盘游戏,我们每个人都会编写AI,这些AI将托管在我们自己的网络服务上,以便相互对抗.
我已经启动并运行了一个基于WebApi 2的简单服务,该服务已发布到Azure.我的期望是大部分时间都会保持安静,然后突然在比赛开始时,它会很快收到200-400个请求(游戏只能持续几秒钟).游戏服务器和AI通过普通的JSON POST进行通信.
我的问题是,Azure似乎限制了请求.前几个动作发生得非常快,然后一切都变慢了.
我想知道Azure是否认为这是一个潜在的DOS攻击或其他什么.一旦事情变慢,可能需要一秒钟才能收回.一些兴趣点:
那么我该如何解决这个问题呢?有什么地方我缺少哪里可以告诉Azure这种行为是预期的吗?我目前将它作为共享服务,但我之前用两个实例测试它作为基本服务,我仍然看到减速.
我有几个项目需要查询第 3 方 API,并且该 API 的调用限制为每秒 5 次调用。我需要以某种方式将我对 API 的调用限制为每秒最多 5 次调用。
到目前为止,我只使用Promise.all()了一系列 promise,其中每个 promise 向 API 发送一个请求,并在 API 以 HTTP 状态代码响应时进行解析,200并在它以其他状态代码响应时拒绝。但是,当数组中有 5 个以上的项目时,我可能会面临Promise.all()拒绝的风险。
如何将Promise.all()呼叫限制为每秒 5 个呼叫?
我需要在Java中创建一个时间戳(以毫秒为单位),该时间戳保证在该特定VM实例中是唯一的.我需要一些方法来限制System.currentTimeMillis()的吞吐量,这样它每ms最多返回一个结果.关于如何实现的任何想法?
我试图模仿在Chrome上运行的较低规格系统上的应用程序的感觉.是否有可能限制CPU并限制资源?
我试图限制每秒调用一个方法的次数.我尝试使用Guava RateLimiter实现这一目标.
RateLimiter rateLimiter = RateLimiter.create(1.0);//Max 1 call per sec
rateLimiter.acquire();
performOperation();//The method whose calls are to be throttled.
Run Code Online (Sandbox Code Playgroud)
然而,呼叫的方法不限于每秒1个,而是连续的.
使用Thread.sleep()可以实现限制,但我希望使用Guava而不是sleep().
我想知道使用Guava RateLimiter实现方法调用限制的正确方法.我已经检查了RateLimiter的文档并尝试使用相同但无法实现所需的结果.
示例Plunkr:https://plnkr.co/edit/NZwb3ol8CbZFtSc6Q9zm ? p = preview
我知道rxjs有这3种节流方法(5.0 beta.4):
auditTime(),throttleTime()和debounceTime()
我正在寻找的行为是默认情况下lodash执行的一个节流:
从理论上讲,这应该是这样的:
inputObservable
.do(() => cancelPreviousRequest())
.throttleTime(500)
.subscribe((value) => doNextRequest(value))
Run Code Online (Sandbox Code Playgroud)
但
throttleTime 如果在油门超时中发出,则永远不会给我最后一个值debounceTime 不会立即触发auditTime 不会立即触发我可以结合任何rxjs方法来实现所描述的行为吗?
我想实现一种有效的机制来限制我的Java Web应用程序中的登录尝试,以防止对用户帐户的暴力攻击.
Simon Willison 在Python中为Django展示了一个实现:这并没有真正帮助我,因为我不能使用memcached和Django.
从头开始移植他的想法似乎也不是很好 - 我不想重新发明轮子.
我发现了一个Java实现,虽然它似乎相当简单:它只是在15分钟后清除所有条目而不是LRU缓存.
EHCache可能是memcached的替代品,但我没有任何经验,如果有更好的替代方案,我不想真正引入另一种技术.
那么,什么是在Java中实现登录限制的好方法?
我正在比较令牌桶和固定窗口速率限制算法,但对这两种算法中的流量突发有点困惑。
假设我想将流量限制为 10 个请求/分钟。
令牌桶中以每分钟10个令牌的速度添加令牌。
Time Requests AvailableTokens
10:00:00 0 10 (added 10 tokens)
10:00:58 10 0
10:01:00 0 10 (added 10 tokens)
10:01:01 10 0
Run Code Online (Sandbox Code Playgroud)
现在,如果我们在时间戳 10:01:01 看到,最后一分钟允许 20 个请求,超过了我们的限制。
类似地,使用固定窗口算法。窗口大小:1 分钟。
Window RequestCount IncomingRequests
10:00:00 10 10 req at 10:00:58
10:01:00 10 10 req at 10:01:01
Run Code Online (Sandbox Code Playgroud)
类似的问题也在这里。
这两种算法都遇到这个问题吗,还是我的理解存在差距?
throttling ×10
java ×3
c# ×2
javascript ×2
actor ×1
akka ×1
algorithm ×1
azure ×1
bandwidth ×1
concurrency ×1
epoch ×1
es6-promise ×1
guava ×1
limit ×1
login ×1
node.js ×1
promise ×1
rxjs ×1
scala ×1
timestamp ×1