Backend, APIs & Daten · Gemischt

Warteschlangen und Hintergrundaufträge

In einem Satz: Alles, was länger als eine Sekunde dauert und für die Antwort an den Nutzer nicht nötig ist, gehört in eine Warteschlange, nicht in die Anfrage.

Was in den Hintergrund wandert

E-Mail und Benachrichtigungen senden, Berichte erzeugen, Medien verarbeiten, mit externen Systemen synchronisieren und jeder Aufruf an einen Dienst, dessen Verfügbarkeit Sie nicht steuern.

Das Ergebnis: eine schnelle Antwort an den Nutzer und Widerstandsfähigkeit — wenn der externe Dienst ausfällt, warten die Aufträge, statt zu scheitern.

Drei Regeln je Auftrag

Wiederholbar. Ein Doppellauf erzeugt keine Doppelung. Erreichen Sie das mit einem eindeutigen Schlüssel je Aktion.

Klein. Ein Auftrag, der zwei Stunden läuft, ist einer, den man nicht erneut versuchen kann. Teilen Sie ihn.

Berichtet. Start, Ende, Fehlschlag und Versuchszahl.

Was vergessen wird

Eine Warteschlange für tote Aufträge, die wiederholt scheiterten, mit einer Warnung — sonst verschwinden sie still. Erneuter Versuch mit wachsender Verzögerung, um keinen bereits kämpfenden Dienst zu Fall zu bringen. Und Reihenfolge: Wenn die Reihenfolge zählt, setzen Sie einen Partitionsschlüssel; sonst nehmen Sie sie nicht an.

Im Detail

Überwachen Sie drei Kennzahlen: Warteschlangenlänge, Alter des ältesten Auftrags und Fehlschlagrate. Eine über Tage langsam steigende Warteschlangenlänge ist das frühe Symptom der meisten Lastvorfälle, und es zeigt sich lange, bevor ein Nutzer etwas spürt.