Es gibt mehrere Definitionen von Verteilten Systemen, jeweils von verschiedenen Autoren aufgestellt und teilweise widersprüchlich. Eine eingängige und einfache Definition ist die folgende:
Ein Verteiltes System ist ein Zusammenschluss unabhängiger Computer, welcher sich für den Benutzer als ein einzelnes System präsentiert.
Meist unterscheidet man in
- Client-Server System: Viele Clients greifen auf einen Server zu.
- Verteilte Anwendung: Durch die Programmierung der Anwendung wird das verteilte System erstellt.
- Verteiltes Betriebssystem: Das Betriebssystem selbst ist verteilt, für Benutzer und Anwendungen ist dies nicht sichtbar.
Idealerweise bekommt der Benutzer eines solchen Systemes die Art und Weise, wie das System Verteilt ist, gar nicht mit. Für den Benutzer ist das System transparent als ein Gesamtsystem zu erkennen. Bei dieser Transparenz unterscheidet man in:
- Ortstransparenz: Der Ort, an dem sich ein Dienst oder eine Ressource befindet ist dem Benutzer nicht bekannt. Der Zugriff erfolgt über einen bestimmten Namen, der allerdings keine Ortsinformationen enthält.
- Zugriffstransparenz: Der Zugriff auf einen Dienst oder eine Ressorce erfolgt immer auf die gleiche Art und Weise, gleich ob diese sich lokal oder entfernt im Netz befindet.
- Nebenläufigkeitstransparenz: Es ist mehreren Benutzer möglich, gleichzeitig auf die Dienste und Ressourcen zuzugreifen. Das System sorgt dafür, dass exklusive Zugriffe möglich sind, und Daten eventuell Synchronisiert bzw. Repliziert werden.
- Skalierungstransparenz: Das System soll flexibel bei der Erweiterung oder dem Austausch von Komponenten sein. Eine Systempflege oder Erweiterung soll ohne Ausfall möglich sein.
- Migrationstransparenz: Das Verschieben von Komponenten auf ein anderes System soll für den Benutzer unbemerkt geschehen. Idealerweise sogt das System selbst für die Verschiebung von Prozessen auf weniger ausgelastete Knoten. Der Name einer Komponente darf sich dabei nicht ändern.
- Leistungstransparenz: Den Benutzern steht die volle Leistung des Gesamtsystems zur Verfügung. Das System sorgt selbst dafür, dass die Aufgaben auf den verschiedenen Knoten optimal verteilt werden.
- Replikationstransparenz: Aus Performancegründen kann es mehrere Kopieen derselben Ressource geben. Das System sorgt für die transparente Replikation der darin vorgenommenen Änderungen.
- Fehler- und Ausfalltransparenz: Beim Ausfall eines Systems oder einer Netzwerkverbindung sollte der Anwender, wenn auch mit verminderter Leistung, weiterarbeiten können.
Siehe auch: CORBA, RPC, RMI, SOAP, Peer-to-Peer, Grid-Computing