Komplexe verteilte Systeme

Unter komplexen verteilten Systemen verstehen wir eine Anzahl von vernetzten Rechenelementen, die sich durch Austausch von Nachrichten koordinieren, ohne dass sie über einen gemeinsamen Datenspeicher verfügen. Das heisst, die Daten werden auf jedem dieser Rechenelemente gespeichert und über das Netzwerk repliziert, im Gegensatz z. B. zu einer Webanwendung, in der verschiedene Webserver auf dieselbe Datenbank zugreifen.

Vorteile

Die Hauptvorteile von verteilten Systemen sind Parallelität, Fehlertoleranz und hohe Verfügbarkeit.

Da von den parallel arbeitenden Rechnern keine gemeinsamen, kritischen Ressourcen, insbesondere Speichermedien genutzt werden, kann ein solches System (theoretisch) beliebig erweitert werden, ohne dass ein Engpass („bottleneck“) auftritt.

Wenn von verschiedenen Rechnern die gleichen Dienste angeboten und die gleichen Daten vorgehalten werden, können Teile des Systems ausfallen, ohne dass der Funktionsumfang beeinträchtigt wird.

Verfügbarkeit, im Sinne von annehmbare Antwortzeiten auch im Fehlerfall, kann durch Überdimensionierung oder durch das dynamische Hinzufügen von Hardware­­ressourcen gewährleistet werden.

Man kann nicht alles haben

So lautet zumindest das sogenannte „CAP-Theorem”. Die Abkürzung CAP bezieht sich auf drei Eigenschaften verteilter Systeme:

  • Consistency – Konsistenz der verteilten Daten, d.h. insbesondere: Ab dem Moment, in dem Daten auf einem Rechner gespeichert werden, darf es nicht mehr möglich sein, auf einem anderen Rechner dafür andere Werte auszulesen
  • Availability – Verfügbarkeit, was in diesem Zusammenhang akzeptable und vor allem endliche Antwortzeiten bedeutet , d.h. jede Anfrage wird beantwortet
  • Partition tolerance – Toleranz gegenüber Partitionierung, d.h. dem Verlust von Nachrichten, dem Ausfall von Verbindungen oder einzelner Rechenelemente

Das Theorem besagt, dass ein verteiltes System zwei dieser Eigenschaften gleichzeitig erfüllen kann, nicht jedoch alle drei. Das mag zunächst etwas theoretisch klingen, ist aber durchaus von praktischer Relevanz, wenn es darum geht, die essentiellen Kundenanforderungen zu hinterfragen.

Nehmen wir ein Beispiel: Die Bezahlung mit einer Check-Karte an der Supermarktkasse. Haben Sie sich je gefragt, warum eine so sensible Transaktion gelegentlich doch fehlschlägt? Das CAP-Theorem liefert darauf die Antwort. Im Finanzwesen ist Datenkonsistenz, auch im Störungsfall, absolut unverzichtbar. Daher handelt es sich um ein „CP“ System (Consistency + Partition tolerance). Es ist sehr viel besser, wenn das System nicht verfügbar ist, als dass inkorrekte Buchungen vorgenommen werden.

Unser Ansatz

Bei der Entwicklung von verteilten Systemen haben wir gute Erfahrungen mit der Programmiersprache Elixir gemacht. Elixir basiert auf BEAM, einer virtuellen Maschine, die auch von Erlang verwendet wird und die speziell entwickelt wurde, um verteilte Systeme zu realisieren.

Ein zentrales Konzept dabei ist der Prozess, im Sinne einer Programminstanz zur Laufzeit. Prozesse können in einer redundanten Weise über einen Cluster von Rechnern verteilt werden und Elixir bzw. Erlang unterstützt den Entwickler in vielen Aspekten der parallelen Programmierung. So wird jeder Prozess überwacht und falls er unerwartet terminiert wird, wird eine Aktion ausgelöst, die der Programmierer nutzen kann, um geeignete Massnahmen zu implementieren. Auch ein Mechanismus, der die erfolgreiche und korrekte Verteilung von Daten im Cluster verifiziert, steht zur Verfügung.

Ihr Ansprechpartner
Alexander Balsam
Geschäftsführer
  +49 241 980191 0
  vertrieb@nedeco.de