Veröffentlicht am 20-03-2019

Viele Knoten, ein verteiltes System

Viele Knoten, ein verteiltes System.

Sie sagen, dass kein Mann (oder keine Frau oder Person) wirklich eine Insel ist; Heutzutage könnten wir wirklich "Computer" zur Liste hinzufügen. Wir sind umgeben von Maschinen, Computern und Datenbanken, die miteinander sprechen. Tatsächlich sind die meisten Anwendungen und Dienste, mit denen wir täglich interagieren (und diese erstellen), tatsächlich eine Reihe von Datenelementen, die miteinander sprechen, auch wenn wir es vielleicht nicht wissen.

Das Studium dieser Systeme und ihre Funktionsweise sind Teil der Welt des verteilten Rechnens, in dessen Mittelpunkt die Untersuchung verteilter Systeme steht. In gewisser Weise sind verteilte Systeme eine Fortsetzung oder Erweiterung aus dem Bereich der Informatik - häufig geht es um das Lösen von Problemen, das Aufteilen von Aufgaben in diskrete Aufgaben und das Herausfinden, wie Daten behandelt, gespeichert und verarbeitet werden.

Auf andere Weise sind verteilte Systeme überhaupt nichts mit Informatik. Das verteilte Rechnen erfordert fast, dass wir unsere Annahmen, wie Maschinen aus dem Fenster gehen, werfen. Im Umgang mit einem einzelnen Computer können wir sogar Dinge als einfach empfinden. Aber was ist, wenn mehrere Computer beteiligt sind?

Nun, das ist eine ganz andere Geschichte.

Bevor es viele gab, gab es einen

Um zu verstehen, was genau ein verteiltes System ausmacht, müssen wir zuerst verstehen, was kein verteiltes System ist. Um es klar zu sagen, gibt es sicherlich einige Meinungsverschiedenheiten, wenn es darum geht zu definieren, was genau das Gegenteil eines verteilten Systems ist. Theoretisch könnte man das Gegenteil eines verteilten Systems auf verschiedene Arten definieren, da die Definition eines verteilten Systems in gewisser Weise von den Komponenten des Systems abhängt. Aber dazu mehr.

Wir können uns ein nicht verteiltes System als ein „einzelnes“ System vorstellen. Ein einzelnes System, das nicht mit anderen kommuniziert und eigenständig funktioniert, ist kein verteiltes System.

Was ist KEIN verteiltes System?

Ein einzelner Prozess auf unserem Computer ist ein einzelnes System, das für sich alleine arbeitet. Wenn ein Prozess nicht mit anderen Prozessen kommuniziert, ist er von Haus aus nicht Teil eines größeren Systems. Wir könnten uns auch vorstellen, dass unsere Maschine, getrennt vom Internet, als „einziges“ System betrachtet wird - obwohl es Untersuchungen gegeben hat, die etwas anderes behaupten (wie dieses Papier von 2009).

Das Wort verteilen bedeutet, etwas in einem Raum zu zerstreuen, zu zerstreuen oder zu verbreiten. Wenn wir die Definition dieses Wortes und die Funktionsweise eines einzelnen Systems betrachten, wird deutlich, dass ein einzelnes System allein kein verteiltes System ist. Es gibt nur eine Maschine, die für sich alleine arbeitet, also kann diese einzelne Maschine offensichtlich nicht verstreut sein!

Was ist dann eigentlich ein verteiltes System? Wenn wir darüber nachdenken, wie Maschinen in der realen Welt wirklich miteinander interagieren, erkennen wir, dass die meisten Computer tatsächlich in einem verteilten System existieren. Computer werden selten im Zusammenhang mit sich selbst verwendet. Wir verwenden sie fast immer, um mit einer Anwendung oder einem Dienst zu interagieren.

Wenn Sie schon einmal online ein Multiplayer-Spiel gespielt haben, einen Flug gebucht, ein Katzen-Gif für ein Twitter getwittert haben, eine Netflix-Show gestreamt haben oder bei Amazon einen Onesie gekauft haben, haben Sie sich auf ein verteiltes System verlassen.

Wahrscheinlich interagieren Sie wahrscheinlich täglich mit dem größten verteilten System: dem Internet! Bei verteilten Systemen handelt es sich jedoch nicht In der Tat ist die Größe von ihnen nicht einmal das, was sie verteilt.

Verteiltes System: eine Definition.

Ein verteiltes System ist nichts anderes als mehrere Entitäten, die auf irgendeine Weise miteinander kommunizieren und gleichzeitig ihre eigenen Operationen ausführen. Ein solches System kann so einfach sein wie ein intelligenter Sensor oder ein drahtloser Stecker in Ihrem Haus, der Daten über ein WLAN-Netzwerk erfasst und sendet oder auch nur eine drahtlose Tastatur oder Maus, die an Ihren Laptop angeschlossen werden kann.

Solange alle Prozesse in einem System sowohl autonom sind oder eigene Operationen ausführen können, als auch mit anderen Prozessen im System kommunizieren können, können wir das System als verteilt klassifizieren.

Knoten, die zusammenhalten

Nun, da wir uns ein bisschen mit dem verteilten System auskennen, wollen wir uns die Hauptfiguren genauer ansehen, nämlich die "Entitäten" innerhalb des Systems!

Möglicherweise haben Sie bemerkt, dass ich die Komponenten eines verteilten Systems als „Computer“, „Prozess“ und sogar nur als „Maschine“ bezeichnet habe. Der genaue Begriff, den wir zur Beschreibung der Teile eines verteilten Systems verwenden, hängt wirklich davon ab, wie das System selbst aussieht und um welche Art von System es sich handelt. Wenn es sich bei dem System um eine Reihe verteilter Server handelt, könnten die Komponenten möglicherweise als "Server" bezeichnet werden. Wenn das System Prozesse umfasst, die miteinander sprechen, dann sind die Entitäten vielleicht nur „Prozesse“.

Um die Diskrepanz in der Terminologie hier zu bekämpfen, können wir insgesamt einen anderen, allgemeineren Begriff verwenden. Wir können auf die einzelnen Entitäten in einem verteilten System als Knoten des Systems verweisen.

Knoten in einem verteilten System: eine Definition.

Wenn der Begriff "Knoten" sich vertraut anfühlt (und an die Graphentheorie erinnert), dann ist Ihr Instinkt richtig - hier besteht tatsächlich ein Zusammenhang! Und wenn wir an ein verteiltes System denken, das ein Netzwerk von Rechenelementen ist (was genau sie sind), dann können wir dieses Netzwerk als eine Grafik darstellen, die aus miteinander verbundenen Knoten besteht.

Da wir wissen, dass ein verteiltes System in großem oder kleinem Maßstab funktionieren kann, können wir auch davon ausgehen, dass die tatsächlichen Knoten selbst unterschiedliche Natur haben können. Ein Knoten kann ein Hardwaregerät (wie ein Sensor) oder ein Softwareprozess (ein Client oder ein Server) sein. Die Knoten selbst müssen sich auch nicht am selben Ort befinden - daher die "Verteilung" des Systems - und könnten sehr wahrscheinlich durch große Entfernungen physisch getrennt sein.

Eine neue Art, Knoten zu kennen

Obwohl die Knoten in einem verteilten System den Knoten in einem Graphen so ähnlich sind, gibt es bei den Knoten in einem verteilten System einige Aspekte, die die Sache etwas komplizierter machen. Es gibt einige Annahmen, die wir beim Umgang mit einem einzelnen System treffen, die sich als falsch erweisen, wenn es sich um ein verteiltes System handelt. Und wenn es um verteiltes Rechnen geht, haben fast alle Hindernisse, die auf unseren Weg kommen, mit einer Sache zu tun: Kommunikation zwischen Knoten.

Operationen in einem Knoten vs. Kommunikation zwischen Knoten.

Da die Knoten in einem verteilten System per Definition autonom sind, können sie ihre eigenen Operationen ausführen. Die Operationen, die innerhalb eines Knotens stattfinden (werden vom Knoten selbst ausgeführt), müssen nicht auf externe Informationen angewiesen sein. Mit anderen Worten, ein Knoten kann seine eigenen Operationen ausführen, ohne mit anderen Knoten im verteilten System kommunizieren zu müssen. Dies bedeutet, dass der Knoten seine eigenen Vorgänge ohne Hilfe eines Benutzers ausführen kann und diese schnell ausführen kann.

Operationen innerhalb eines Knotens sind schnell. Dasselbe kann jedoch nicht für die Kommunikation zwischen Knoten gesagt werden.

Wie wir jetzt wissen, könnten sich die Knoten eines Systems an verschiedenen Orten befinden und sind auf das verteilte System und sein Netzwerk angewiesen, um all das hin und her zu plaudern. Während die Ausführung von Aufgaben in einem Knoten möglicherweise schnell ist, kann die Kommunikation zwischen zwei Knoten nicht garantiert werden. Tatsächlich ist die Kommunikation zwischen zwei Knoten oft ziemlich langsam (ganz zu schweigen von der Unzuverlässigkeit!), Was eines der größten Probleme beim verteilten Rechnen ist.

Die Operationen eines Knotens werden in der Reihenfolge ausgeführt.

Operationen innerhalb eines einzelnen Knotens erfolgen nicht nur schnell, sondern auch in der richtigen Reihenfolge. Dies mag uns als offensichtliche Tatsache erscheinen, da natürlich die Ereignisse in der richtigen Reihenfolge ablaufen, oder? Nun, wenn es um verteilte Systeme geht, lautet die Antwort… nicht immer.

Auch wenn die Operationen innerhalb eines Knotens in der Reihenfolge ablaufen, in dem Moment, in dem mehrere Knoten in einem verteilten System zusammenarbeiten müssen, können die Dinge etwas unordentlich werden. Sobald wir von einem einzelnen System / einem einzelnen Knoten zu einem verteilten System / mehreren Knoten übergehen, können die Operationen über eine Gruppe von Knoten in einer falschen Reihenfolge gerendert werden.

Ein Grund für die Reihenfolge der Operationen innerhalb eines Knotens liegt zum Teil darin, dass jeder Knoten innerhalb eines Systems gemäß seiner eigenen Uhr arbeitet.

Knoten arbeiten nach ihren eigenen Uhren.

Wenn wir über die verschiedenen Dinge nachdenken, die ein Knoten in einem verteilten System sein könnten - ein Sensor, ein Prozess, ein Server oder eine Datenbank -, wird dies deutlich. Wir können jedoch auch raten, wie dies in einem verteilten System möglicherweise problematisch wird: Was wäre, wenn die Uhren in zwei separaten Knoten in einem System nicht genau übereinstimmen? Dies ist ein weiteres schwieriges Problem (auf das wir später in dieser Serie eingehen werden!), Wenn es um verteiltes Computing geht.

Alle Dinge, die wir kennen und lieben, wenn es um den Umgang mit einzelnen Knoten geht, erscheinen ungewohnt und weniger liebenswert, wenn wir viele Knoten in den Mix werfen. Aber es macht Spaß, etwas Neues zu lernen - etwa verteilte Systeme! Wir werden unsere Perspektive und die Art und Weise, wie wir über Systeme denken, wie sie als Ganzes zusammenarbeiten, und die verschiedenen Aspekte, mit denen sie ihre Arbeit effektiv erledigen können, ändern müssen.

Es scheint ein guter Weg, um eine brandneue Serie zu beginnen, wenn Sie mich fragen.

Ressourcen

Es gibt viel zu lernen über verteilte Systeme und viele Startplätze! Im Folgenden finden Sie einige einführende Ressourcen, mit denen Sie Ihr Wissen darüber, was ein verteiltes System ausmacht, und die Entitäten, aus denen es besteht, festigen.

  1. Eine kurze Einführung in verteilte Systeme, Maarten van Steen und Andrew S. Tanenbaum
    1. Vom Laien zum Supermann: verteilte Systeme eine Einführung, Median Rawashdeh
    2. Einführung in verteilte Systeme (DS), Professor Frank Eliassen
    3. Quelle: Mittel

Siehe auch

Die Zukunft des Handels mit VolentixWerden Digitalbits besser als der derzeitige KonkurrentWas ist bei der Auswahl eines Laptops für Ihr Unternehmen zu beachten?Details zum Join HpoolSet-Top-Box-Markt mit Prognosezeitraum 2019–2025 | Hauptakteure: ARRIS…Was ist die Volentix-Strategie für ihren Wettbewerb?