Краткое руководство. Установка ограничений скорости запросов
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
Эта статья относится к: ❎ Basic/Standard ✅ Enterprise
В этом кратком руководстве показано, как задать ограничения скорости запросов с помощью Spring Cloud Gateway в плане Azure Spring Apps Enterprise.
Ограничение скорости позволяет избежать проблем, возникающих с пиками трафика. При установке ограничений скорости запросов приложение может отклонять чрезмерные запросы. Эта конфигурация помогает свести к минимуму ошибки регулирования и более точно прогнозировать пропускную способность.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Изучите и выполните раздел "Требования" плана Enterprise в Azure Marketplace.
- Azure CLI версии 2.45.0 или более поздней.
- Git.
- jq
-
Расширение плана Azure Spring Apps Enterprise. Используйте следующую команду, чтобы удалить предыдущие версии и установить последнее расширение плана Enterprise. Если вы ранее установили
spring-cloud
расширение, удалите его, чтобы избежать несоответствий конфигурации и версий.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Выполните действия, описанные в статье "Сборка и развертывание приложений в Azure Spring Apps" с помощью плана Enterprise.
Установка ограничений частоты запросов
Spring Cloud Gateway включает фильтры маршрутов из версии Open Source и несколько других фильтров маршрутов. Одним из этих фильтров является RateLimit: ограничение фильтра запросов пользователей. Фильтр RateLimit ограничивает количество запросов, разрешенных для каждого маршрута в течение периода времени.
При определении маршрута можно добавить фильтр RateLimit, включив его в список фильтров для маршрута. Фильтр принимает четыре варианта:
- Количество запросов, принятых во время окна.
- Длительность окна. Это значение находится в миллисекундах по умолчанию, но можно указать суффикс s, m или h , чтобы указать, что значение находится в секундах, минутах или часах.
- (Необязательно) Ключ секции пользователя. Вы также можете применить ограничение скорости для каждого пользователя. То есть разные пользователи могут иметь собственную пропускную способность в зависимости от идентификатора, найденного в запросе. Указывает, находится ли ключ в утверждении JWT или заголовке HTTP с
claim
илиheader
синтаксисом. - (Необязательно) Вы можете ограничить скорость по IP-адресам, но не в сочетании с ограничением скорости для каждого пользователя.
Следующий пример ограничивает всех пользователей двумя запросами каждые пять секунд до /products
маршрута:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s"
]
}
Если вы хотите предоставить маршрут для разных наборов пользователей, каждый из них определяется собственным client_id
заголовком HTTP, используйте следующее определение маршрута:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s,{header:client_id}"
]
}
При превышении предела ответы завершаются ошибкой с состоянием 429 Too Many Requests
.
Используйте следующую команду, чтобы применить RateLimit
фильтр к маршруту /products
:
az spring gateway route-config update \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-service-instance-name> \
--name catalog-routes \
--app-name catalog-service \
--routes-file azure-spring-apps-enterprise/resources/json/routes/catalog-service_rate-limit.json
Используйте следующие команды, /products
чтобы получить URL-адрес маршрута в Spring Cloud Gateway:
export GATEWAY_URL=$(az spring gateway show \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
echo "https://${GATEWAY_URL}/products"
Выполните несколько запросов к URL-адресу /products
в течение пяти секунд, чтобы увидеть, что запросы завершаются сбоем с состоянием 429 Too Many Requests
.
Очистка ресурсов
Если вы планируете продолжить работу с последующими краткими руководствами и статьями, эти ресурсы можно не удалять. Удалите ненужную группу ресурсов. Ресурсы в ней будут также удалены. Чтобы удалить группу ресурсов с помощью Azure CLI, используйте следующие команды:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Следующие шаги
Перейдите к любому из следующих необязательных кратких руководств: