【问题标题】:API Management advanced policies - Limit concurrency to 1API 管理高级策略 - 将并发限制为 1
【发布时间】:2020-07-30 11:04:59
【问题描述】:

我在 Azure API 管理中有一个包含多个操作的 API。其中一项操作的限制执行并发性应为 1。我尝试使用以下后端策略来限制并行执行,就像 Microsoft Docs 中解释的那样。

<backend>
    <limit-concurrency key="general" max-count="1">
        <forward-request timeout="120" />
    </limit-concurrency>
</backend>

https://docs.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#LimitConcurrency

不幸的是,这个限制的行为是我可以同时执行两次操作。第三次并行执行导致 429 状态码。

有人知道为什么最大计数为 1 会导致最大计数为 2?

【问题讨论】:

  • 您必须使用 DB 或队列来实现它。

标签: azure api azure-api-management policies


【解决方案1】:

使用并发控制,我们可以保证后端系统的并发调用不超过 2 个,并且之后的所有调用都排队到最大限制,并在 2 个并发调用之一完成时立即处理。确保不在重试和空闲时间上浪费资源。使用并发控制很简单,这里的策略是:

<limit-concurrency key="general" max-count="1" timeout="120" max-queue-length="100">
    <forward-request timeout="120" />
</limit-concurrency>

更多详情可以参考这个article

【讨论】:

  • 是的,正如我所写,我知道这种可能性。但不幸的是,我的后端服务无法处理 2 个并发调用。所以我需要确保它只接收 1 个并发呼叫。如果我将 max-count 设置为 1,它的行为就像设置为 2...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
  • 2018-01-05
  • 2022-12-22
  • 2023-01-12
  • 2011-12-26
  • 2020-06-11
相关资源
最近更新 更多