15 Punkte von baeba 2025-05-13 | 1 Kommentare | Auf WhatsApp teilen

Sam Newman betonte Timeouts, Retries und Idempotenz als drei zentrale Konzepte, die man in verteilten Systemen unbedingt verstehen muss.
Er sagte, es sei wichtiger, diese Grundkonzepte zuerst sauber zu beherrschen als komplexe verteilte Algorithmen wie Paxos oder Raft.


Drei grundlegende Annahmen verteilter Systeme

  1. Informationen werden nicht sofort übertragen.
  2. Das andere System antwortet möglicherweise nicht.
  3. Ressourcen sind begrenzt.

Diese drei Punkte sind die grundlegende Ursache für die gesamte Komplexität verteilter Systeme.


Timeouts

Wenn eine Anfrage nicht innerhalb einer bestimmten Zeit abgeschlossen wird, muss sie abgebrochen werden.
Werden Ressourcen zu lange belegt, kann das zu Systemüberlastung und einer schlechten Nutzererfahrung führen.

Newman erklärte: „Bei Timeouts geht es darum, die Gesundheit des Gesamtsystems höher zu gewichten als den Erfolg einer einzelnen Anfrage.“

Wichtige Punkte

  • Durchschnittliche Ausführungszeit und Nutzererwartungen verstehen
  • Konfigurationswerte sollten flexibel änderbar sein, ohne den Code anzupassen

Retries

Übermäßige Retries können für das System zu einem selbstverschuldeten DoS-Angriff werden.
Retries sind notwendig, aber dabei müssen Begrenzungen auf Client- und Server-Seite sowie Netzwerk-Jitter mitbedacht werden.

Newman warnte, dass das Hinzufügen von Jitter sinnvoll ist, exponentielles Backoff das System jedoch im Gegenteil zusätzlich belasten kann.


Idempotenz

Auch wenn eine Anfrage mehrfach gesendet wird, sollte das Ergebnis gleich bleiben.
Das ist in erster Linie die Verantwortung des Servers und eine Voraussetzung dafür, dass Retries sicher sind.

Praktische Szenarien

  • Wenn die Anfrage den Server nicht erreicht: Es passiert nichts
  • Wenn der Server sie verarbeitet hat, aber die Antwort abbricht: Die Änderung wurde vorgenommen, aber der Client weiß nichts davon → Idempotenz erforderlich

Implementierungsmethoden

  1. Request-ID verwenden: Dem Client wird eine Kennung gegeben, damit wiederholte Anfragen erkannt werden können
  2. Fingerprint-Methode: Anhand des Hash-Werts des Request-Bodys usw. wird beurteilt, ob es sich um ein Duplikat handelt (Zeitinformationen möglichst vermeiden)

Fazit

Er begann mit dem Zitat: „Immer wieder dasselbe zu tun und ein anderes Ergebnis zu erwarten, ist Wahnsinn“,
doch Newman sagte, dass in verteilten Systemen Retries durchaus rational sein können.
Er betonte jedoch, dass Retries unbedingt sicher ausgeführt werden müssen und dafür Timeouts und Idempotenz gemeinsam entworfen werden sollten.

1 Kommentare

 
unknowncyder 2025-05-13

Circuit Breaker~