Definition Verteiltes System
2 zentrale Merkmale
4 Konsequenzen
Zentrale Merkmale:
Sammlung von mehreren autonomen Rechner-Komponenten
geografisch getrennt
auf verschiedenen Rechnern (nodes)
könnten getrennt von einander handeln
Koordination der Aktionen durch Austausch von Nachrichten über Kommunikationskanäle
Nachricht rein
Verarbeitung
Nachricht raus
weitere Merkmale:
sehr dynamisch
Geräte können kommen und gehen
Größe weniger relevant
eine Handvoll vs. mehrere Milltionen
4 Konsequenzen:
Transparenz
Nodes erscheinen Nutzer als kohärentes System
kohärent = verhält sich wie vom Nutzer erwartet
verhält sich immer gleich unabhängig von der Zeit oder Art des Zugriffs
Nebenläufigkeit
Programme laufen parallel
gemeinsame Verwendung von Ressourcen
Keine globale Uhr
Aktionen per Nachrichten koordiniert
Zeit hilfreich, gibt aber keine globale Uhr
Unabhängige Fehler
jede Komponenten im VS kann unabhängig Fehler verursachen
Rolle der Middleware-Schichten
= Software-Schicht oberhalb der OS der beteiligten Nodes
zwischen Anwendungen und Service-Routines
Menge von Prozessen und Objekten
vereinfacht Kommunikation
maskiert Heterogenität
= verschiedene Betriebssysteme, Netzwerke, Programmiersprachen, Entwickler
wie OS auf einzelnem Rechner
verwaltet Ressourcen
ermöglicht Kommunikation zwischen Anwendungen
sorgt für Sicherheit
behandelt und versteckt Fehler
Unterschied zu OS:
angeboten in Netzwerk-Umgebung
auch Container für Funktionen, die verschiedene Anwendungen häufig brauchen
müssen diese sie nicht mehr gesondert Implementieren
4 Anforderungen an VS
Offenheit
Schnittstellen veröffentlichen und ihre Dokumentation
Ziel: Interoperatbilität udn Portabilität (= Programme können auf verschiedenen Systemen ausgeführt werden)
Skalierbarkeit
Anzahl Nutzer
geographische Entfernung
administrative Kontrolle
Sicherheit
Vertraulichkeit
Integrität
Verfügbarkeit
7 Arten der Transparenz
= verbirgt Verteilung von Komponenten im VS
Access/ Zugriff
Art der Repräsentation und des Zugriffs auf Prozesse/ Ressourcen
man kann identische Operationen verwenden
Location/ Ort
man braucht nicht wissen, wo Ressource ist
Relocation
Verschieben von Prozessen/ Ressourcen (z.B. Webseiten von einem Datenzentrum zu einem anderen)
durch das VS
Migration
überhaupt verschieben
durch den User
z.B. Bewegen mit Mobiltelefonen ohne dass Kommunikation beeinträchtigt wird
Replication
mehrere Instanzen von Objekten benutzen
Kopieren von Objekten für bessere Performanz
Concurrency
unabhängige Nutzer teilen gleiche Ressource/ Prozess
geteilte Ressource muss konsistent bleiben
Failure
Ausfälle verbergen
korrekte Wiederherstellung
Was bedeutet Offenheit?
Anforderung für Spezifikationen
Wichtig wofür (3 Begriffe)?
= Komponenten sollen einfach verwendet und in andere Systeme integriert werden
Standard-Regeln für Syntax und Semantik der Angebote der Komponenten
z.B. Interfaces mit Interface Definition Language (IDL)
für Syntax
Semantik zu spezifizieren ist schwer
meist mit natürlicher Sprache
Anforderungen für Spezifikationen:
vollständig
alles für Implementierung Benötige wurde spezifiziert
neutral
nicht vorschreiben, wie Implementierung aussehen sollte
beide wichtig für:
Interoperabilität
Portabilität
Extensibilität
extrem: Source Code zur Verfügung stellen und alle arbeiten daran
weiteres Problem: Parameter-Einstellungen (z.B. für Caching)
Was ist Interoperabilität?
Ausmaß in der zwei Implementierungen miteinander arbeiten können
indem sie nur auf die Services sich verlassen, die durch einen gemeinsamen Standard spezifiziert wurden
Was ist Portabilität?
Ausmaß in dem eine Anwendung für VS A auf einem VS B verwendet werden kann, wenn B die gleichen Interfaces wie A implementiert
Was ist Extensibilität?
Komponenten ersetzen oder austauschen, hinzufügen
andere Komponenten sollten nicht betroffen werden
3 Dimensionen von Skalierbarkeit
Größe
mehr Nutzer oder Ressourcen
ohne Performanz einzubüßen
Geographisch
Nutzer und Ressourcen weit entfernt
keine Verzögerung bemerkbar während Benutzung
Problem wegen synchroner Kommunikation
brauchen dann reiche Interaktionsmuster zwischen client und server
Administrativ
einfach zu verwalten
beinhaltelt:
Resourcen-Nutzung und Bezahlung
Verwaltung
Nodes in einem VS können anderen nodes darin vertrauen
selbst wenn viele unabhängige Verwaltungsorganisationen drin sind
3 Probleme für Performanz
Rechnerkapazität (CPUs)
Speicherkapazität (inkl. I/O rate)
Netzwerk (zwischen User and zentralem Service)
3 (+1) Techniken der Skalierbarkeit
Hiding communication latencies
bei geograpischer Skalierung
asynchrone Kommunikation
andere Arbeit verrichten, wenn man auf Antwort wartet
Teil der Arbeit vom Server zum Client verlegen
partitioning and distribution
Komponente in kleinere Teile zerlegen und die im VS verteilen
Bsp. DNS Aufteilung
hierarchisch aufgeteilt in Baum mit nicht-überlappenden Zonen
in jeder Zone ein einzelner DNS server
Komponenten im VS replizieren
Caching als spezielle Form
führt zu Konsistenzproblemen
Synchronisationsmechanismen hart/ unmöglich skalierbar zu implmentieren
Kapazität erweitern
2 Arten Kapazität zu erweitern
scaling up
mehr Speicher, CPUs, ...
scaling out
VS erweitern durch mehr Maschinen
8 Falsche Annahmen bei VS (Anfängerfehler laut Peter Deutsch)
Netzwerk sei reliabel
Netzwerk sei sicher
Netzwerk sei homogen
Topologie ändere sicht nicht
Latenz sei 0
Bandbreite sei unendlich
Transportkosten seien 0
es gäbe nur einen Admin
Was ist das ACID-Prinzip?
4 Eigenschaften von Transaktionen
Transaktionen beginnen mit BEGIN_TRANSACTION
enden mit END_TRANSACTION
Prozeduren dazwischen werden entweder alle ausgeführt oder keine
Eigenschaften von Transaktionen:
Atomic
Transaktionen scheinen unteilbar
Consistent
Transaktionen erhalten System Invarianten
Isolated
Gleichzeitige Transaktionen behindern sich nicht gegenseitig
Durable
wird eine Transaktion ausgeführt (commited) sind die Änderungen permanent
gilt nur für Top Level Transaktionen (bei nested transactions)
2 Arten der Architektur und ihre Merkmale
Software Architecture
= logischer Organisation der Software-Komponenten
welche gibt es
ihre Organisation
wie sie miteinander interagieren
System architecture
= eine Instanz der physischen Realisierung
Menge von Komponenten
Konnektoren, die Interaktion zwischen Komponenten definieren
4 Teile des Architekturstils
Komponenten
modulare einheiten
bieten Interface
ersetzbar in der Umgebung
Connector = Verbindung zwischen Komponenten
Mechanismus
Kommunikationsprotokolle
Streams
Datenaustausch zwischen Komponenten
gemeinsame Konfiguration in einem System
4 Arten von Software-Architekturen
Layered architectures
Object-based architectures
Resource-centered architectures (auch resource-based)
Event-based architectures/ publish-subscribe architectures
Was ist SOA?
Service Oriented Architecture
nur noch Services verbinden
nicht trivial, weil Interfaces passen müsse
Was sind Resource-centered architectures (auch resource-based)?
VS als riesige Kollektion von Ressourcen, die individuell von Komponenten verwaltet werden
Name des Ansatzes: Rpresentational State Transfer (REST)
vs. service-specific Interfaces
weniger Operationen aber mehr Parameter
Amazon S3 für Storage bietet zusätzlich SOAP Interface mit bis zu 50 Operationen (die haben viel weniger Parameter)
Fehler werden weniger während Compilierung als während der Runtime entdeckt
4 Eigenschaften von RESTful architectures
ein einziges Benennungsschema identifiziert Ressourcen
Alle Dienste bieten die gleiche Schnittstelle mit 4 Operationen
1. PUT
Ressource ändern durch Übermitteln eines neuen Zustands
2. POST
neue Ressource erstellen
3. GET
Zustand einer Ressource durch irgendeine Repräsentation erhalten
4. DELETE
Resource löschen
Nachrichten zu oder von einem Dienst sind vollständig selbstbeschreibend
nach dem Ausführen einer Operation vergisst die Komponente alles über den Aufrufer
= stateless execution
Was sind Event-based architectures/ publish-subscribe architectures?
2 x 2 Arten von publish-subscribe-Systemen
3 Eigenschaften
so wenig wie möglich Abhängigkeiten zwischen Prozessen
System als Sammlung unabhängiger Prozesse
Koordination als Kommunikation und Kooperation zwischen den Prozessen
Arten von event-based Systemen
published = Ereignis wird für andere Prozesse verfügbar gemacht
subscribe = Ereignisse beschreiben, die Abonnent haben will
Beschreibung ähnlich SQL
topic-based publich-subscribe Systemen
Beschreibung enthält (attribute, value) Paare
content-based publish-subscribe Systemen
Beschreibung enthält (attribute, range)-Paare
Attribut soll Werte innerhalb eines Bereichs annehmen
kann man große VS bauen, weil die Prozesse lose verbunden sind
oder
event-based Koordination
nur räumlich entkoppelt
shared data space
zusätzlich zeitlich entkoppelt
3 Eigenschaften:
Entkopplung von Räumlichkeit (Referenz)
= Publisher und Subscriber brauchen sich nicht zu kennen
Entkopplung von Zeit
= P und S können asynchron laufen
Entkopplung von Synchronisation
= P und S brauchen nicht auf Bestätigung von einander warten
Cabir et al. 2 DImensionen um Koordination zu qualifizieren
-> 4 Arten
Dimensionen:
Temporally coupled vs. Temporally decoupled
zeitlich = beide Prozesse müssen gleichzeitig laufen
Referentially coupled vs. Referentially decoupled
=explizite Referenz während der Kommunikation
Prozess muss Namen des Kommunikationspartners kennen
-> 4 Arten:
direct coordination
temporally and referentially coupled
Bsp. Telefonat über Mobilphon
mailbox
referentially coupled and temporally decoupled
man tut Brief in Box - muss aber wissen, welche
event-based
referentially decoupled and temporally coupled
man muss nur Benachrichtigung (publish notification) über das Auftreten des Ereignissen schicken
Prozesse können sich für Arten von Ereignissen einschreiben (subscribe)
Prozesse werden beschrieben, aber nicht Sender oder Empfänger
referentially decoupled and temporally decoupled
Kommukation über Tupel
= strukturierte Datenfelder (wie Zeile in Datentabelle)
Prozesse suchen nach Tupel mit Mustern
häufig mit publish-subscribe architecture verbunden
3 System-Architekturen
Client/ Server-Modell
Peer-to-Peer-System
Hybride Architekturen
Was ist das Client/ Server-Modell?
zentralisierte Architektur
= vertikale Verteilung/ Architektur
verschiedene Komponenten auf verschiedene Maschinen
2 Gruppen von Maschinen:
Server - implementieren Dienste
Client - nutzt Dienste durch Schicken von Anfragen
client-server-interaction = request-reply behavior
Kritik: keine klare Trennung, wer client und wer server ist
Unterschiede in der Software-Architektur beim Client
Software beim Client oder Server (die 3 Schichten)
alle Verteilungen möglich
fat clients
meiste Software beim Client
viele verschiedene Versionen nötig (für unterschiedliche Client OS)
Verwaltung schwieriger
in letzter Zeit weniger valides Arguement
durch weniger Abhängigkeiten von idiosynkratischen Umgebungen auf Client-Seite -> mehr einheitliche OS
thin clients
einfacher zu verwalten
weniger schöne Benutzer-Oberflächen
langsamer
Was ist three-tiered architecture?
Server dient zugleich als client (für Data base)
Bsp. Webserver als Eingangspunkt, der Anfragen weiter an Anwendungsserver gibt, der wiederum ist Client für Datenbank
Was sind Peer-to-Peer-Systeme?
dezentrale Architekturen
= horizontale Verteilung
keine Unterscheidung Client/ Server
Client/ Server ist in äquivalente Teile aufgeteilt
jeder Teil arbeitet mit seinem Bereich der Daten
für bessere Verteilung der Arbeit
Bsp. Bit-Torrent (FileSharing)
servant
Interaktionen zwischen Prozessen sind symmetrisch
Komponente dient als Client und Server zur gleichen Zeit
nutzt overlay-network
jeder Prozess kann mit jedem kommunizieren
jeder Prozess hat volle Funktionalität
System organisiert sich selbst
Was ist ein overlay network?
2 Arten + 1
logisches Netzwerk über einem physischen Netzwerk
Prozesse bilden die Nodes
Kommunikation nur zwischen im Overlay verbundene Nodens
Bsp. Chord-System
2 Arten:
stukturiert
deterministisches overlay-network
z.B. Bäume, RInge, Netze (grid)
Topologie wird für effiziente Datensuche genutzt
basiert auf semantic-free index
jedes Daten-Item ist mit einzigartigem Schlüssel verbunden
Schlüssel wird als Index genutzt
Hashfunktion verwendet, die aus dem Daten-Item den Key berechnet
peer-to-peer System speichert (key, value) Paare
jede Node speichert Teilmenge der Daten für entsprechende Keys
-> System implementiert DHT
distributed hash table
gibt Funktion lookup, die Daten nach ihrem key findet
Bsp. Chord system
unstrukturiert
jede node hat eine ad-hoc Liste von Nachbarn
overlay network ist ein random graph
Kanten zwischen zwei nodes nur mit bestimmter Wahrscheinlichkeit
Nodes ändern ihre Nachbarschaftslisten kontinuierlich
Suche nach Daten - 2 Extreme
hierarchisch organsiert (bei unstrukturiert dabei)
e.g. broker in content delivery systems (>CDN)
Nodes bieten Speicherplatz für Webinhalte
Web clients benutzen nahe Seiten
broker schauen, wo die Seiten gespeichert werden sollen
sammeln Daten zu Resourcennutzung
superpeers
3 Arten in unstrukturierten Peer-to-Peersystemen nach Daten zu suchen
Flooding
node sendet Datenanfrage an alle Nachbarn
kennt Nachbar Anfrage, ignoriert sie sie
sonst sucht sie lokal oder leitet Anfrage weiter
teuer
TTL - time to live für Request
\= festgelegte Anzahl hops
ggf. inkrementelle TTL
Random Walks
anfragen zu willkürlich gewählten Nachbarn
ggf. n Random Walks starten
policy-based search methods
zwischen a und b
preferred neighbors, die positiv geantwortet haben
Was sind Superpeers?
in hierarchischen Peer-to-Peer-Netzwerken genutzt
super peers sind Nodes die Daten zur Nutzung sammeln
Namen aller verwalteten weak peers
reguläre Nodes sind "weak peers"
zu client über superpeer verbunden
tritt weak peer ins Netzwerk ein, teilt er seinem super peer die von ihm zur Verfügung gestellten Daten mit
geht er raus, muss super peer alle Informationen über ihn entfernen
nicht immer feste Zuordnung zu weak zu super peers
zum Beispiel bei File-Share System: gerade mit dem super verbinden, dessen Dateien man gerade braucht
neues Problem: leader election problem (in 6.4 behandelt)
Last changeda year ago