SystemarchitekturBackend-Entwickler, Systemarchitekt

Was ist ein Circuit Breaker auf architektonischer Ebene, wann und warum sollte man ihn anwenden?

Bestehen Sie Vorstellungsgespräche mit dem Hintsage-KI-Assistenten

Antwort.

Circuit Breaker ist ein Architekturpattern, das dazu dient, Lawinenfehler und die Degradierung verteilter Systeme zu verhindern. Es besteht darin, dass eine Komponente, die für die Aufrufe an ein externes System verantwortlich ist, den Erfolg der Operationen überprüft. Wenn die Anzahl der fehlgeschlagenen Versuche zu hoch wird, wird der Circuit Breaker automatisch "offen" geschaltet, und weitere Aufrufe werden blockiert, bis sich das System wieder erholt.

Beispiel: Wenn der Mikrodienst Auth nicht mehr antwortet, sendet der Dienst Order mithilfe des Circuit Breakers vorübergehend keine Anfragen mehr und gibt sofort einen Fehler zurück, um hohe Belastungen für das abhängige System zu verhindern.

Beispielcode in Python (unter Verwendung der Bibliothek pybreaker):

import pybreaker import requests breaker = pybreaker.CircuitBreaker(fail_max=3, reset_timeout=30) @breaker def call_service(): return requests.get("https://api.service.com/data") try: response = call_service() except pybreaker.CircuitBreakerError: print("Dienst vorübergehend nicht verfügbar. Bitte später erneut versuchen.")

Wichtige Merkmale:

  • Begrenzung der Ausbreitung von Fehlern und Beschleunigung der Wiederherstellung des Systems.
  • Ermöglicht ein gracefully degrade: Benutzer warnen, anstatt die Anwendung zum Absturz zu bringen.
  • Relevant für Integrationen mit unzuverlässigen oder überlasteten Systemen.

Fragen mit Tücken.

Ist Circuit Breaker dasselbe wie Retry?

Nein. Retry wiederholt fehlgeschlagene Operationen, der Circuit Breaker bricht die Kette der Aufrufe bei einer hohen Anzahl von Fehlern ab, um dem System eine Verschnaufpause zu geben. Diese Patterns werden häufig kombiniert: Retry innen, Circuit Breaker außen.

Sollte man Circuit Breaker zwischen eigenen Mikrodiensten implementieren, die gleichzeitig bereitgestellt werden?

Ja, wenn die Dienste von fehlerhaften oder Netzwerkproblemen betroffen sein können. Niemand ist vor Konfigurationsfehlern oder hoher Belastung geschützt, auch nicht Ihre Mikrodienste.

Ist Circuit Breaker nur bei externen API-Integrationen notwendig?

Nein, dieses Pattern kann für jede unzuverlässige Interaktion angewendet werden, einschließlich innerhalb der eigenen Infrastruktur: Datenbanken, Cache, Nachrichtenwarteschlangen.