Поделиться через


Реализация ограничения скорости в Azure Управление API

С помощью ограничения скорости можно ограничить количество вызовов API, которые пользователь или служба могут выполнять в заданном интервале времени. Ограничение скорости помогает обеспечить справедливое использование и предотвратить монополизацию ресурсов API одним пользователем или службой. Azure Управление API (APIM) предоставляет удобный способ реализации ограничения скорости для API.

Почему Azure Управление API?

Azure Управление API — это мощная и универсальная облачная служба, которая помогает организациям публиковать API для внешних, партнерских и внутренних разработчиков. Он предоставляет средства для защиты вызовов API, управления и масштабирования. Одним из его функций является управление ограничением скорости, которое полезно для поддержания работоспособности и надежности API.

Настройка ограничения скорости в Azure Управление API

Azure Управление API использует политики для принудительного ограничения скорости. Эти политики можно определить в разных областях: глобальные, продукты или API. Эта гибкость позволяет настроить ограничение скорости в соответствии с требованиями и шаблонами использования API.

Перед началом реализации ограничения скорости определите ограничения скорости. Заданные ограничения зависят от емкости API и ожидаемого трафика. Общие ограничения задаются как количество вызовов в секунду, минуту или час. Например, можно разрешить 1000 вызовов в минуту на пользователя.

Чтобы определить ограничения скорости в API в Azure Управление API, используйте rate-limit или rate-limit-by-key политики. Первый задает ограничение для всех пользователей, в то время как последний разрешает ограничения на определенный ключ (например, подписку или идентификатор пользователя).

Ниже приведен пример политики, которая ограничивает вызовы 1000 в минуту.

<policies>
  <inbound>
    <base />
    <rate-limit calls="1000" renewal-period="60" />
  </inbound>
  <backend>
    <base />
  </backend>
  <outbound>
    <base />
  </outbound>
  <on-error>
    <base />
  </on-error>
</policies>

При превышении указанного количества вызовов Azure Управление API отправляет код состояния 429 слишком много запросов, а также retry-after заголовок ответа и сообщение, указывающее, когда можно повторить попытку.

HTTP/1.1 429 Too Many Requests
content-type: application/json
retry-after: 60
    
{
  "statusCode": 429,
  "message": "Rate limit is exceeded. Try again in 60 seconds."
}

Предоставление сведений об ограничении скорости для заголовков ответов

По умолчанию Azure Управление API не предоставляет сведения о ограничении скорости в заголовках ответов. Ограничения скорости связи затрудняют выполнение приложений, чтобы избежать превышения предела и регулирования. Чтобы предоставить сведения об ограничении rate-limit скорости, расширьте политику с помощью remaining-calls-header-name свойств и total-calls-header-name свойств.

<policies>
  <inbound>
    <base />
    <rate-limit calls="1000" renewal-period="60" remaining-calls-header-name="ratelimit-remaining" total-calls-header-name="ratelimit-limit" />
  </inbound>
  <backend>
    <base />
  </backend>
  <outbound>
    <base />
  </outbound>
  <on-error>
    <base />
  </on-error>
</policies>

При вызове API теперь каждый ответ включает в себя ratelimit-remaining и ratelimit-limit заголовки, которые сообщают, сколько дополнительных вызовов API может обрабатывать до превышения предела.

Итоги

Реализация ограничения скорости в Azure Управление API помогает создавать надежные и масштабируемые API. Используя ограничение скорости, вы можете убедиться, что API обслуживает пользователей надежно и эффективно. Помните, что ключ заключается в том, чтобы найти правильный баланс - слишком строгий, и вы можете препятствовать удобство использования; слишком ленивым, и вы рискуете подавляющим API. Благодаря тщательному планированию и непрерывному мониторингу вы можете достичь этого баланса и поддерживать здоровую среду API.

Следующие шаги