Реализация ограничения скорости в 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.