BEAM Erlang Campus

Erlang-Lektion

Verteilte Systeme in Erlang einfach erklaert

Verteiltes Erlang ist der Punkt, an dem lokale Korrektheit nicht mehr reicht. Sobald Nachrichten Maschinen grenzen ueberschreiten, werden Latenz, Teilausfaelle und Timeouts Teil des Designs.

Was sich aendert, wenn ein System verteilt wird

Auf einer Maschine bleiben viele Annahmen unsichtbar. Ueber mehrere Maschinen hinweg werden sie Teil des Problems. Antworten koennen spaet kommen, Nodes koennen wegfallen, ein Request kann remote erfolgreich sein, waehrend der Aufrufer lokal in den Timeout laeuft. Deshalb darf verteiltes Denken nicht einfach von lokalem Code uebernommen werden.

Die erste Lektion fuer Anfaenger ist daher nicht „Node-Syntax auswendig lernen“, sondern „Ausfall und Verzoegerung als normale Design-Eingaben behandeln“. Das macht verteiltes Erlang realistisch.

Nodes und Remote Messaging

Ein Node ist eine laufende Erlang-Instanz, die mit anderen Instanzen kommunizieren kann, wenn Namen und Erreichbarkeit stimmen. Remote Messaging sieht syntaktisch oft einfach aus. Genau das ist Staerke und Gefahr zugleich. Die Syntax ist leicht, die Betriebsannahmen dahinter nicht.

Deshalb sollte jedes Remote-Beispiel sofort mit einer Frage verbunden werden: was passiert, wenn keine Antwort kommt? Was passiert bei Node-Ausfall? Wie reagiert der Caller dann?

{service, 'worker@host'} ! ping.
receive
    reply -> ok
after 2000 ->
    timeout
end.

Warum Timeouts in den ersten Entwurf gehoeren

Ein Timeout ist kein Spaet-Patch, sondern Teil des Protokolls. Wenn eine Antwort remote spaet oder gar nicht kommen kann, braucht der Caller eine definierte Reaktion. Retry, Logging, Fehler rueckgeben oder Eskalation sind Designentscheidungen.

Genau hier unterscheidet sich verteiltes Denken vom lokalen. Ein robustes verteiltes System plant den schwierigen Pfad von Anfang an ein.

Wie dieses Thema an Supervisoren und Fehlertoleranz anschliesst

Nach Supervisor Thinking folgt hier der naechste logische Schritt: Nicht nur lokale Worker koennen scheitern, auch Verbindungen zwischen Nodes sind unsicher. Damit werden Ausfall, Wiederholung und Zeitgrenzen nicht mehr nur OTP-Fragen, sondern Teil verteilter Protokolle.

Genau deshalb ist diese Seite mehr als eine Sammlung von Node-Befehlen. Sie soll das Denken verschieben: von „es funktioniert auf meinem Rechner“ hin zu „wie reagiert mein System, wenn ein entfernter Teil zu spaet, gar nicht oder nur teilweise antwortet?“

Eine kleine Walkthrough-Leseprobe

Stell dir einen Service vor, der auf einem anderen Node laeuft. Dein Prozess sendet ping und wartet zwei Sekunden. Wenn eine Antwort kommt, ist der Fall klar. Wenn keine kommt, musst du nicht nur „Fehler“ sagen, sondern dich entscheiden: retry, aufgeben, loggen oder den Nutzer informieren.

Diese kleine Entscheidung ist genau der Kern verteilter Systeme. Das Systemdesign ist nicht erst dort gut, wo alles antwortet, sondern dort, wo auch das Ausbleiben einer Antwort klar modelliert ist.

Typische Anfaengerfehler bei verteiltem Erlang

Ein haeufiger Fehler ist, Verteilung zu frueh einzubauen, bevor das Modell auf einem Node sauber ist. Ein anderer ist, Remote-Beispiele ohne Timeout-Handling zu schreiben. Ausserdem wird Netzwerkausfall oft wie ein Ausnahmefall statt wie ein normaler Systemzustand behandelt.

Die staerkste Uebung ist, Erfolgs- und Fehlerpfad nebeneinander zu designen. Wenn ein entfernter Node wegfaellt, was ist dann nur verzoegert, was kann retryen und was muss sauber stoppen? Genau diese Fragen fuehren zu besseren Systemen.

Warum diese Seite fuer Suchende wichtig ist

Wer nach verteilten Systemen in Erlang sucht, will in der Regel nicht nur Syntax, sondern ein Gefuehl dafuer, wie sich Denken und Verantwortung bei Remote-Kommunikation veraendern.

Genau darauf zielt diese Seite: Nodes, Remote Messaging, Timeouts und Teilausfall werden zu einem zusammenhaengenden Modell verbunden, statt als lose Einzelbegriffe stehenzubleiben.

Was du danach tun solltest

  • Einen receive-Block um einen Timeout erweitern.
  • Einen Remote-Fehler und eine passende Reaktion benennen.
  • Das Ein-Node-Design erst sauber machen, dann verteilen.
  • Danach das Abschlussprojekt bauen.

Hauefige Fragen

Ist Distributed Erlang nur normales Messaging ueber mehrere Maschinen?

Die Syntax kann aehnlich wirken, aber betrieblich kommen Latenz, Unterbrechung und Teilausfall hinzu.

Warum sind Timeouts so wichtig?

Weil remote Kommunikation verzoegert oder unterbrochen sein kann und der Aufrufer auf fehlende Antworten vorbereitet sein muss.