Grundlagen und Architekturmodelle Verteilter Systeme
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 12,94 KB
Verteilte Systeme: Definition
Ein verteiltes System ist ein System aus Hard- und Software-Elementen, die über Nachrichten miteinander kommunizieren. Die Kommunikation erfolgt mithilfe von Übertragungstechniken über ein lokales oder entferntes (remote) Netzwerk.
Verteilte Anwendungen
Eine verteilte Anwendung ist eine Softwarekomponente, die auf verschiedenen Computern und sogar unterschiedlichen Architekturen läuft. Sie stellt die notwendigen Schnittstellen bereit, damit der Benutzer mit einem bestimmten System interagieren kann.
Schlüsselmerkmale Verteilter Systeme
Die wichtigsten Eigenschaften sind:
- Heterogenität
- Erweiterbarkeit
- Sicherheit
- Skalierbarkeit
- Behandlung von Störungen (Fehlertoleranz)
- Wettbewerb (Nebenläufigkeit)
- Transparenz
Heterogenität
Die Heterogenität beschreibt die Vielfalt der Komponenten (Hardware, Software und Kommunikation), die in einem verteilten System realisiert werden können. Sie gilt für:
- Netzwerke
- Computer-Hardware
- Betriebssysteme
- Programmiersprachen
- Implementierungen verschiedener Entwickler
Erweiterbarkeit
Die Erweiterbarkeit bestimmt, ob das verteilte System auf verschiedene Weise erweitert werden kann. Das System kann in Bezug auf Hard- oder Software-Erweiterungen als offen oder geschlossen betrachtet werden.
Sicherheit
Die Sicherheit trägt die Gesamtverantwortung für den Schutz von Daten und Ressourcen. Sie ist in drei Hauptkomponenten unterteilt:
- Vertraulichkeit: Schutz vor unbefugtem Zugriff.
- Integrität: Schutz vor Veränderung oder Korruption der Daten.
- Verfügbarkeit: Schutz gegen Störungen, die den Zugriff auf Ressourcen verhindern.
Skalierbarkeit
Die Skalierbarkeit beschreibt die Wirksamkeit oder Performance eines verteilten Systems bei einer Erhöhung der Anzahl von Ressourcen und/oder der Anzahl der Benutzer. Sie beugt dem Überlaufen von Software-Ressourcen vor.
Behandlung von Störungen (Fehlertoleranz)
Dies bezieht sich auf verschiedene Techniken, Algorithmen und Verfahren zur Erkennung und Verhinderung von Ausfällen. Einige dieser Behandlungsansätze sind:
- Fehlererkennung (z. B. Prüfsummen)
- Maskierung von Ausfällen (z. B. Broadcast)
- Fehlertoleranz (z. B. fehlertolerante Benutzer)
- Failover (z. B. Rollback)
- Redundanz (z. B. redundante Komponenten)
Wettbewerb (Nebenläufigkeit)
Dies bezieht sich auf die Möglichkeit des gleichzeitigen oder häufigen Zugriffs auf die Dienste, die von einem verteilten System angeboten werden.
Transparenz
Transparenz konzentriert sich darauf, den Betrieb der Komponenten eines verteilten Systems zu verbergen und dem Benutzer den Zugriff zu erleichtern, ohne die Details der internen Funktionen offenzulegen. Arten der Transparenz:
- Zugriffstransparenz
- Standorttransparenz (Lage)
- Nebenläufigkeitstransparenz (Parallelität)
- Replikationstransparenz
- Ausfalltransparenz (vor Ausfällen)
- Mobilitätstransparenz
- Leistungstransparenz (Performance)
Architekturmodelle Verteilter Systeme
Die wichtigsten Architekturmodelle sind:
- Softwareschichten (Software Layers)
- Systemarchitekturen
- Schnittstellen und Objekte
Definition Architekturmodelle
Architekturmodelle beziehen sich auf die Verteilung oder Platzierung der Elemente und die Beziehungen zwischen den Komponenten selbst.
Softwareschichten (Software Layers)
Dies bezieht sich auf die Strukturierung der Software als Schichten auf einem einzigen Computer.
Ebenen (Tiers)
Ebenen sind ein oder mehrere Prozesse, die sich auf denselben oder verschiedenen Computern befinden. Sie bieten Dienste an und fordern diese an.
Plattform
Die Plattform ist die unterste Schicht. Sie bietet Dienste für die oberen Schichten an, wobei ihre Implementierung vom jeweiligen Computer abhängt.
Middleware
Middleware ist eine Softwareschicht, deren Zweck es ist, die Heterogenität zu maskieren und ein komfortables Programmiermodell für Anwendungsprogrammierer bereitzustellen.
Systemarchitekturen
Client-Server
Der Server kann sich auf demselben Computer wie der Client befinden oder auch nicht. Sowohl der Server als auch der Client können gleichzeitig aktiv sein.
Dienste von mehreren Servern
Server können die Menge der servicebasierten Objekte teilen und untereinander verteilen.
Proxy-Server und Cache
Ein Cache ist ein Repository von Datenobjekten, die kürzlich verwendet wurden.
Peer-to-Peer (P2P)
Alle Prozesse führen ähnliche Aufgaben aus und interagieren kooperativ als Gleichberechtigte, um eine Aktivität oder ein verteiltes Computing ohne Unterscheidung zwischen Clients und Servern durchzuführen.
Prozessschnittstelle (Process Interface)
Die Prozessschnittstelle ist die Spezifikation der Menge von Funktionen, die auf sie aufgerufen werden können.
- In objektorientierten Sprachen kann die verteilte Verarbeitung objektorientiert konstruiert werden. Referenzen auf diese Objekte werden an andere Prozesse übergeben, die ihre Methoden aus der Ferne aufrufen können.
- Dies ist der Ansatz, der von CORBA und Java RMI verfolgt wird.
Weitere Architekturmodelle
- Mobile Code: Der wesentliche Anwendungscode wird als Agenten bezeichnet.
- Mobile Agenten: Ein Programm, das sich über das Netzwerk von einem Computer zum anderen bewegt und dort eine Aufgabe ausführt.
- Computer-Netzwerke (Grid/Cloud): Notwendige Anwendungssoftware wird von einem Remote-Server heruntergeladen.
- Thin Clients: Der Client führt nur die Windows-basierte Oberfläche aus, während die Anwendung auf einem Remote-Server läuft, der oft sehr leistungsfähig ist (z. B. Multiprozessor-Cluster).
Anforderungen an die Architektur Verteilter Systeme
Performance (Leistung)
- Reaktionsfähigkeit: Um gute Antwortzeiten zu erzielen, müssen die Systeme aus wenigen Softwareschichten bestehen und die Menge der übertragenen Daten muss gering sein.
- Produktivität: Arbeit pro Zeiteinheit.
- Lastverteilung (Load Balancing): Mehrere Server oder Computer hosten einen einzigen Dienst (z. B. über Applets).
Quality of Service (QoS)
- QoS ist die Fähigkeit von Systemen, definierte Leistungsgrenzen zu erfüllen.
- Die Erfüllung dieser Anforderungen hängt von der Verfügbarkeit der Ressourcen zum richtigen Zeitpunkt ab.
Aspekte der Zuverlässigkeit (Korrekte Funktionalität)
- Richtigkeit
- Fehlertoleranz
- Sicherheit:
- Vertraulichkeit
- Integrität
- Verfügbarkeit
Fehlertoleranz
Stabile Anwendungen sollten auch bei Störungen der Hardware, Software und Netzwerke weiterhin ordnungsgemäß funktionieren.
- Dies wird durch Redundanz erreicht.
- Für eine zuverlässige Kommunikation werden spezielle Protokolle und Techniken verwendet.
Sicherheit
- Es muss sichergestellt werden, dass sensible Daten und andere Ressourcen nur auf Computern gespeichert werden, die effizient gegen Angriffe geschützt sind.
Fundamentale Modelle
Interaktionsmodell
Das Interaktionsmodell befasst sich mit der Leistung und der Schwierigkeit, Fristen in einem verteilten System einzuhalten.
Fehlermodell
Das Fehlermodell versucht, eine genaue Spezifikation der Ausfälle zu geben, die in Prozessen und Kommunikationskanälen auftreten können.
Sicherheitsmodell
Das Sicherheitsmodell beschreibt potenzielle Bedrohungen für Prozesse und Kommunikationskanäle.