Das Modell für verteilte Systeme
Traditionell bedeutete es, ein monolithisches System auf mehreren Computern auszuführen, dass das System in separate Client- und Serverkomponenten aufgeteilt werden musste. In solchen Systemen behandelte die Clientkomponente die Benutzeroberfläche, während der Server die Back-End-Verarbeitung bereitstellte, wie zum Beispiel Datenbankzugriff, Drucken usw. Da Computer in großer Anzahl vorkamen, im Preis sanken und durch immer leistungsfähigere Netzwerke verbunden wurden, wurde das Aufteilen von Softwaresystemen in mehrere Komponenten einfacher, wobei jede Komponente auf einem anderen Computer ausgeführt wurde und eine spezielle Funktion erfüllte. Dieser Ansatz hat die Entwicklung, Verwaltung, Administration und oft auch die Leistung und Robustheit vereinfacht, da ein Fehler in einem Computer nicht unbedingt das gesamte System deaktivierte.
In vielen Fällen erscheint das System dem Client als 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 Intransparenz der Cloud wird beibehalten, da Rechenoperationen im Auftrag des Clients ausgeführt werden. Daher können Clients einen Computer (einen Knoten) in der Cloud suchen und einen bestimmten Vorgang anfordern; bei der Ausführung des Vorgangs kann dieser Computer Funktionen auf anderen Computern in der Cloud aufrufen, ohne die zusätzlichen Schritte oder den Computer verfügbar zu machen, auf dem sie ausgeführt wurden, für den Client.
Mit diesem Paradigma kann die Mechanik eines verteilten, cloudähnlichen Systems in viele einzelne Paketaustausche oder Unterhaltungen zwischen einzelnen Knoten unterteilt werden.
Herkömmliche Clientserversysteme verfügen über zwei Knoten mit festen Rollen und Zuständigkeiten. Moderne verteilte Systeme können mehr als zwei Knoten aufweisen, 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 Verbraucher der verfügbar gemachten Funktionalität ein Client mit einem Benutzer, der 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 zu beachten, dass ein Aufrufer (oder Initiator, wobei beide oft als Client bezeichnet werden) vorhanden ist. Es gibt auch den Empfänger des Anrufs (häufig als Server bezeichnet). Es ist nicht notwendig, zweiwegigen Paketaustausch im Anforderungsantwortformat eines verteilten Systems zu haben; Nachrichten werden häufig nur auf eine Weise gesendet.