Ограничение частоты вызовов по подписке
ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни Управление API
Политика rate-limit
предотвращает пики использования API для каждой подписки, ограничивая частоту вызовов до указанного числа за определенный период времени. При превышении предела вызовов вызывающий объект получает код состояния ответа 429 Too Many Requests
.
Сведения о разнице между ограничениями скорости и квотами см. в разделе "Пределы скорости и квоты".
Внимание
Из-за распределенного строения архитектуры регулирования ограничение частоты никогда не является полностью точным. Разница между настроенным и фактическим количеством допустимых запросов зависит от их объема и частоты, задержки на стороне сервера и других факторов.
Примечание.
Задайте элементы политики и дочерние элементы в порядке, указанном в правиле политики. Узнайте, как устанавливать или изменять политики службы управления API.
Правило политики
<rate-limit calls="number" renewal-period="seconds" retry-after-header-name="custom header name, replaces default 'Retry-After'"
retry-after-variable-name="policy expression variable name"
remaining-calls-header-name="header name"
remaining-calls-variable-name="policy expression variable name"
total-calls-header-name="header name">
<api name="API name" id="API id" calls="number" renewal-period="seconds" >
<operation name="operation name" id="operation id" calls="number" renewal-period="seconds" />
</api>
</rate-limit>
Атрибуты
Атрибут | Description | Обязательное поле | По умолчанию. |
---|---|---|---|
вызывает | Максимальное общее число вызовов, разрешенное в течение периода времени, указанного в renewal-period . Выражения политики не допускаются. |
Да | Н/П |
renewal-period | Длина скользящего окна в секундах, в течение которого количество разрешенных запросов должно быть не больше значения, указанного в параметре calls . Максимально допустимое значение: 300 секунд. Выражения политики не допускаются. |
Да | Н/П |
retry-after-header-name | Имя заголовка пользовательского ответа, значение которого является рекомендуемым интервалом повтора в секундах после превышения указанного числа вызовов. Выражения политики не допускаются. | No | Retry-After |
retry-after-variable-name | Имя переменной, которая сохраняет рекомендуемый интервал повторных попыток в секундах после превышения указанной частоты звонков. Выражения политики не допускаются. | No | Н/П |
remaining-calls-header-name | Имя заголовка ответа, значение которого после каждого выполнения политики равно количеству оставшихся вызовов, допустимым для интервала времени, указанного в renewal-period . Выражения политики не допускаются. |
No | Н/П |
remaining-calls-variable-name | Имя переменной, которая после каждого выполнения политики сохраняет количество оставшихся вызовов, разрешенных для интервала времени, указанного в параметре renewal-period . Выражения политики не допускаются. |
No | Н/П |
total-calls-header-name | Имя заголовка ответа, значение которого равно значению, указанному в параметре calls . Выражения политики не допускаются. |
No | Н/П |
Элементы
Элемент | Description | Обязательное поле |
---|---|---|
api | Добавьте один или несколько таких элементов, чтобы установить ограничение частоты вызовов для интерфейсов API в масштабах продукта. Ограничения частоты вызовов продукта и API применяются раздельно. Ссылаться на API можно с помощью name или id . Если указаны оба атрибута, id будет использоваться, а name — игнорироваться. |
No |
Операция | Добавьте один или несколько таких элементов, чтобы установить ограничение частоты вызовов для операций в масштабах API. Ограничения частоты вызовов продукта, API и операции применяются раздельно. Ссылаться на операцию можно с помощью name или id . Если указаны оба атрибута, id будет использоваться, а name — игнорироваться. |
No |
Атрибуты API
Атрибут | Description | Обязательное поле | По умолчанию. |
---|---|---|---|
name | Имя API, для которого применяется ограничение частоты. | id Необходимо указать либоname . |
Н/П |
id | Идентификатор API, для которого применяется ограничение скорости. | id Необходимо указать либоname . |
Н/П |
вызывает | Максимальное общее число вызовов, разрешенное в течение периода времени, указанного в renewal-period . Выражения политики не допускаются. |
Да | Н/П |
renewal-period | Длина скользящего окна в секундах, в течение которого количество разрешенных запросов должно быть не больше значения, указанного в параметре calls . Максимально допустимое значение: 300 секунд. Выражения политики не допускаются. |
Да | Н/П |
Атрибуты операции
Атрибут | Description | Обязательное поле | По умолчанию. |
---|---|---|---|
name | Имя операции, для которой применяется ограничение скорости. | id Необходимо указать либоname . |
Н/П |
id | Идентификатор операции, для которой применяется ограничение скорости. | id Необходимо указать либоname . |
Н/П |
вызывает | Максимальное общее число вызовов, разрешенное в течение периода времени, указанного в renewal-period . Выражения политики не допускаются. |
Да | Н/П |
renewal-period | Длина скользящего окна в секундах, в течение которого количество разрешенных запросов должно быть не больше значения, указанного в параметре calls . Максимально допустимое значение: 300 секунд. Выражения политики не допускаются. |
Да | Н/П |
Использование
- Разделы политики: inbound.
- Области политики: product, API, operation.
- Шлюзы: классическая, версия 2, потребление, локальное размещение, рабочая область
Примечания об использовании
- Эту политику можно использовать только один раз для определения политики.
- Эта политика применяется только при доступе к API с помощью ключа подписки.
- Количество ограничений скорости в локальном шлюзе можно настроить для синхронизации локально (между экземплярами шлюза между узлами кластера), например с помощью развертывания диаграмм Helm для Kubernetes или с помощью шаблонов развертывания портал Azure. Однако количество ограничений скорости не синхронизируется с другими ресурсами шлюза, настроенными в экземпляре Управление API, включая управляемый шлюз в облаке. Подробнее
Пример
В следующем примере ограничение скорости для каждой подписки составляет 20 вызовов в течение 90 секунд. После каждого выполнения политики оставшиеся вызовы, разрешенные за период времени, сохраняются в переменной remainingCallsPerSubscription
.
<policies>
<inbound>
<base />
<rate-limit calls="20" renewal-period="90" remaining-calls-variable-name="remainingCallsPerSubscription"/>
</inbound>
<outbound>
<base />
</outbound>
</policies>
Связанные политики
Связанный контент
Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.
- Руководство. Преобразование и защита API
- Полный перечень операторов политик и их параметров см. в справочнике по политикам.
- Выражения политики
- Настройка или изменение политик
- Повторное использование конфигураций политик
- Репозиторий фрагментов политик
- Создание политик с помощью Microsoft Copilot в Azure