Che cos’è il rate limiting?

Riassumere questo con l'AI

Che cos’è il rate limiting?

La limitazione della frequenza è una tecnica che consente di controllare il numero di richieste che un client può inviare a un sistema entro un determinato intervallo di tempo, proteggendo così il sistema dal rischio di sovraccarico. Si tratta di un controllo difensivo che la maggior parte degli utenti finali nota solo quando lo incontra.

I limiti di rate possono essere applicati a diversi livelli: per chiave API, per account utente, per indirizzo IP o a livello globale su un intero servizio, a seconda di ciò che il sistema intende proteggere e da chi.

Come funziona la limitazione della velocità?

Un limitatore di velocità monitora le richieste per cliente (in base alla chiave API, all'indirizzo IP, all'utente o al token) rispetto a una soglia definita, ad esempio 100 richieste al minuto. Quando un cliente supera tale soglia, le richieste successive vengono ritardate, messe in coda o respinte, solitamente con una risposta HTTP 429 “Too Many Requests”, fino al ripristino della finestra.

Tra gli algoritmi più diffusi figurano quello a finestra fissa (un azzeramento completo ogni N secondi), quello a finestra scorrevole (un conteggio progressivo che evita i picchi ai margini della finestra), quello a “token bucket” (le richieste consumano token che si ricaricano a un ritmo costante) e quello a “leaky bucket” (le richieste vengono elaborate a una velocità di output costante indipendentemente dalla dimensione del picco). Ciascuno di essi presenta un diverso compromesso tra tolleranza ai picchi, equità e complessità di implementazione.

Cosa succede quando viene superato un limite di frequenza?

A seconda della struttura del sistema, una richiesta che supera il limite viene in genere respinta immediatamente con un codice di stato 429, messa in coda ed elaborata non appena si libera della capacità, oppure soggetta a una limitazione della velocità di risposta. Le API ben progettate restituiscono intestazioni che indicano il limite, il numero di richieste rimanenti e quando la finestra si azzera, in modo che i client possano regolare la frequenza delle richieste in modo intelligente.

I tentativi di riprova sul lato client, che vengono attivati immediatamente e ripetutamente, aumentano ulteriormente il carico proprio nel momento in cui il sistema sta cercando di alleggerirlo. Ecco perché la maggior parte dei client API implementa un backoff esponenziale quando riceve un codice di errore 429.

Perché è importante la limitazione della velocità?

Un singolo client che non funziona correttamente, un picco di traffico o un processo automatizzato fuori controllo possono compromettere le prestazioni di tutti gli altri utenti o esaurire le risorse di backend condivise se le richieste non vengono monitorate. La limitazione della frequenza è una misura di difesa fondamentale per garantire la stabilità delle API, un utilizzo equo e il controllo dei costi.

Questo aspetto sta assumendo un’importanza sempre maggiore, poiché gli agenti basati sull’intelligenza artificiale e i sistemi automatizzati generano volumi di richieste che nessun essere umano sarebbe in grado di generare manualmente. Un agente bloccato in un ciclo di riprova, o progettato per effettuare interrogazioni in modo aggressivo, può produrre modelli di richiesta che non assomigliano affatto al traffico umano, ed è proprio questo lo scenario che la limitazione della velocità è chiamata a contenere.