Rate Limiting
Einleitung
Rate Limiting begrenzt die Anzahl von Anfragen innerhalb eines definierten Zeitraums, um:
- Überlastung zu verhindern
- faire Ressourcennutzung sicherzustellen
- Missbrauch zu begrenzen
Es ist ein Schutzmechanismus gegen Überlast und unkontrolliertes Wachstum.
Grundsatz:
Nicht jeder Traffic ist gleich wertvoll.
Einordnung
Rate Limiting ist ein Resilience- und Traffic-Control-Pattern.
Typische Einsatzorte:
- API Gateway
- Edge Layer
- Service Mesh
- service-nahe Middleware
Es wirkt vor allem auf der Ingress-Seite eines Systems.
Ziele
- Systemstabilität unter Last
- Fairness zwischen Konsumenten
- Schutz vor Missbrauch (Scraping, DDoS light)
- Kostenkontrolle bei teuren Ressourcen
Grundprinzip
Algorithmen
1️⃣ Fixed Window
- X Requests pro Zeitfenster
- Einfach
- Burst am Fensterende möglich
2️⃣ Sliding Window
- Gleitendes Zeitfenster
- Gleichmäßigere Begrenzung
- Höherer Rechenaufwand
3️⃣ Token Bucket
- Tokens werden pro Zeit regeneriert
- Burst bis zur Bucket-Größe erlaubt
- Sehr verbreitet im API-Umfeld
4️⃣ Leaky Bucket
- Gleichmäßiger Abfluss
- Stärker regulierend
- Gut für Traffic Shaping
Harte vs. weiche Limits
Hard Limit
- Überschreitung → 429
- Sofortige Ablehnung
Soft Limit
- Priorisierung
- Verzögerung
- abgestufte Antwortzeiten
Verteilte Systeme: besondere Herausforderungen
1️⃣ Mehrere Instanzen
Lokale Zähler führen zu:
- inkonsistenten Limits
Lösungen:
- zentraler Redis
- verteiltes Rate-Limit-System
- API-Gateway-Durchsetzung
2️⃣ Multi-Tenant-Systeme
Limits können gelten für:
- IP
- API-Key
- Tenant
- User
- Endpunkt
Granularität ist Designentscheidung.
3️⃣ Retry + Rate Limiting
Unkontrollierte Retries können:
- Limits verstärken
- Systeme weiter destabilisieren
Retry muss mit Backoff kombiniert werden.
Vorteile
- Schutz vor Überlast
- Fairness zwischen Konsumenten
- Kapazitätskontrolle
- Schutz kostenintensiver Ressourcen
Risiken / typische Fallstricke
1️⃣ Falsche Schwellenwerte
Zu niedrig:
- legitime Nutzer blockiert
Zu hoch:
- Schutz wirkungslos
2️⃣ Fehlende Transparenz
Ohne:
- Dokumentation
- Rate-Limit-Headers
- Retry-After-Angaben
verschlechtert sich Developer Experience erheblich.
3️⃣ Kein Ersatz für Skalierung
Rate Limiting:
- schützt Systeme
- ersetzt keine Kapazitätsplanung
4️⃣ Verwechslung mit Backpressure
Rate Limiting:
- reguliert Eingang
Backpressure:
- reguliert interne Verarbeitungskapazität
Beides ergänzt sich.
Wann sinnvoll?
- öffentliche APIs
- Multi-Tenant-Plattformen
- kostenintensive Services
- stark schwankende Last
Wann weniger relevant?
- interne Low-Traffic-Systeme
- isolierte Batch-Jobs
- Single-Tenant-Umgebungen mit klarer Lastkontrolle
Strategische Perspektive
Rate Limiting ist:
- kein Business-Feature
- kein Performance-Feature
Es ist ein Stabilitäts- und Governance-Mechanismus.
Es verschiebt die Diskussion von:
„Wir skalieren immer weiter“
zu:
„Welche Last ist akzeptabel?“
Fazit
Rate Limiting:
- schützt Systeme vor Überlast
- erzwingt Fairness
- stabilisiert APIs
Es muss:
- bewusst getunt
- sauber kommuniziert
- zentral durchgesetzt
werden.
Ohne Monitoring ist es blind.