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.
-
Transaktionale E-Mails zuverlässig versenden: Outbox-Zeile, Worker, Retries und Idempotenzschlüssel
E-Mails nicht aus dem Request-Handler heraus senden: die Nachricht in derselben Transaktion wie das Geschäftsereignis erfassen, sie von einem Worker zustellen lassen, bei vorübergehenden (4yz) Antworten und Verbindungsfehlern mit Backoff erneut versuchen, bei dauerhaften (5yz) Antworten abbrechen, und Duplikate nach einem Absturz mit einem ereignisbezogenen Idempotenzschlüssel und einer stabilen Message-ID verhindern.
Maschinenlesbar: JSON