Alle Artikel
19. April 20236 Min. Lesezeit

Wiederholungen: Wann sie helfen und wann sie alles schlimmer machen

Von Das Atflow-Team

helle Lichter in einem dunklen Bereich
Foto von Aron Visuals auf Unsplash

Eine fehlgeschlagene Operation zu wiederholen ist das häufigste Zuverlässigkeitsmuster und eines der einfachsten, um es katastrophal falsch zu machen. Richtig gemacht verschwinden vorübergehende Fehler, bevor es jemand bemerkt. Falsch gemacht erledigen Ihre eigenen Clients einen Dienst, der ohnehin schon kämpft.

Nur wiederholen, was sich wiederholen lässt

Ein Timeout lohnt eine Wiederholung; ein 400 nicht, und wird es auch nie. Einen deterministischen Fehler zu wiederholen ist nur ein langsamerer Weg zu scheitern, der zusätzlich Last erzeugt. Die erste Entscheidung ist immer, ob diese Fehlerklasse bei einem zweiten Versuch überhaupt erfolgreich sein kann.

Die Regeln, die zählen

  • Exponentielles Backoff mit Jitter — synchronisierte Wiederholungen sind eine selbst verursachte Thundering Herd.
  • Eine harte Obergrenze für Versuche und ein definiertes Ziel für alles, was sie aufgebraucht hat.
  • Idempotenz, sonst bucht die Wiederholung dem Kunden das Geld zweimal ab.
  • Ein Circuit Breaker, damit Sie aufhören, auf etwas einzuschlagen, das eindeutig ausgefallen ist.

Das sind Richtlinienentscheidungen, keine Code-Details — deshalb gehören sie an einen sichtbaren Ort. Ein Wiederholungszweig mit »+72 h, max. 3« darauf ist prüfbar, eine Konstante, die tief in einem Dienst vergraben ist, nicht.

ZuverlässigkeitEngineeringWiederholungen