Guida introduttiva: Impostare i limiti di frequenza delle richieste
Nota
I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.
Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.
Questo articolo si applica a: ❎ Basic/Standard ✅ Enterprise
Questa guida introduttiva illustra come impostare i limiti di frequenza delle richieste usando Spring Cloud Gateway nel piano Enterprise di Azure Spring Apps.
La limitazione della frequenza consente di evitare problemi che si verificano con picchi di traffico. Quando si impostano limiti di frequenza delle richieste, l'applicazione può rifiutare richieste eccessive. Questa configurazione consente di ridurre al minimo gli errori di limitazione e prevedere in modo più accurato la velocità effettiva.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Comprendere e soddisfare la sezione Requisiti del piano Enterprise in Azure Marketplace.
- Interfaccia della riga di comando di Azure versione 2.45.0 o successiva.
- Git.
- jq
- Estensione del piano Enterprise di Azure Spring Apps. Usare il comando seguente per rimuovere le versioni precedenti e installare l'estensione del piano Enterprise più recente. Se l'estensione
spring-cloud
è stata installata in precedenza, disinstallarla per evitare la mancata corrispondenza della configurazione e della versione.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Completare i passaggi descritti in Compilare e distribuire app in Azure Spring Apps usando il piano Enterprise.
Impostare i limiti di frequenza delle richieste
Spring Cloud Gateway include filtri di route dalla versione Open Source e diversi altri filtri di route. Uno di questi filtri è Il filtro RateLimit: Limitazione delle richieste utente. Il filtro RateLimit limita il numero di richieste consentite per ogni route durante un intervallo di tempo.
Quando si definisce una route, è possibile aggiungere il filtro RateLimit includendolo nell'elenco dei filtri per la route. Il filtro accetta quattro opzioni:
- Numero di richieste accettate durante la finestra.
- Durata della finestra. Questo valore è espresso in millisecondi per impostazione predefinita, ma è possibile specificare un suffisso di s, m o h per indicare che il valore è espresso in secondi, minuti o ore.
- (Facoltativo) Chiave di partizione utente. È anche possibile applicare una limitazione della velocità per utente. Ovvero, diversi utenti possono avere la propria velocità effettiva consentita in base a un identificatore trovato nella richiesta. Indicare se la chiave si trova in un'attestazione JWT o un'intestazione HTTP con
claim
oheader
sintassi. - (Facoltativo) È possibile limitare la frequenza in base a indirizzi IP, ma non in combinazione con la limitazione della velocità per utente.
L'esempio seguente limita tutti gli utenti a due richieste ogni cinque secondi alla /products
route:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s"
]
}
Se si vuole esporre una route per diversi set di utenti, ognuna identificata dalla propria client_id
intestazione HTTP, usare la definizione di route seguente:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s,{header:client_id}"
]
}
Quando viene superato il limite, le risposte avranno esito negativo con 429 Too Many Requests
stato.
Usare il comando seguente per applicare il RateLimit
filtro alla /products
route:
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
Usare i comandi seguenti per recuperare l'URL per la /products
route in 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"
Effettuare diverse richieste all'URL per /products
entro un periodo di cinque secondi per visualizzare che le richieste hanno esito negativo con uno stato 429 Too Many Requests
.
Pulire le risorse
Se si prevede di usare le guide di avvio rapido e le esercitazioni successive, è consigliabile non cancellare le risorse create. Quando non è più necessario, eliminare il gruppo di risorse per eliminare tutte le risorse contenute al suo interno. Per eliminare il gruppo di risorse usando l'interfaccia della riga di comando di Azure, usare i comandi seguenti:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Passaggi successivi
Continuare con uno degli argomenti di avvio rapido facoltativi seguenti: