Tay*_*nce 35 amazon-web-services aws-api-gateway
我找不到关于这两个术语的任何文档。我仔细研究了 AWS 文档和 Google 结果。
突发限制和速率限制有什么区别?当我去更改 API 上的默认路由限制设置时,只有两个数字输入。它没有说明这些数字代表什么单位或时间范围。是每秒 API 调用次数吗?每分钟?
Tob*_*ann 53
突发限制定义了您的 API 可以同时处理的请求数量。速率限制定义每秒允许的请求数。这是令牌桶实现的一个实现。
并发意味着请求并行运行。假设一个请求需要 10 毫秒,如果全部串行执行,则每秒可以有 100 个请求,并发度为 1。但如果它们全部同时执行,并发数将为 100。在这两种情况下,速率限制为 100 就足够了。在第一种情况下,突发限制为 1 将允许所有请求成功,在第二种情况下,这将拒绝 99 个请求。
官方文档只是简单提到了令牌桶算法。
sbo*_*sse 18
我对速率限制和突发限制的理解与托比亚斯·盖泽尔曼(Tobias Geiselmann)(最高票数答案)的解释有点不同。
我认为 API Gateway 中的节流工作方式本身不存在任何并发概念。请求会尽快得到处理,如果您的 API 实现需要很长时间来处理请求,则会有更多并发进程执行这些请求,并且并发进程的数量很可能会远远超过您设置的限制用于 API 网关中的节流。
速率限制决定了突发开始生效之前可以发出的最大请求量,从而填满“突发存储桶”。该存储桶的作用类似于 FIFO,在请求到来时填充令牌,并按照您设置的速率限制从这些令牌中“清空”自身。
因此,如果更多的请求持续以比该存储桶的“输出”更快的速度出现,那么它最终将变得“满”,然后将开始发生限制,并出现“请求过多”错误。
例如,如果您设置10每秒请求数限制 (RPS),突发限制为100:
如果请求持续以10RPS 或更低的速度到来,则突发存储桶将保持为空。其输入和输出低于设定的速率限制。
现在假设请求量超出10RPS:
第一秒,18请求进来,桶可以输出10RPS,所以18 - 10 = 8桶里会积累令牌。
第二秒,34更多请求涌入桶中。该桶仍然可以取出10RPS,因此34 - 10 = 24桶中积累了更多的令牌。该存储桶现在包含8 + 24 = 32令牌。
第三秒,85发出更多请求,并将它们添加到存储桶中。请求再次10被删除。这意味着85 - 10 = 75桶中会积累更多令牌。32但里面已经有代币了。因为32 + 75 = 107高于100,所以7最后的请求会受到限制并得到“请求过多”响应。桶已满并且包含100令牌。
第四秒,5更多的请求进来。桶可以取出10令牌,最后得到100 + 5 - 10 = 95令牌。不再发生节流。
等等。
所以并发在这里并不真正相关。如果每个请求需要 15 秒来执行,那么即使您设置的限制仅为 10 RPS,突发限制为 100,您也很可能会得到 10 RPS * 15 秒 = 150 个并发请求。
| 归档时间: |
|
| 查看次数: |
25874 次 |
| 最近记录: |