Resilienz-Mechanismen: Rate Limiting & Circuit Breaking
Dies ist eine kompakte Einführung in die Resilienz-Muster Rate Limiting und Circuit Breaking, die in modernen Cloud-Architekturen (oft via Envoy oder API Gateways) implementiert werden.
Resilienz-Mechanismen: Rate Limiting & Circuit Breaking[Bearbeiten]
In verteilten Systemen können Fehler in einem einzelnen Dienst kaskadierende Effekte auslösen, die das gesamte System lahmlegen. Um dies zu verhindern, kommen Schutzmechanismen zum Einsatz, die die Stabilität der Architektur sicherstellen.
1. Rate Limiting (Drosselung)[Bearbeiten]
Rate Limiting kontrolliert die Anzahl der Anfragen, die ein Nutzer oder ein Client innerhalb eines bestimmten Zeitraums an einen Dienst senden darf.
- Ziel: Schutz vor Überlastung (DoS-Angriffe), Schutz von Ressourcen und faire Verteilung der Kapazitäten zwischen verschiedenen Nutzern.
- Funktionsweise: Übersteigt die Anzahl der Anfragen ein definiertes Limit (z. B. 100 Requests pro Minute), wird der Zugriff verweigert – meist mit dem HTTP-Statuscode 429 Too Many Requests.
- Algorithmen:
- Token Bucket: Ein "Eimer" füllt sich stetig mit Token; jeder Request verbraucht einen. Ist der Eimer leer, wird blockiert.
- Fixed Window: Einfache Zählung pro Zeitfenster (z. B. Minute).
2. Circuit Breaking (Sicherungsschalter)[Bearbeiten]
Der Circuit Breaker verhindert, dass ein Dienst versucht, eine Operation auszuführen, die höchstwahrscheinlich scheitern wird. Dies schont Ressourcen und verhindert "Staus" im Netzwerk.
- Ziel: Fehlertoleranz und Vermeidung von kaskadierenden Ausfällen (Cascading Failures).
- Die drei Zustände:
- Closed (Geschlossen): Der Normalzustand. Anfragen werden durchgelassen. Wenn Fehler auftreten, wird gezählt.
- Open (Offen): Bei Erreichen einer Fehlerschwelle "springt die Sicherung raus". Anfragen werden sofort mit einem Fehler beantwortet, ohne den Zieldienst überhaupt zu kontaktieren.
- Half-Open (Halboffen): Nach einer Wartezeit lässt der Schalter testweise einzelne Anfragen durch. Sind diese erfolgreich, schließt er sich wieder (Normalzustand).
3. Vergleich der Mechanismen[Bearbeiten]
| Merkmal | Rate Limiting | Circuit Breaking |
|---|---|---|
| Fokus | Schützt den Server vor zu vielen Anfragen (Quantität). | Schützt das System vor fehlerhaften Diensten (Qualität). |
| Auslöser | Zu hohe Frequenz durch den Client. | Zu hohe Fehlerrate des Ziel-Services. |
| Reaktion | "Warte bitte, du bist zu schnell." | "Versuche es gar nicht erst, der Dienst ist gerade kaputt." |
4. Implementierung in der Cloud[Bearbeiten]
Diese Mechanismen werden heute selten im Anwendungscode selbst programmiert, sondern an die Infrastruktur ausgelagert:
- Envoy / Service Mesh: Konfiguration von Schwellenwerten direkt im Sidecar-Proxy.
- API Gateways: Zentrales Management von API-Keys und deren Limits.
Zusammenfassend: Während Rate Limiting sicherstellt, dass die Last innerhalb der Kapazitätsgrenzen bleibt, sorgt Circuit Breaking dafür, dass Teilausfälle das System nicht komplett zum Einsturz bringen.