Menu Close

Verteilte Systeme (Teil 1)

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-AnfangVS_1_So2014 – Seite 1
Skript-EndeVS_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?

ArtTransparenz
ZugriffZugriff auf lokale und entfernte Ressourcen mit gleichen Mechanismen
OrtAnzahl und Position der Teile
MigrationVerschiebung einer Ressource
RelokationVerschiebung einer Ressource während der Nutzung
NebenläufigkeitGleichzeitiger Zugriff mehrerer Nutzer
FehlerAusfall 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?

EigenschaftBeschreibung
SkalierbarkeitLeistung steigt linear proportional durch das Hinzufügen von weiteren Knoten, Rechnern und Ressourcen an
ReplikationMehrfache Speicherung derselben Daten an verschiedenen Standorten (Ohne Replikation ist Konsistenz einfach)
KonsistenzVerteilte Daten sind auf allen Systemen aktuell (Datenbanken)
SynchronisationVorgänge laufen gleichzeitig (synchron) oder in der korrekten Reihenfolge ab (Einstellung via NTP)
FehlertoleranzSystem fällt nicht aus, auch wenn ein Fehler oder unvorhergesehenes Ereignis eintritt
NamensdienstAdressierung von Komponenten im Netz (Kann von Replikation und Fehlern beeinflusst werden)

Beispiele

Was sind Beispiele für verteilte Systeme?

TypBeispiel
Cloud-DiensteFacebook, Twitter und Google
Client- und Server-ArchitekturenE-Mail und WWW
Multicore CPUsGehört nicht zur Definition
Grid-ComputingWissenschaftliches Rechnen auf weltweit verteilten (Groß-)Rechnern
Internet der DingeMehrere eingebettete verteilte Systeme interagieren miteinander
AutomobileAustausch von aktuellen Sensor- und Verkehrsdaten
BankenKassen, Geldautomaten, Homebanking, Kontoauszug und Konto
Voice-over-IPClients und Gateways
Cloud-ComputingKommerzielle 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

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.

Index