Rate Limiting
Mechanismus zur Begrenzung der Anfragerate an Dienste und APIs, um Stabilität, Fairness und Schutz vor Überlast sowie Missbrauch sicherzustellen.
Klassifikation
- KomplexitätMittel
- AuswirkungTechnisch
- EntscheidungstypArchitektur
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Fehlkonfiguration führt zu Kundenunzufriedenheit
- Bypass-Methoden (z. B. IP-Rotation) reduzieren Effektivität
- Übermäßige Drosselung kann Umsatz beeinträchtigen
- Start mit konservativen Limits und iteratives Anpassen anhand von Metriken
- Unterscheide zwischen globalen, kunden- und endpoint-spezifischen Limits
- Biete transparente Fehler- und Retry-Signale (Retry-After Header)
I/O & Ressourcen
- Identifikatoren (API-Key, IP, Benutzer-ID)
- Last- und Nutzungsmuster
- Service-Kapazitätsmodelle und SLAs
- Throttle-Antworten (z. B. HTTP 429)
- Metriken und Alerts
- Adaptives Backoff-Verhalten
Beschreibung
Rate Limiting ist ein Architekturprinzip zur Begrenzung von Anfragen an Dienste oder APIs, um Überlast und Missbrauch zu verhindern. Es definiert Regeln für erlaubte Anfragefrequenzen, Backoff-Verhalten und Antwortcodes. Typische Anwendungen reichen von API-Gateways über CDN bis zu serviceinternen Controls für stabile Verfügbarkeit.
✔Vorteile
- Verhindert Überlast und damit Ausfälle
- Schützt vor Missbrauch und DoS-Versuchen
- Ermöglicht faire Ressourcenteilung zwischen Kunden
✖Limitationen
- Falsche Limits können legitime Nutzer blockieren
- Zusätzliche Infrastruktur und Latenz durch zentrale Limit-Dienste
- Komplexität bei verteilten Systemen mit vielen Identitäten
Trade-offs
Metriken
- Anfragen pro Sekunde
Messung der eingehenden Anfragenrate pro Endpoint oder Key.
- Abgewiesene Anfragen (Throttle Hits)
Anzahl der Anfragen, die aufgrund von Limits abgewiesen wurden.
- Latenz während Drosselung
Reaktionszeitstatistiken wenn Limiting aktiv ist.
Beispiele & Implementierungen
API-Gateway mit Token-Bucket
Ein API-Gateway implementiert Token-Bucket-Algorithmen zur Begrenzung von Burst-Verkehr und stabilisiert Endpunkte.
CDN-basierte Drosselung
Ein CDN drosselt Anfragen an Ursprungsserver, um Lastspitzen zu glätten und Kosten zu reduzieren.
Service-internes Circuit-Breaker kombiniert mit Rate Limiting
Kombination aus Circuit-Breaker und per-Endpunkt Ratenbegrenzung verhindert cascading failures.
Implementierungsschritte
Analyse von Lastmustern und Definition von SLAs
Auswahl einer Limiting-Strategie (Token Bucket, Leaky Bucket, Fixed Window)
Integration in Gateway/Service, Monitoring und Alarmierung einrichten
⚠️ Technische Schulden & Engpässe
Tech Debt
- Monolithische Limit-Logik erschwert skalierbare Anpassung
- Keine zentrale Metrik, schwerfälliges Troubleshooting
- Veraltete Blacklist-Mechanismen statt adaptiver Regeln
Bekannte Engpässe
Beispiele für Missbrauch
- Setzen eines zu niedrigen Default-Limits für alle Nutzer
- Ignorieren von Burst-Verhalten in Spitzenzeiten
- Verlass auf Client-seitige Ratenbegrenzung allein
Typische Fallen
- Verwechslung von Quotas und Echtzeit-Ratenbegrenzung
- Unzureichende Tests unter realistischen Lastbedingungen
- Nichtbeachtung legaler Einschränkungen bei Nutzersegmentierung
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Notwendigkeit genauer Identifikatoren (API-Key, IP, User)
- • Reaktionszeitbudget darf nicht überschritten werden
- • Rechtliche/Compliance-Vorgaben bei Nutzersegmentierung