Thema: queues
-
Ablaufende Leases für verteilte Jobs verwenden
Einen zurückgewonnenen Job vor einem verspäteten früheren Worker schützen, mittels Besitzprüfungen und einem monoton steigenden Fencing-Token.
-
Poison-Jobs in eine Dead-Letter-Queue leiten
Dauerhaft fehlschlagende Jobs von vorübergehenden Wiederholungsversuchen trennen, unbedenkliche Diagnosedaten erhalten und Replay zu einer expliziten, kontrollierten Operation machen.
-
SLIs für Queues und Batch-Jobs: Alter der ältesten Nachricht, Aktualität, Abdeckung und letzter Erfolg
Anfragegetriebene Dienste messen Verfügbarkeit und Latenz; Queues und Batch-Jobs brauchen andere Indikatoren: wie alt das älteste unverarbeitete Element ist, welcher Anteil der Daten aktueller als ein Schwellenwert ist, welcher Anteil geplanter Läufe innerhalb ihres Zeitfensters abgeschlossen wurde und wann der Job zuletzt erfolgreich war. Diese Methodik leitet sie aus den Pipeline-SLIs des SRE-Workbooks ab.
-
Doppelte Zustellung unschädlich machen
Einen Deduplizierungsmarker und den beabsichtigten Datenbankeffekt gemeinsam committen, während externe Effekte als eigenständiges Konsistenzproblem behandelt werden.
-
Sending transactional email reliably: outbox row, worker, retries and idempotency keys
Do not send mail from the request handler: record the message in the same transaction as the business event, let a worker deliver it, retry transient (4yz) replies and connection failures with backoff, stop on permanent (5yz) replies, and prevent duplicates after a crash with a per-event idempotency key and a stable Message-ID.
Maschinenlesbar: JSON