Arten
Cluster
Ähnliche Workstations, High-Speed-LAN
Grid-Computing
Diverse Rechner, weite Strecken
- Anwendungsschicht (Nutzt Ressourcen durch Schnittstellen)
- Kollektive Ebene (Bietet Schnittstellen für Zugriff)
- Verbindungs- und Ressourcenebene
- Verbindungsebene (Anwendung von Kommunikationsprotokollen und Sicherheitsmaßnahmen)
- Ressourcenebene (Verwaltung einzelner Ressourcen)
- Infrastruktur (Stellt Schnittstellen zu lokalen Ressourcen dar)
Cloud-Computing
- Anwendung
- Daten
- Runtime
- Middleware
- Betriebssystem
- Virtualisierung
- Server
- Storage
- Netzwerk
| On-Premise | IaaS | PaaS | SaaS | |
|---|---|---|---|---|
| Verwaltung durch Kunde | 1-9 | 1-5 | 1-2 | - |
| Verwaltung durch Provider | - | 6-9 | 3-9 | 1-9 |
Verteilte Informationssysteme
Integrieren Anwendungen zu einem firmenweiten System. Bereitstellung i.d.R. durch einige wenige Server.
Allgegenwärtige Systeme
Pervasive: Smart Devices in die Umwelt integriert, Kommunikation typisch ohne UI.
Ubiquitous: Unsichtbar im Hintergrund - Klimatisierung ohne Interaktion
Transparenz
- Zugriffstransparenz
Gleiches Verhalten bei Zugriff auf Lokale und entfernte Ressourcen - Positionstransparenz
Zugriff ohne Kenntnis über den Standort - Nebenläufigkeitstransparenz
Mehrere Prozesse beinträchtigen sich gegenseitig nicht - Replikationstransparenz
Nutzung mehrerer Instanzen ohne dass diese Repliken sichtbar sind - Fehlertransparenz
Fehler werden verborgen, Nutzer können weiterarbeiten - Mobilitätstransparenz
Ressourcen und Clients können verschoben werden ohne dass Nutzer dies merken - Leistungstransparenz
Systemoptimierung bei Laständerungen bleiben für Nutzer unsichtbar - Skalierungstransparenz
Das System kann wachsen, ohne dass Änderungen an der Architektur oder den Anwendungsalgorithmen notwendig sind
Dienste
Namensdienst
Zuordnung von Namen zu Referenzen / Adressen. Name als eindeutiger Identifier.
Clients fragen Dienste über Namen an, somit sind Adresswechsel möglich.
Entkoppelt Client von Server.
Session Management
Jede Client Instanz erhält eine Session (User ID, Warenkorb)
Session Daten können transient oder persistent sein.
Speichern Serverseitig oder client-seitig (Cookies)
Middleware sorgt für transparente Zuordnung von Requests zu Sessions
Transaktionsverwaltung
Bildet eine Folge von Aktionen als atomare Operation ab.
- Daten Holen
- Modifizieren
- Zurückschreiben
Persistenzservice
Intelligente Schnittstelle zur Datenbank.
Häufigst als “Object-Relational-Mapper” (ORM)
Dabei werden Klassen als Tabellen, Attribute als Spalten und Objekte als Zeilen dargestellt.
Scheduling
Graph-Schedule
Graph-Scheduling für Kommunizierende Prozesse. Es wird versucht die Kommunikationskosten zu minimieren.

List-Schedule
List Scheduling wird verwendet wenn Tasks nur vor / Nach der Arbeit kommunizieren müssen. Austausch zur Laufzeit ist nicht verboten, sollte aber minimal sein, da es beim Scheduling nicht beachtet wird.
Tasks werden im DAG (Directed Acyclical Graph) modelliert

Beim ETF (Earliest Time First) werden Prozesse bevorzugt, die einen möglichst frühen Startzeitpunkt haben.
Beim HLFET (High Level First with Estimated Times) werden Kritische Prozesse bevorzugt.
Für Endknoten ist . Sonst gilt:
Zeitstempel

Bei Vektoruhren wird nach jeder Nachricht der Maximale Wert jeder Koordinate übernommen. Bei lokalen Ereignissen wird der lokale Zähler erhöht.

Consistent Cuts

Nachrichten dürfen “Ins Leere” verschickt werden, aber nie aus dem nichts auftauchen.
Ein Zustand ist dabei alles “links” der Schnittkante.
Snapshot Algorithmus nach Chandy & Lamport
Ziel ist die Erstellung eines konsistenten globalen Zustands in einem verteilten System, ohne die Prozesse zu blockieren.
Voraussetzung dafür sind zuverlässige FIFO Kanäle und starker Zusammenhang des Prozessgraphen. Jeder Prozess kann einen Snapshot initiieren.
Starker Zusammenhang
Bedeutet, dass im gerichteten Graph jeder Knoten von jedem Startpunkt erreichbar ist.
- Ein Prozess startet einen Snapshot
- Speichert sofort seinen lokalen Zustand (Speicher, Variablen, Queue-Zustand)
- Sendet über jeden ausgehenden Kanal eine spezielle Marker-Nachricht
- Marker signalisiert anderen Prozessen: “Alles aus diesem Kanal gehört zum Snapshot vor oder nach diesem Marker”
- Jeder andere Prozess der die Nachricht empfängt, speichert seinen eigenen Zustand und sendet den Marker ebenfalls an alle Kanäle weiter.
- Alle noch eingehenden Nachrichten werden als Zugehörig zum aktuellen Snapshot gespeichert.
- Der Snapshot ist für einen Knoten vollständig, wenn auf jedem Kanal ein Marker empfangen wurde.
Multicast Reihenfolgen
- Unordered: Reihenfolge ist nicht definiert und kann zwischen Prozessen variieren.
- FIFO: Nachrichten vom selben Absender kommen bei allen in der richtigen Reihenfolge an.
- Causal Order: Eine Nachricht die von Abhängt wird in allen Prozessen nach empfangen.
- Total Order: Alle Nachrichten sind überall in der selben Reihenfolge
Sequentielle Konsistenz
Ein Datenspeicher ist sequentiell konsistent, wenn jede Programmausführung so erscheint, als ob:
- alle Lese- und Schreiboperationen aller Prozesse in einer beliebigen Reihenfolge ausgeführt werden.
- Die Operation eines Prozess hält die im Programm vorgegebene Reihenfolge ein.
Linearisierbarkeit
Ist noch stärker als Sequentielle Konsistenz.
Vorausgesetzt ist hierbei eine globale Uhrzeit die in allen Prozessen gelesen werden kann.
Die Reihenfolge der Operationen muss hier mit der Reihenfolge ihrer Zeitstempel konsistent sein.
Sehr schwer zu implementieren, oft nur für formale Verifikation von nebenläufigen Algorithmen verwendet.
Kausale Konsistenz
Kausal abhängige Schreiboperationen müssen für alle Prozess in der selben Reihenfolge sichtbar sein.
Unabhängige Writes können in verschiedenen Reihenfolgen gelesen werden.
Notation: “Schreibe den Wert in Variable ”
Notation: “Lese Variable , Ergebnis war ”

Obwohl nach in geschrieben wurde, kann erst den Wert lesen. Lediglich das ursprüngliche darf nicht mehr sichtbar sein nachdem ein oder gelesen wurde.
Diese Kausale Inkonsistenz ist im zweiten Beispiel in zu sehen.
Schwache Konsistenz
Zugriff auf geteilte Ressourcen wird über Synchronisationsvariablen koordiniert.

Bei der Synchronisation werden vorherige Writes global sichtbar gemacht.
Freigabekonsistenz
Eine Variante der schwachen Konsistenz mit Mutexen.

Für kritische Blöcke kann nur ein Prozess arbeiten, so wird die Datensicherheit gewährt. Bei weniger sensiblen Operationen wie in kann auch ein alter Wert gelesen werden um die Geschwindigkeit zu erhöhen.
Vergleich

Monotone Operationen
Monotonic Reads
Ein Alter Wert wird niemals gelesen nachdem bereits ein neuerer gelesen wurde.
Monotonic Writes
Eine Ältere Schreiboperation wird niemals sichtbar nachdem eine neuere stattgefunden hat.
Grundbegriffe
- Failure|
Beobachtetes Fehlverhalten, System reagiert nicht wie erwartet - Error
Inkorrekter interner Zustand (Nicht beobachtet) - Fault
Physikalischer Defekt, Periodisch oder Dauerhaft - Fault Tolerance
System fällt trotz Fault nicht aus.