ForHosting KIT · Strumenti per sviluppatori

Calcolatore token bucket

Un secchio da 10 token che ne contiene 5 e si ricarica di 2 al secondo ne ha 8 disponibili dopo 1,5 secondi, quindi una raffica da 3 passa e ne lascia 5. Inserisca i suoi valori per vedere consenso o rifiuto e l'attesa. Gratis nel suo browser.

  • Gratis
  • Funziona nel suo browser
  • Senza registrazione
  • I suoi dati restano sul dispositivo
Usalo da WebAPIEmailTelegramApp presto
Se inserisce
Capacità
10
Tasso di ricarica
2
Token
5
Tempo trascorso
1,5
Numero di richieste
3
Ottiene
Token disponibili
8
Token rimanenti
5
Token consumati
3
Deficit
0

Si mantiene un secchio di token fino a una capacità fissa, lo si ricarica a ritmo costante e si spendono token quando arriva una richiesta o un burst. Questo calcolatore di rate limit token bucket accetta la capacità, la velocità di ricarica in token al secondo, il conteggio attuale dei token, quanti secondi sono trascorsi dall'ultimo aggiornamento e quanti token serve il burst successivo. Ricarica il secchio con un tetto rigido alla capacità, decide se consentire o negare, riporta i token residui dopo la decisione e, quando il burst è negato, calcola quanto tempo deve attendere per accumulare token sufficienti—oppure indica che la richiesta non potrà mai essere soddisfatta perché supera la capacità o la ricarica è zero.

Come decide il secchio

Un token bucket conserva un saldo di token che non supera mai una capacità fissa. Il tempo aggiunge token a una velocità di ricarica costante e ogni raffica spende tanti token quanto costa. Per decidere, il calcolatore prima ricarica: somma al saldo attuale i secondi trascorsi moltiplicati per la velocità e limita il risultato alla capacità. È ciò che si può spendere in quel momento. Se copre il costo, la raffica viene consentita e il costo viene sottratto. Nell'esempio, 5 token più 1,5 secondi a 2 al secondo fanno 8, quindi una raffica da 3 passa e ne restano 5. Il tempo trascorso lo indica lei, per questo gli stessi valori danno sempre la stessa risposta.

A cosa serve e gli errori più comuni

Serve a confrontare la quota di un gateway o un limitatore del suo codice con un riferimento, a spiegare un progetto durante una revisione o a preparare simulazioni di carico. È utile soprattutto nei casi limite in cui i limitatori scritti a mano sbagliano: un secchio già pieno, una ricarica parziale e una raffica più grande del tetto. Un errore comune è dimenticare il tetto, così il saldo cresce senza fine dopo una lunga pausa e consente raffiche molto più grandi del previsto. Un altro è trattare una raffica più grande della capacità come una questione di pazienza: nessuna attesa la farà entrare, e il calcolatore lo dice.

Quanti token sono disponibili dopo una pausa?

Aggiunga ai token attuali i secondi trascorsi moltiplicati per la velocità di ricarica, poi limiti il risultato alla capacità. Con 5 token, una ricarica di 2 al secondo e 1,5 secondi trascorsi, ne ha 8, purché la capacità arrivi a quel valore.

Quanto bisogna attendere quando una raffica viene rifiutata?

Il calcolatore divide il deficit, cioè i token mancanti, per la velocità di ricarica. Il risultato sono i secondi di attesa prima che la raffica entri nel secchio.

Quando una raffica non può mai essere consentita?

Quando costa più token di quanti il secchio possa contenerne, oppure quando la ricarica è zero e il secchio non ne ha già abbastanza. In entrambi i casi il calcolatore lo dice chiaramente invece di indicare un tempo di attesa.

Che cosa significano in pratica capacità e velocità di ricarica?

La capacità è la raffica più grande che il secchio accetta in una volta, il suo tetto. La velocità di ricarica, in token al secondo, è il ritmo costante che si può sostenere nel tempo dopo aver speso quella raffica.

Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.

POSThttps://api.kit.forhosting.com/dev/token-bucket

Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.

curl -X POST https://api.kit.forhosting.com/dev/token-bucket \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"capacity":10,"refill_rate":2,"tokens":5,"elapsed":1.5,"request_count":3}'
{
  "capacity": 10,
  "refill_rate": 2,
  "tokens": 5,
  "elapsed": 1.5,
  "request_count": 3
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.token_bucket",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.

per richiesta$0.002

Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.

HTTPCodiceSignificato
401unauthorizedChiave API mancante o non valida: controlla l'header Authorization.
402insufficient_balanceCredito esaurito: ricarica per continuare a eseguire attività.
404unknown_typeTipo di attività sconosciuto: controlla il campo type della richiesta.
429rate_limitedTroppe richieste in poco tempo: rallenta e riprova tra qualche secondo.

Il rate limiter token bucket è il modello di riferimento dietro il throttling delle API, le quote di gateway e la contropressione lato client. Lo stesso modulo puro e deterministico alimenta lo strumento gratuito del browser e il percorso API, così revisioni di progetto, script di load test e simulatori di produzione non divergono mai su casi limite come secchio pieno, ricarica parziale o richiesta più grande del tetto di burst.

Come l'algoritmo token bucket decide se consentire o negare

Il token bucket conserva un saldo di token non negativo che non supera mai la capacità. Tra un controllo e l'altro i token si accumulano a refill_rate token al secondo per la durata elapsed, poi il saldo viene limitato con min(capacity, tokens + elapsed per refill_rate). Quel valore limitato è tokens_available: quanto può spendere adesso. Un burst che costa request_count token è consentito quando tokens_available è almeno request_count; in caso di consenso, tokens_remaining diventa tokens_available meno request_count e tokens_consumed uguaglia request_count. In caso di diniego non si spendono token: tokens_remaining resta a tokens_available, tokens_consumed è zero e deficit è request_count meno tokens_available. Il tempo di attesa è deficit diviso per refill_rate quando la ricarica è positiva e la richiesta non supera la capacità; altrimenti la richiesta non potrà essere soddisfatta nemmeno in seguito (can_satisfy è false), coprendo sia un costo oltre il tetto di burst sia un secchio congelato con ricarica zero. La capacità è il margine di burst: un secchio pieno di dieci con ricarica lenta lascia comunque passare un picco di dieci token, ed è per questo che i gateway scelgono capacity per i picchi e refill_rate per il traffico medio sostenuto.

Contratto di ingresso, campi di risposta ed errori di validazione

Invii un body JSON con cinque numeri finiti obbligatori. capacity deve essere maggiore di zero ed è il massimo di token che il secchio può trattenere dopo la ricarica. refill_rate deve essere maggiore o uguale a zero e si misura in token al secondo; zero significa che il secchio non si riprende una volta vuoto. tokens è il saldo prima di applicare questo intervallo elapsed e deve essere non negativo; valori sopra capacity sono accettati e vengono limitati nel calcolo di tokens_available dopo la ricarica. elapsed sono i secondi dall'ultimo aggiornamento e deve essere non negativo. request_count è quanti token serve questo burst e deve essere maggiore di zero. Campi mancanti, stringhe non numeriche, NaN, Infinity e segni fuori intervallo falliscono con invalid_input indicando il campo e non vengono addebitati. In caso di successo il body ripete le cinque entrate e restituisce tokens_available dopo la ricarica, allowed come booleano, tokens_remaining dopo la decisione di spesa, tokens_consumed, deficit, wait_seconds (zero se consentito o se la richiesta non può mai passare), can_satisfy e una breve stringa formula che riformula la regola di aggiornamento. Esempio: capacity dieci, refill_rate due al secondo, tokens cinque, elapsed uno e mezzo, request_count tre produce tokens_available otto (cinque più tre dalla ricarica, ancora sotto capacità), allowed true, tokens_remaining cinque e wait_seconds zero. Una seconda chiamata che chiede nove token con gli stessi otto disponibili viene negata con deficit uno e wait_seconds di mezzo secondo a due token al secondo.

Dove un calcolatore token bucket dimostra il proprio valore

Autori di edge e di gateway usano il calcolatore come oracolo mentre implementano secchi Redis o in memoria, confrontando la macchina a stati locale con questo risultato in forma chiusa per ingressi identici. Formatori e colloqui SRE lo usano per mostrare che token bucket non è uguale a un leaky bucket puro: i burst sono ammessi fino a capacity e poi la ricarica regolare ripristina margine. La validazione fallita non consuma saldo. I team di prodotto API dimensionano capacity e ricarica prima di pubblicare una quota: provano numeri candidati e dimensioni di burst campione per vedere se i picchi legittimi passano mentre le inondazioni abusive attendono. Harness di load test e script di chaos chiamano lo stesso endpoint puro per affermare che un client sintetico che rispetta wait_seconds non spende mai oltre il limite documentato. Poiché l'implementazione è parse pura di livello A, ogni chiamata riuscita costa il prezzo base pubblicato $0.002 senza token di modello e senza rete in uscita. Mantenga le richieste compatte, fissi nei test i campi numerici arrotondati e otterrà risposte riproducibili di consenso e attesa per documenti di design, esempi SDK e prove di produzione senza erigere un servizio completo di rate limit.

Dimensionamento di quota API e di burst

Regoli capacity e refill_rate rispetto a burst realistici di request_count così i limiti di prodotto ammettono picchi legittimi e continano a vincolare il traffico sostenuto.

Oracoli di load test e di back-off del client

Guida client sintetici con il wait_seconds restituito e verifichi che non superino mai il contratto token-bucket documentato in scenari concorrenti.

Controlli incrociati di implementazione sul gateway

Confronti macchine a stati di secchio Redis o in-process con questo calcolatore deterministico per le stesse entrate di capacity, ricarica, tokens, elapsed e costo.

Come funziona il calcolatore di rate limit token bucket?

Calcola tokens_available = min(capacity, tokens + elapsed × refill_rate), consente il burst quando quel valore è almeno request_count, sottrae in caso di consenso e altrimenti restituisce deficit e wait_seconds = deficit / refill_rate quando la ricarica può col tempo coprire il costo.

Quali unità devo usare per refill_rate e elapsed?

Usi la stessa unità di tempo per entrambi: refill_rate è in token al secondo e elapsed in secondi. Scalare entrambi a millisecondi funziona solo se restano coerenti; l'API non converte le unità per Lei.

Cosa succede se request_count è maggiore di capacity?

Il burst viene negato con can_satisfy false e wait_seconds zero. Una singola richiesta che necessita di più token di quanti il secchio possa mai trattenere non passerà mai, nemmeno con ricarica completa.

tokens può essere maggiore di capacity in ingresso?

Sì. Il calcolatore accetta un valore tokens non negativo sopra capacity e limita solo dopo aver applicato la ricarica su elapsed, in linea con implementazioni comuni che memorizzano un contatore non limitato fino al prossimo aggiornamento.

Quanto costa il calcolatore token bucket?

Lo strumento nel browser è gratuito. Le richieste API usano il saldo prepagato KIT a $0.002 per chiamata riuscita; l'ingresso non valido non viene addebitato.

Leggi la documentazione completa del KIT →