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


Ограничение частоты вызовов по подписке

ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни Управление 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 секунд. Выражения политики не допускаются. Да Н/П

Использование

Примечания об использовании

  • Эту политику можно использовать только один раз для определения политики.
  • Эта политика применяется только при доступе к 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>

Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.