Das Modell für verteilte Systeme
In der Regel bedeutete die Ausführung eines monolithischen Systems über mehrere Computer hinweg, das System in separate Client- und Serverkomponenten aufzuteilen. In solchen Systemen verarbeitete die Clientkomponente die Benutzeroberfläche und der Server bereitgestellte Back-End-Verarbeitung, z. B. Datenbankzugriff, Drucken usw. Da Computer sich vermehrten, die Kosten sanken und durch immer höhere Bandbreitennetzwerke verbunden wurden, wurde das Aufteilen von Softwaresystemen in mehrere Komponenten bequemer, wobei jede Komponente auf einem anderen Computer ausgeführt wurde und eine spezielle Funktion ausführte. Dieser Ansatz vereinfachte Entwicklung, Verwaltung, Verwaltung und verbesserte häufig die Leistung und Robustheit, da ein Ausfall auf einem Computer nicht unbedingt das gesamte System deaktivierte.
In vielen Fällen erscheint das System für den Client als eine undurchsichtige Cloud, die die erforderlichen Vorgänge ausführt, auch wenn das verteilte System aus einzelnen Knoten besteht, wie in der folgenden Abbildung dargestellt.
Die Deckkraft der Cloud wird beibehalten, da Rechenvorgänge im Auftrag des Clients aufgerufen werden. Daher können Clients einen Computer (einen Knoten) in der Cloud suchen und einen bestimmten Vorgang anfordern. beim Ausführen des Vorgangs kann dieser Computer Funktionen auf anderen Computern in der Cloud aufrufen, ohne die zusätzlichen Schritte oder den Computer, auf dem sie ausgeführt wurden, für den Client verfügbar zu machen.
Mit diesem Paradigma kann die Mechanik eines verteilten, cloudähnlichen Systems in viele einzelne Paketaustausche oder Unterhaltungen zwischen einzelnen Knoten unterteilt werden.
Herkömmliche Client-Server-Systeme verfügen über zwei Knoten mit festen Rollen und Verantwortlichkeiten. Modern verteilte Systeme können über mehr als zwei Knoten verfügen, und ihre Rollen sind häufig dynamisch. In einer Unterhaltung kann ein Knoten ein Client sein, während in einer anderen Unterhaltung der Knoten der Server sein kann. In vielen Fällen ist der ultimative Consumer der verfügbar gemachten Funktionalität ein Client, bei dem ein Benutzer an einer Tastatur sitzt und die Ausgabe überwacht. In anderen Fällen funktioniert das verteilte System unbeaufsichtigt und führt Hintergrundvorgänge aus.
Das verteilte System verfügt möglicherweise nicht über dedizierte Clients und Server für jeden bestimmten Paketaustausch, aber es ist wichtig, daran zu denken, dass ein Aufrufer (oder Initiator, von dem einer der beiden häufig als Client bezeichnet wird) vorhanden ist. Es gibt auch den Empfänger des Anrufs (häufig als Server bezeichnet). Es ist nicht erforderlich, einen bidirektionalen Paketaustausch im Anforderungs-Antwort-Format eines verteilten Systems zu haben. Nachrichten werden häufig nur in einer Richtung gesendet.