Ein verteiltes System ist im Prinzip der Zusammenschluss mehrerer Rechner zur Lösung einer gemeinsamen Aufgabe. Eines der größten verteilten Systeme ist das Internet mit seinen Applikationen. Teil 1 gibt uns eine allgemeine Einleitung in verteilte Systeme.
| Skript-Anfang | VS_1_So2014 – Seite 1 |
|---|---|
| Skript-Ende | VS_6_So2014 – Seite 70 |
Einleitung
Definition
Was sind verteilte Systeme?
- Ansammlung unabhängiger Computer
- System erscheint den Benutzern kohärent
- Kohärenz ist der Zusammenhang des Gesamtsystems
- Verteilung ist unsichtbar für Benutzer (Verteilungstransparenz)
- Multicore Rechner sind keine verteilte Systeme (wegen fehlender Unabhängigkeit)
Qualitätsmerkmale
Wie sollte ein gutes verteiltes System aussehen?
- Verteilungstransparenz
- Offenheit
- Skalierbarkeit
- Zuverlässigkeit
- Zugriff auf Ressourcen
Was ist Verteilungstransparenz?
| Art | Transparenz |
|---|---|
| Zugriff | Zugriff auf lokale und entfernte Ressourcen mit gleichen Mechanismen |
| Ort | Anzahl und Position der Teile |
| Migration | Verschiebung einer Ressource |
| Relokation | Verschiebung einer Ressource während der Nutzung |
| Nebenläufigkeit | Gleichzeitiger Zugriff mehrerer Nutzer |
| Fehler | Ausfall und Wiederherstellung einer Ressource |
Welche der Transparenzen kann man realistischerweise implementieren?
- Zugriff
- Ort
- Nebenläufigkeit
- Migration
- Fehlertoleranz
Was ist Offenheit?
- Schnittstellen sind offen und unabhängig vom Betriebssystem
- Kommunikation zwischen unterschiedlichen Systemen (HW und SW)
- Austausch von Komponenten ist möglich (Portabilität)
- Zusätzliche Komponenten können einfach integriert werden (Erweiterbarkeit)
- Umsetzung mittels Schnittstellenbeschreibungssprachen (IDL)
Was ist Skalierbarkeit?
- Verteiltes System soll einfach erweiterbar sein
- Erweiterung bei zusätzlicher Rechenlast, Nutzern oder Aufgaben
- Zugriffe müssen dabei noch sinnvoll verteilt werden
- Unterteilung in Zonen (DNS)
Wie kann man die Skalierbarkeit verbessern?
- Kluge Auslagerung von Teilaufgaben an andere Systeme (Client)
- Daten am Stück übertragen statt in kleinen Teilen
Was ist Zuverlässigkeit?
- Das System sollte immer zur Verfügung stehen
- Verteilung und Redundanz kompensiert Ausfälle (Fehlertoleranz)
- Es gibt keine single points of failure
Was ist Zugriff auf Ressourcen?
- Das System sollte den Zugriff auf benötigte Ressource einfach machen
Welche Probleme gibt es bei verteilten Systemen?
- Ad-hoc Netzwerke
- Sich ständig ändernde Topologien
- Datenschutz
Welche Herausforderungen gibt es in verteilten Systemen?
| Eigenschaft | Beschreibung |
|---|---|
| Skalierbarkeit | Leistung steigt linear proportional durch das Hinzufügen von weiteren Knoten, Rechnern und Ressourcen an |
| Replikation | Mehrfache Speicherung derselben Daten an verschiedenen Standorten (Ohne Replikation ist Konsistenz einfach) |
| Konsistenz | Verteilte Daten sind auf allen Systemen aktuell (Datenbanken) |
| Synchronisation | Vorgänge laufen gleichzeitig (synchron) oder in der korrekten Reihenfolge ab (Einstellung via NTP) |
| Fehlertoleranz | System fällt nicht aus, auch wenn ein Fehler oder unvorhergesehenes Ereignis eintritt |
| Namensdienst | Adressierung von Komponenten im Netz (Kann von Replikation und Fehlern beeinflusst werden) |
Beispiele
Was sind Beispiele für verteilte Systeme?
| Typ | Beispiel |
|---|---|
| Cloud-Dienste | Facebook, Twitter und Google |
| Client- und Server-Architekturen | E-Mail und WWW |
| Multicore CPUs | Gehört nicht zur Definition |
| Grid-Computing | Wissenschaftliches Rechnen auf weltweit verteilten (Groß-)Rechnern |
| Internet der Dinge | Mehrere eingebettete verteilte Systeme interagieren miteinander |
| Automobile | Austausch von aktuellen Sensor- und Verkehrsdaten |
| Banken | Kassen, Geldautomaten, Homebanking, Kontoauszug und Konto |
| Voice-over-IP | Clients und Gateways |
| Cloud-Computing | Kommerzielle Vermietung der Rechenleistung von einzelnen Rechnern via Middleware |
Warum werden Cloud-Dienste in aller Regel von verteilten Systemen bereitgestellt?
- Latenz (Globaler Zugriff)
- Skalierbarkeit (Starkes Wachstum)
- Zuverlässigkeit (Jederzeit Zugriff)
Welche Komponenten interagieren in einem Cloud-Dienst wie Google?
- Rechenzentren mit tausenden einzelnen Servern
- Stellt Dienste wie Webserver, Loadbalancer, Indexserver, Dokumentenserver und Spellchecker bereit
- Alle Dienste sind über einen zentralen Zugang (www.google.de) erreichbar
- Den Anwendern gegenüber bleibt die komplexe verteilte Architektur gegenüber verborgen
Architekturen
Welche Architekturen gibt es?
- Hardware
- Software
- System
Was ist eine Hardware-Architektur?
- Einzelne Rechner mit mehreren CPUs werden zu einem Cluster-Rechner hinzugefügt
- Die Komponenten im Cluster sind über das Netzwerk verbunden
- Die Dienste und Aufgaben werden auf die einzelnen Rechner (Rechen-Knoten) verteilt
- Systeme werden über die Laufzeit durch Erweiterungen heterogener
- Der Master-Knoten kontrolliert die Rechenknoten
Was ist eine Software-Architektur?
- Zusammenschluss von Rechnern zu einem gemeinsamen System
- Heterogenität wird durch Middleware verborgen
- Middleware ist eigentlich kein Betriebssystem (Arbeitet in der Schicht darüber)
- Eine einheitliche Schnittstelle verbirgt die Verteilung (Transparenz)
Welche Systemarchitekturen gibt es?
- Geschichtet
- Objektbasiert (service oriented)
- Ereignisbasiert (event driven)
- Datenzentiert (data centric)
Was sind geschichtete Systemarchitekturen?
- Unterteilung der Aufgaben in Schichten
- Jede Schicht kann auf einem anderen System liegen
- Client-Server-Architekturen (1 Client und 1 Server)
- Multitier-Architekturen (1 Client und n Server)
- Bei Multitier-Architekturen wird in Darstellung, Verarbeitung und Daten-Schicht unterteilt

Was sind objektbasierte Systemarchitekturen?
- Objekte besitzen klar definierte Schnittstellen und Aufgaben
- Objekte greifen auf ihre Methoden zu um diese Aufgaben zu erledigen
- Position der Objekte wird durch Namensdienste bekannt gegeben
Was sind ereignisbasierte Systemarchitekturen?
- Komponenten greifen auf einen Bus zu, der Ereignisse an die anderen Komponenten ausliefert
- Vorheriges Abonnieren der Ereignisse notwendig

Was sind datenzentrierte Systemarchitekturen?
- Daten liegen ausschließlich im zentralem Speicherraum
- Daten werden hier hin veröffentlicht
- Daten werden von hier angefordert

Realität
Welche Fehleinschätzungen werden häufig gemacht?
- Netzwerke sind unsicher, nicht zuverlässig und nicht immer verfügbar (Firewalls, Paketverlust, Defekte, etc.)
- Nachrichten brauchen Zeit um den Empfänger zu erreichen (Latenz)
- Reihenfolge von Nachrichten wird im Netzwerk vertauscht
- Es gibt keine gemeinsame Zeit (Zeit ist nicht synchronisiert)
- Komponenten können ausfallen
- Bandbreite und Rechenleistung ist begrenzt