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

ОБЛАСТЬ ПРИМЕНЕНИЯ: Разработчик | Базовый | Базовая версия 2 | Стандартный | Standard v2 | Премиум

Политика rate-limit-by-key предотвращает пики использования API для каждого ключа, ограничивая частоту вызовов до указанного числа за определенный период времени. Ключ может содержать произвольное строковое значение и обычно указывается с помощью выражения политики. Чтобы указать, какие запросы следует учитывать для ограничения, можно добавить дополнительное условие увеличения. При превышении предела вызовов вызывающий объект получает код состояния ответа 429 Too Many Requests.

Сведения о разнице между ограничениями скорости и квотами см. в разделе "Пределы скорости и квоты".

Внимание

Из-за распределенного строения архитектуры регулирования ограничение частоты никогда не является полностью точным. Разница между настроенным и фактическим количеством допустимых запросов зависит от их объема и частоты, задержки на стороне сервера и других факторов.

Примечание.

Задайте элементы политики и дочерние элементы в порядке, указанном в правиле политики. Чтобы помочь вам настроить эту политику, портал предоставляет интерактивный редактор на основе форм. Узнайте, как устанавливать или изменять политики службы управления API.

Правило политики

<rate-limit-by-key calls="number"
                   renewal-period="seconds"
                   increment-condition="condition"
                   increment-count="number"
                   counter-key="key value" 
                   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"/> 

Атрибуты

Атрибут Description Обязательное поле По умолчанию.
вызывает Максимальное общее число вызовов, разрешенное в течение периода времени, указанного в renewal-period. Допустимы выражения политики. Да Н/П
counter-key Ключ, используемый для политики ограничения частоты. Для каждого значения ключа используется один счетчик для всех областей, для которых настроена политика. Допустимы выражения политики. Да Н/П
increment-condition Логическое выражение, указывающее, следует ли учитывать запрос в сторону скорости (true). Допустимы выражения политики. No Н/П
increment-count Число, на которое увеличивается счетчик, для каждого запроса. Допустимы выражения политики. No 1
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 Н/П

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

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

  • Количество ограничений скорости в локальном шлюзе можно настроить для синхронизации локально (между экземплярами шлюза между узлами кластера), например с помощью развертывания диаграмм Helm для Kubernetes или с помощью шаблонов развертывания портал Azure. Однако количество ограничений скорости не синхронизируется с другими ресурсами шлюза, настроенными в экземпляре Управление API, включая управляемый шлюз в облаке. Подробнее

Пример

В следующем примере ограничение частоты имеет значение в 10 вызовов в течение 60 секунд, а также содержит ключ, состоящий из IP-адреса вызывающего объекта. После каждого выполнения политики оставшиеся вызовы, разрешенные за период времени, сохраняются в переменной remainingCallsPerIP.

<policies>
    <inbound>
        <base />
        <rate-limit-by-key  calls="10"
              renewal-period="60"
              increment-condition="@(context.Response.StatusCode == 200)"
              counter-key="@(context.Request.IpAddress)"
              remaining-calls-variable-name="remainingCallsPerIP"/>
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Дополнительные сведения и примеры этой политики см. в статье Расширенное регулирование запросов с помощью управления API.

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