Sind Erlang / OTP-Nachrichten zuverlässig? Können Nachrichten dupliziert werden?

Lange Version

Ich bin neu in Erlang und denke darüber nach, es für eine skalierbare Architektur zu verwenden. Ich habe viele Befürworter der Plattform gefunden, die für ihre Zuverlässigkeit und Fehlertoleranz werben.

Ich kämpfe jedoch darum, genau zu verstehen, wie Fehlertoleranz in diesem System erreicht wird, in dem sich Nachrichten im transienten Speicher befinden. Ich verstehe, dass eine Supervisor-Hierarchie eingerichtet werden kann, um verstorbene Prozesse zu respawnen, aber ich konnte nicht viel Diskussion über die Auswirkungen des Respawnens auf laufende Arbeiten finden. Was passiert mit Bordnachrichten und den Artefakten unvollständiger Arbeiten, die auf einem sterbenden Knoten verloren gegangen sind?

Werden Nachrichten, die nicht bestätigt werden, wenn Verbraucherprozesse abstürzen, von allen Herstellern automatisch erneut übertragen? Wenn nicht, wie kann dies als fehlertolerant angesehen werden? Und wenn ja, wie kann verhindert werden, dass eine Nachricht, die verarbeitet, aber nicht vollständig bestätigt wurde, erneut übertragen und daher nicht ordnungsgemäß weiterverarbeitet wird?

(Ich erkenne, dass diese Bedenken nicht nur für Erlang gelten; ähnliche Bedenken treten in jedem verteilten Verarbeitungssystem auf. Aber Erlang-Enthusiasten scheinen zu behaupten, dass die Plattform dies alles "einfach" macht ..?)

Nimmt man an, dass Nachrichten erneut übertragen werden, kann ich mir leicht ein Szenario vorstellen, in dem die nachgelagerten Auswirkungen einer komplexen Nachrichtenkette nach einem Fehler sehr durcheinander geraten könnten. Ohne eine Art stark verteiltes Transaktionssystem verstehe ich nicht, wie Konsistenz und Korrektheit aufrechterhalten werden können, ohne in jedem Prozess auf Doppelarbeit zu achten. Muss mein Anwendungscode immer Einschränkungen erzwingen, um zu verhindern, dass Transaktionen mehrmals ausgeführt werden?

Kurze Version:

Sind verteilte Langprozesse von doppelten Nachrichten betroffen? Wenn ja, ist der Schutz vor Duplikaten (dh die Machtlosigkeit) eine Anwendungsverantwortung, oder hilft erlang / OTP uns dabei irgendwie?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage