Viele Apskete verteilter Systeme finden sich ähnlich in sozialen Systemen, z.B. Gruppenarbeit. Im Kurs wurden folgende Apskete erarbeitet.
Einzelarbeit
Vorteile
Scheduling einfacher
performant / keine Transaktionskosten/Overhead (kein Reden, keine Abstimmung, kein Warten)
vollständiges Wissen
Single Point of Truth
Eigenverantwortung
sicher (kein Abhören, keine Abhängigkeit)
Gruppenarbeit – Vorteile
Arbeitsteilung / Entlastung
Parallelität
performanter durch Spezialisierung
Resilienz - Risikoverteilung
Fehlererkennung
Skalierbarkeit (ab 2 ist 3,4,5 leicht)
Robustheit / Fehlertoleranz / Austauschbarkeit
gemeinsame Nutzung von Ressourcen (Drucker, Papier, Räume)
einige Aufgaben von Natur aus verteilt, z.B. geographische Trennung
Gruppenarbeit – Nachteile
erhöhte Komplexität durch Notwendigkeit von Kommunikation
Fehleranfälligkeit und neue Fehlerklassen
Übertragungsfehler / Missverständnisse
Timeout / Halteproblem
Mehrarbeit wenn unsynchronisiert
Kompatibilität
Unsicherheit
Debugging / Fehlerfindung / unklare Schuldfrage (verschiedene kommunizierende Prozesse sind schwer kontrollierbar und teilweise auch schwer verständlich)
Theoretische Kommunikations-grundlagen
Elemente eines Kommunikationssystems
Kommunikationsarten
Richtung
simplex / unidirektional
(halbduplex)
duplex / bidirektional
Übertragung
Unicast (1 zu 1)
Multicasting (1 an einige)
Bradocasting (1 an alle)
Kommunikationsformen
Textkommunikation
Datenkommunikation
Sprachkommunikation (audio)
Bild- und Videokommunikation
Spezielles Kommunikationsmodell für Computer – Anpassungen
Meldungen liegen in digitaler Form vor
Es existiert ein zweiter Kommunikationskanal für Rückmeldungen
Definition eines Protokolles, das festlegt, was für Meldungen in welcher Reihenfolge ausgetauscht werden
Rekursive Struktur ein protokoll-erweiterter Kanal kann selbst als (virtueller) Kanal verwendet werden
Verteiltes System
Ein verteiltes System ist ein System,
in dem sich Hardware und Softwarekomponenten auf vernetzten Computern befinden und
nur über den Austausch von Nachrichten kommunizieren und ihre Aktionen koordinieren.
Verteilte Anwendung
Eine verteilte Anwendung ist eine Anwendung,
die ein verteiltes System zur Lösung eines Anwendungsproblems nutzt und
aus verschiedenen Komponenten besteht, die mit den Komponenten des verteilten Systems sowie mit den Anwendern kommunizieren.
Architekturmodelle
Ein Architekturmodell beschreibt
die Rollen einer Anwendungskomponente innerhalb der verteilten Anwendung
die Beziehungen zwischen den Anwendungskomponenten
Beispiele:
Client / Server
Peer-to-Peer
Client / Server
Client-Prozess
Kurzlebiger Prozess
Lebt genau für die Dauer der Nutzung durch einen Anwender
Agiert als Initiator einer IPC
Server-Prozess
Langlebiger Prozess
Lebt unbegrenzt
Agiert als Diensterbringer einer IPC
Client / Server – Varianten
Mobiler Code
Servercode wandert auf Anfrage (in Form) zum Client.
Die Ausführung des Codes erfolgt am Client
Bekanntes Beispiel dieser Client / Server Variante sind Java Applets.
Applets als serverseitige Anwendungskomponenten wandern auf Anfrage zum Client.
Der Browser als Client macht Aufrufe lokal auf dem Applet.
Bei Bedarf reicht das Applet die Anfragen an den Server weiter.
Client / Server – Varianten
Kooperierende Server
Ein Verbund von Servern bearbeitet transparent einen Aufruf.
Verwendung findet dieses Modell beispielsweise im Internet bei Domain-Name-Servern (DNS).
DNS verwalten Abbildungstabellen von auf IP Adressen.
Liegt lokal keine Abbildung vor, wird der Aufruf transparent an den DNS-Server weitergeleitet.
Client / Server – Varianten
Replizierte Server
Es werden Replikate von Serverprozesse zur Verfügung gestellt.
Beispiele:
Transparente Replikate in Clustern zur Verbesserung der Performance und zur Ausfallsicherheit.
öffentliche Replikate zur Lastverteilung (z.B. Mirror Server)
Client / Server – Varianten
Proxy Modell
Ein Proxy dient als Zwischenspeicher für Aufrufergebnisse vom Server.
Ziel ist die Verbesserung der Performance
Beispiel: Proxy zum Zwischenspeichern von Webseiten
Das Tier-Modell
Tier: Prozessraum in einer verteilten Anwendung
n-Tier-Architektur legt fest, wie viele unterschiedliche Client- und Server es innerhalb einer verteilten Anwendung gibt.
Ein Prozessraum kann einem physikalischen Rechner entsprechen.
Die Verwendung von n-Tier Architekturen ergibt vor allem für Informationssysteme Sinn:
Verteilung der Software zur Reduktion der
Interaktive Mensch-Maschine Schnittstelle
Datenzentriertes Vorgehen
Das Tier-Modell
Typischen Aufgabenstellungen in einem Informationssystem:
Präsentation – Schnittstelle zum Anwender
Anwendungslogik – Bearbeitung der Anfragen
Datenhaltung – Speicherung der Daten in einer Datenbank
Im Tier-Modell wird jede dieser Aufgaben der Anwendungskomponente einer einzelnen Tiers zugeordnet.
Die Art der Zuordnung macht den entscheidenden Unterschied der verschiedenen n-Tier Architekturen.
2-Tier-Architektur
Thin- vs Fat-Client-Architekturen
sind Verfeinerungsmodelle für die Zuordnung der Anwendungslogik
Ultra-Thin-Client: Die auf der Client-Tier sich auf reine Anzeige von Dialogen. der Anwendung ist ein Browser.
Thin-Client: Die auf der Client-Tier sich auf Anzeige von Dialogen und die Aufbereitung der Daten zur Anzeige.
Fat-Client: Teile der Anwendungslogik liegen zusammen mit der auf der Client-Tier.