Token-Bucket (Rate Limiting)
Kurz: Beim Token-Bucket-Verfahren füllt sich ein Eimer in festem Takt mit Marken. Jede Anfrage verbraucht eine Marke, ist der Eimer leer, wird sie abgelehnt oder verzögert.
Genauer: Der Eimer hat eine Höchstgröße (Burst) und eine Nachfüllrate. So sind kurze Spitzen erlaubt, solange vorher genug Marken angespart wurden, auf Dauer aber nur die Nachfüllrate.
Im Detail
- Parameter: Kapazität (zum Beispiel 20) und Rate (zum Beispiel 5 pro Sekunde).
- Vergleich: Fixed-Window-Zähler sind einfach, erlauben aber Doppel-Spitzen an der Fenstergrenze. Sliding-Window ist genauer, Token Bucket glättet Last elegant.
- Antwort: HTTP-Status 429 „Too Many Requests”, oft mit
Retry-After-Header. - Verteilt: Der Zähler liegt in einem gemeinsamen Speicher (zum Beispiel Redis), damit alle Server dasselbe Limit sehen.
- Schlüssel: Pro IP, Nutzer oder API-Schlüssel getrennt zählen.
Siehe auch: Rate Limiting