← Ultimi articoli
💻 computer science

A Comparative Survey of API Rate-Limiting Algorithms: Token Bucket, Leaky Bucket, and Sliding Window

Questo articolo esamina e confronta sperimentalmente cinque algoritmi di rate-limiting delle API ampiamente utilizzati — token bucket, leaky bucket, fixed window, sliding window log e sliding window counter — per valutare i loro compromessi in termini di tolleranza ai burst e precisione, fornendo infine indicazioni per la selezione dell'algoritmo più appropriato in base alle specifiche caratteristiche del traffico e ai vincoli del sistema.

Autori originali: Umair Saleem

Pubblicato 2026-09-09
📖 5 min di lettura🧠 Approfondimento

Autori originali: Umair Saleem

Articolo originale sotto licenza CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo

I moderni servizi digitali si affidano a un delicato equilibrio tra disponibilità e protezione. Quando milioni di persone cercano di accedere a un sito web o a un'applicazione contemporaneamente, i server che operano dietro le quinte possono essere sopraffatti, proprio come un ponte a corsia singola intasato da un improvviso aumento del traffico. Per prevenire questo collasso, gli ingegneri utilizzano un meccanismo chiamato "rate limiting" (limitazione della frequenza), che funge da guardiano. Questo guardiano conta quanti messaggi un utente o un dispositivo specifico invia entro un determinato periodo e blocca quelli che superano una soglia di sicurezza. L'obiettivo non è punire gli utenti, ma garantire che il sistema rimanga stabile per tutti, impedendo a pochi utenti intensivi di consumare tutte le risorse disponibili. Tuttavia, non tutto il traffico arriva come un flusso costante; a volte arriva sotto forma di improvvisi e acuti picchi, come quando scoppia una notizia popolare o un sistema riprova una connessione fallita. La sfida per gli ingegneri è decidere come gestire questi picchi: il sistema dovrebbe permettere il passaggio di un aumento temporaneo, o dovrebbe applicare rigorosamente un limite fisso indipendentemente dalla situazione?

Uno studio recente di Umair Saleem investiga le diverse regole matematiche utilizzate per costruire questi guardiani digitali. La ricerca si concentra su cinque metodi specifici comunemente utilizzati nel settore: il token bucket, il leaky bucket, il fixed window counter, lo sliding window log e lo sliding window counter. Ognuno di questi metodi ha un modo diverso di tracciare il tempo e contare le richieste, portando a comportamenti differenti quando si verifica un'ondata di traffico. Per capire quale metodo funzioni meglio, l'autore non si è affidato alla sola teoria, ma ha costruito una simulazione informatica per testarli tutti in condizioni identiche. La simulazione ha creato un flusso realistico di oltre mille richieste in un periodo di cento secondi. Questo flusso comprendeva un flusso di fondo costante di otto richieste al secondo, interrotto da due distinti picchi di attività: un periodo di cinque secondi in cui il traffico è balzato a quaranta richieste al secondo, seguito da un picco più acuto di due secondi che ha raggiunto le sessanta richieste al secondo. Eseguendo esattamente lo stesso schema di traffico attraverso ciascuno dei cinque algoritmi, lo studio ha potuto misurare esattamente quante richieste ogni metodo accettava, quante rifiutava e come si comportava il sistema durante i picchi.

I risultati hanno rivelato una netta divisione nel modo in cui questi algoritmi gestiscono la pressione di un'ondata di traffico. Il token bucket e il leaky bucket si sono comportati in modo quasi identico quando utilizzati semplicemente per decidere se accettare o rifiutare una richiesta. Entrambi i metodi hanno permesso al sistema di assorbire i picchi in modo più efficace rispetto agli altri, accettando un totale di 844 richieste su 1.057 inviate, il che si traduce in un tasso di accettazione di circa l'80 percento. Durante il primo grande picco, questi due metodi hanno permesso il passaggio di 69 richieste, e durante il secondo picco, più acuto, ne hanno permesse 38. Ciò è accaduto perché questi algoritmi sono progettati con una capacità integrata di memorizzare un "permesso extra" per un uso futuro, consentendo loro di smussare i picchi senza allontanare immediatamente gli utenti. Al contrario, lo sliding window log è stato il metodo più rigido di tutti. Non ha mai permesso più di dieci richieste in un singolo secondo, aderendo rigorosamente al limite configurato. Sebbene ciò abbia fornito la protezione più precisa contro il sovraccarico, è avvenuto a un costo elevato: ha rifiutato la maggior parte del traffico complessivo, accettando solo il 67,9 percento delle richieste. Era l'unico metodo che garantiva che il sistema non vedesse mai un picco superiore al limite, ma lo ha fatto allontanando utenti legittimi più frequentemente rispetto agli altri metodi.

Gli altri tre metodi si sono collocati nel mezzo, mostrando difetti prevedibili basati su come misuravano il tempo. Il fixed window counter, che resetta il proprio conteggio all'inizio di ogni nuovo secondo, ha sofferto di un errore di temporizzazione ai confini. Poiché poteva resettare il proprio contatore proprio mentre arrivava un picco di traffico, ha permesso un aumento temporaneo fino a quindici richieste in un singolo secondo, superiore al limite previsto. Lo sliding window counter ha cercato di correggere questo problema guardando anche al secondo precedente, ma lo ha corretto solo parzialmente, raggiungendo un picco di tredici richieste. Lo studio ha rilevato che la scelta dell'algoritmo dipende interamente da ciò che il sistema deve proteggere. Se l'obiettivo è rendere felici gli utenti e permettere picchi naturali di attività, come il ricaricamento di una pagina con molteplici chiamate ai dati, il token bucket è la scelta superiore perché bilancia un'alta accettazione con prestazioni costanti. Se l'obiettivo è proteggere un sistema a valle fragile che non può tollerare alcun picco, lo sliding window log è l'opzione migliore, nonostante il suo tasso di accettazione inferiore. La ricerca conclude che non esiste uno strumento perfetto per ogni compito; invece, gli ingegneri devono scegliere il metodo che si allinea con la loro specifica tolleranza ai picchi di traffico e con le loro risorse di memoria disponibili.

Sommerso dagli articoli nel tuo campo?

Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.

Prova Digest →