Mit Virtuellen Maschinen
PD Stefan Bosse
Universität Bremen - FB Mathematik und Informatik
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation ::
Übergang von eng zu lose gekoppelten Systemen
Wo liegen die Unterschiede in der Prozesskommunikation zu eng gekoppelten SM Systemen?
Wie geschieht die Synchronisation bei Fehlern und Asynchronität?
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Map & Reduce
Methode:
MapReduce ist hochgradig skalierbar, um hohe Parallelitätsgrade auf verschiedenen Arbeitsebenen zu erreichen.
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Map & Reduce
Die Map-Funktion verarbeitet ein Paar (Schlüssel, Wert) und gibt eine Liste von Zwischenpaaren (Schlüssel, Wert) zurück:
map(k1,v1)→list(k2,v2)
Die Reduzierungsfunktion führt alle Zwischenwerte zusammen, die die gleichen Zwischenschlüssel haben:
reduce(k2,list(v2)) → list(v3)
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Map & Reduce
Ausführungsphasen einer generischen MapReduce Applikation
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Map & Reduce
Ein Master-Prozess erhält einen Jobdeskriptor, der den auszuführenden MapReduce-Job angibt. Der Jobdeskriptor enthält neben anderen Informationen den Ort der Eingabedaten, auf die unter Verwendung eines verteilten Dateisystems zugegriffen werden kann.
Gemäß dem Jobdeskriptor startet der Master eine Anzahl von Mapper- und Reducer-Prozessen auf verschiedenen Maschinen. Gleichzeitig startet es einen Prozess, der die Eingabedaten von seinem Speicherort liest, diese Daten in eine Gruppe von Aufteilungen unterteilt und diese Aufteilungen an verschiedene Zuordner verteilt.
Nach dem Empfang seiner Datenpartition führt jeder Zuordnungsvorgang die Zuordnungsfunktion aus (die als Teil des Jobdeskriptors bereitgestellt wird), um eine Liste von Zwischenschlüssel / Wert-Paaren zu erzeugen. Dann werden diese Paare auf der Basis ihrer Schlüssel gruppiert.
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Map & Reduce
Alle Paare mit den gleichen Schlüsseln sind dem gleichen Reduziervorgang zugeordnet. Daher führt jeder Reduzierprozess die Reduktionsfunktion (definiert durch den Jobdeskriptor) aus, die alle Werte vereinigt, die mit dem gleichen Schlüssel assoziiert sind, um einen möglicherweise kleineren Satz von Werten zu erzeugen.
Dann werden die von jedem Reduktionsprozess erzeugten Ergebnisse gesammelt und an einen durch den Jobdeskriptor spezifizierten Ort geliefert, um die endgültigen Ausgabedaten zu bilden.
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Map & Reduce
local options = {workers = 2}local data = {34,35,36,37,38,39,40,41}local function worker (id,set) local results = T{} for i = 1,#set do results:push(fib(set[i])) end return resultsend-- Parallel Processinglocal Parallel = require('parallel')local p = Parallel:new(data,options)function sum (x,y) return x+y endp:time(): map(worker): apply(function (r) print(r:print()) end): reduce(sum): apply(print): time()
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Gruppenkommunikation
Die bisherigen Synchronisationsmethoden basierten auf einem sicheren Lock Objekt und Master-Worker Hierarchien
Verteilte Systeme sind i.A. strikt asynchron und können nicht direkt synchronisiert werden
Der verteile mutuale Ausschluss ist zentrales Problem in verteilten Systemen
In verteilten Systemen kann es lose gekoppelte Gruppen aus Prozessen geben und es muss zunächst ein Master/Leader gewählt werden!
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: MPI
Message Passing Interface: MPI
Anwendungsprogrammierschnittstelle (nicht unbedingt für Compiler oder eine Systemimplementierungsbibliothek).
Effiziente Kommunikation:
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: MPI
Implementierungen, die in einer heterogenen Umgebung verwendet werden können (verschiedene Hostplattformen).
Einfache Einbindung in Programmiersprachen und Bibliotheken und Plattformunabhängigkeit
Zuverlässige Kommunikation: Nutzer/Programmierer muss sich nicht um Kommunikationsfehler kümmern
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: MPI
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: MPI
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: MPI
Kommunikationswelt mit einer Gruppe aus Prozessen die gemeinsam Nachrichten austauschen können
Nachrichten können nur innerhalb der Kommunikationswelt ausgetauscht werden
MPI_COMM_WORLD ist die Standardwelt
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: MPI
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: MPI
Kommunikation zwischen zwei Prozessen
Quellprozess sendet eine Nachricht (Typ, Daten) an einen Zielprozess unter Angabe der Rank ID
Kommunikation kann nur innerhalb eines Communicators stattfinden
MPI.send(dest:number,message:{type:string,content:string})
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: MPI
MPI.recv(type:string,callback:function (message))
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: MPI
MPI.broadcast(message:{type:string,content:string})
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: RPC
Remote Procedure Call Interface
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: RPC
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: RPC
// Serverrequire('Csp')local rpc = Rpc({verbose=2})rpc:getreq('127.0.0.1',12345,function (req) if req.cmd=='iabs' then return { result=math.sqrt(math.pow(req.x,2)+ math.pow(req.y,2)), stat='OK' } else return {stat='EINVALID'} endend)loop.start()
// Clientrequire('Csp')local rpc = Rpc({verbose=2})local stat,reply = rpc:trans('127.0.0.1',12345, {cmd='iabs',x=1,y=2})print(reply)
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume
Tupel-Räume stellen ein assoziiertes Shared-Memory-Modell dar, wobei die gemeinsam genutzten Daten als Objekte mit einer Reihe von Operationen betrachtet werden, die den Zugriff der Datenobjekte unterstützen
Tupel sind in Räumen organisiert, die als abstrakte Berechnungsumgebungen betrachtet werden können.
Ein Tupelraum verbindet verschiedene Programme, die verteilt werden können, wenn der Tupel-Space oder zumindest sein operativer Zugriff verteilt ist.
Das Tupelraum Organisations- und Zugangsmodell bietet generative Kommunikation, d.h. Datenobjekte können in einem Raum durch Prozesse mit einer Lebensdauer über das Ende des Erzeugungsprozesses hinaus gespeichert werden.
Ein bekanntes Tupelraum-Organisations- und Koordinationsparadigma ist Linda [GEL85].
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume
Ein Schnappschuss eines Tupelraumes mit Tupeln und Tupeloperationen [11]
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume
Direkter Nachrichtenaustausch (a), z.B. durch Signale, im Vergleich zu generativer Kommunikation (b) und virtuelle verteilte Räume (c) durch mobile Prozesse (Sensorknoten)
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume - Datenmodell
Die Daten sind mit Tupeln organisiert.
Ein Tupel ist eine lose gekoppelte Verbindung einer beliebigen Anzahl von Werten beliebiger Art /Typ/
Ein Tupel ist ein Wert und sobald es in einem Tupelraum gespeichert ist, ist es persistent.
Tupeltypen ähneln den Datenstrukturtypen, sie sind jedoch dynamisch und können zur Laufzeit ohne statische Beschränkungen erstellt werden.
Auf die Elemente von Tupeln kann nicht direkt zugegriffen werden, was üblicherweise Mustererkennung und musterbasierte Dekomposition erfordert, im Gegensatz zu Datenstrukturtypen, die einen benannten Zugriff auf Feldelemente bieten, obwohl die Behandlung von Tupeln als Arrays oder Listen diese Beschränkung lösen kann.
Ein Tupel mit n Feldern heißt n-stellig und wird in der Notation <v1, v2, ..> angegeben.
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume - Datenmodell
<'SENSOR',1000><'SENSOR2',[10,100,2]><1,3,5,7,11><'SLEEPMODE',True,2500.34><0,'OFF'><1,'ON'>
t=⟨→d⟩, with →d::=d|d,→d and d::=v|ε|x
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume - Datenmodell
p=⟨→dt⟩, with →dt::=dt|dt,→dt and dt::=v|ε|x|x?|⊥
Ein Suchmuster kann ein Wildcard (⊥) anstelle von formalen Parametern verwenden.
Jedes Tupel t hat eine Typsignatur Sig (t) = St = <T1; T2; ...; Tn>, ein Tupel mit der gleichen Stelligkeit wie t, das den Typ jedes Tupelfeldes angibt.
Ein Tupel kann nur durch seine Verknüpfung mit Templates p angesprochen werden.
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupel Räume - Datenmodell
Sei t = <d1, d2, .., dn> ein Tupel, p = <dt1, dt2, .., dtm> eine Vorlage; dann wird t durch p abgedeckt (bezeichnet durch match (t, p) = true), wenn die folgenden Bedingungen gelten: (i) m = n. (ii) ∀ dti = di oder dti = ⊥, 1 ≤ i ≤ n. Bedingung (1) prüft, ob t und p die gleiche Stelligkeit haben, während (2) prüft, ob jedes Nicht-Wildcard-Feld von p gleich ist dem entsprechenden Feld von t. Mustersuche
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume - Operationale Semantik
Beispiel: out("Sensor",1,100); out("Sensor",2,121);
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume - Operationale Semantik
Beispiel: inp("Sensor",1,s1?); inp("Sensor",i?,s?);
Beispiele: rd("Sensor",1,s1?); rd("Sensor",i?,s?);
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume - Operationale Semantik
Beispiel: res:=inp?('SENSOR',a?,b?);
Beispiel: res:=inpw?(1000,'SENSOR',a?,b?);
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume - Operationale Semantik
m=⟨τ,→d⟩, with →d::=d|d,→d and d::=v|ε|x, τ:timeout
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume - Operationale Semantik
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume - Synchronisationsmodell
Ein Produzent erzeugt ein Tupel, das von einem Konsumentenprozess entfernt werden kann.
Ein Verbraucher-Prozess wird blockiert, wenn die Anfrage nicht bearbeitet werden kann, wenn im Tupel-Bereich tatsächlich kein passendes Tupel vorhanden ist.
Nachdem ein übereinstimmendes Tupel im Tupelraum gespeichert wurde, wird es sofort einen der wartenden Verbraucherprozesse zugewiesen.
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume - Synchronisationsmodell
Daher ist die Eingabeoperation immer synchron. Einzige Ausnahme sind die nicht permanent blockierenden Versionen, die das Warten auf eine obere Zeitgrenze begrenzen (Timeout).
Es gibt keine anfängliche zeitliche Anordnung von Erzeuger- und Verbraucheroperationen.
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Tupelräume - Beispiele von Operationen in Lua
out({'SENSOR',10,20});out({'SENSOR',9,23{);out({'PI',3,14{);out({'DATA',{1,2,3,4}});result = inp({'SENSOR',nil,nil});>> { 'SENSOR', 9, 23 }result = inp({'SENSOR',nil,nil});>> { 'SENSOR', 10, 20 }inp({'SENSOR',nil,nil});>> nilrd({nil,nil})>> { 'DATA', { 1, 2, 3, 4 } }rd({nil,nil,nil,nil},100)>> nil -- Timeout
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Sicherheit und Lebendigkeit
Ein Algorithmus, z.B. die Wahl eines Leaders in einer Prozessgruppe, gelte als sicher wenn maximal ein Leader unter allen Umständen gewählt wird. Dies ist auch der Fall wenn einzelne Prozesse der Prozessgruppe fehlerhaft sind (nicht erreichbar sind oder terminiert sind).
Ein Algorithmus, z.B. die Wahl eines Leaders in einer Prozessgruppe, gelte als lebendig wenn irgendwann mindestens ein Leader unter allen Umständen gewählt wird.
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Sicherheit und Lebendigkeit
Leaderelection: Eine ursprünglich zusammenhängende Gruppe wird durch Netzwerkpartitionierung (Störung der Kommunikation) zweigeteilt und es werden jetzt zwei Leader gewählt!
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Mutualer Ausschluss
LA1: Um einen kritischen Bereich zu erlangen (Mutex Acquire), sendet ein Prozess eine zeitgestempelte Anforderung an jeden anderen Prozess im System und fügt die Anforderung auch in seiner lokalen Queue Q hinzu.
LA2: Wenn ein Prozess eine Anforderung empfängt, wird sie in Q platziert. Wenn sich der Prozess nicht in seinem CS befindet, sendet er eine zeitgestempelte Bestätigung an den Absender. Andernfalls wird das Senden der Bestätigung bis zum Verlassen des CS verzögert (Mutex Release).
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Mutualer Ausschluss
LA3: Ein Prozess tritt in seinen CS ein, wenn (1) seine Anfrage vor allen anderen Anfragen (d.h. der Zeitstempel seiner eigenen Anfrage ist kleiner als die Zeitstempel aller anderen Anfragen) in seinem lokalen Q angeordnet ist und (2) Es hat die Antworten von jedem anderen Prozess als Antwort auf seine aktuelle Anfrage erhalten.
LA4: Um die CS zu verlassen, löscht ein Prozess (1) die Anfrage von seiner lokalen Warteschlange Q und (2) sendet eine zeitgestempelte Freigabenachricht an alle anderen Prozesse.
LA5: Wenn ein Prozess eine Freigabenachricht erhält, entfernt er die entsprechende Anforderung aus seiner lokalen Warteschlange Q.
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Mutualer Ausschluss
RA1: Jeder Prozess, der den Eintritt in seinen CS anfordert (Mutex Acquire), sendet eine zeitgestempelte Anfrage an jeden anderen Prozess im System.
RA2: Ein Prozess, der eine Anforderung empfängt, sendet eine Bestätigung an den Absender zurück, nur wenn
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Mutualer Ausschluss
RA3: Ein Prozess tritt in seine CS ein, wenn er von jedem der verbleibenden (n-1) Prozesse eine Bestätigung erhält.
RA4: Nach dem Verlassen seiner CS muss ein Prozess eine Rückmeldung an jede der ausstehenden Anfragen senden, bevor er eine neue Anfrage macht oder andere Aktionen ausführt.
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Mutualer Ausschluss
Eine andere Klasse verteilter mutualer Ausschlussalgorithmen verwendet das Konzept eines expliziten variablen Tokens, das als eine Erlaubnis für den Eintritt in die CS dient (Mutex Acquire) und von einem anfordernden Prozess durch das Prozesssystem weitergereicht werden kann.
Immer wenn ein Prozess in seinen CS eintreten möchte, muss er den Token erwerben. Der erste bekannte Algorithmus, der zu dieser Klasse gehört, ist auf Suzuki und Kasami zurückzuführen.
Da es nur ein Token gibt ist der mutuale Ausschluss (Sicherheit) garantiert. Die Lebendigkeit aber nicht unbedingt (Verlust des Tokens).
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Mutualer Ausschluss
Prozess 3 hält den Token und Prozesse 1 und 4 fordern ihn (über 6 ) an; schließlich erhält ihn 4
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Verteilter Konsens
Zentrale Eigenschaften:
Beim Konsens kann ein Master-Slave Konzept oder ein Gruppenkonzept mit Leader/Commander und Workern verwendet werden.
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Verteilter Konsens
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Verteilter Konsens
Byzantinisches Generalproblem: (a) Leader 0 ist fehlerfrei, Worker 2 ist fehlerhaft (b) Leader 0 ist fehlerhaft, Worker 1 und 2 sind fehlerfrei [E]
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Verteilter Konsens
Jeder Worker der Nachrichten empfängt ordnet diese nach direkten und indirekten (von Nachbarn)
Fall (a): Prozess 2 versendet fehlerhafte Nachricht mit Anweisung 0, Prozess 1 empfängt eine direkte Nachricht mit Anweisung 1 und eine indirekte mit (falschen) Inhalt Anweisung 0
Fall (b): Prozess 0 (Leader) versendet an Prozess 1 richtige Nachricht mit Anweisung 1 und falsche Nachricht mit Anweisung 0 an Prozess 1
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Verteilter Konsens
Das nicht-signierte Nachrichtenmodell erfüllt die Bedingungen:
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Verteilter Konsens
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Verteilter Konsens
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Verteilter Konsens
Eine Illustration von OM(1) mit vier Prozessen und einem fehlerhaften Prozess: die Nachrichten auf der oberen Ebene spiegeln die Eröffnungsnachrichten von OM(1) wider und die auf der unteren Ebene spiegeln die OM(0)-Meldungen wider, die von den Mitteilungen der oberen Ebene ausgelöst werden. (a) Prozess 3 ist fehlerhaft. (b) Prozess 0 (Leader) ist fehlerhaft. [E]
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Verteilter Konsens
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Verteilter Konsens
Typische Rollenverteilung beim Paxos Algorithmus
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Verteilter Konsens
Ein Vorschlag, der von einem Antragsteller gesendet wird, ist ein Tupel (v, n), wobei v ein Wert und n eine Sequenznummer ist.
Wenn es nur einen Akzeptor gibt, der entscheidet, welcher Wert als Konsenswert gewählt wird, dann wäre diese Situation zu einfach. Was passiert, wenn der Akzeptor abstürzt? Um damit umzugehen, gibt es mehrere Akzeptoren.
Ein Vorschlag muss von mindestens einem Akzeptor bestätigt werden, bevor er für die endgültige Entscheidung in Frage kommt.
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Verteilter Konsens
Die Sequenznummer wird verwendet, um zwischen aufeinander folgenden Versuchen der Protokollanwendung zu unterscheiden.
Nach Empfang eines Vorschlags mit einer größeren Sequenznummer von einem gegebenen Prozess, verwerfen Akzeptoren die Vorschläge mit niedrigeren Sequenznummern.
Schließlich akzeptiert ein Akzeptor die Entscheidung der Mehrheit.
Phasen des Paxos Algorithmus
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Verteilter Konsens
Aufforderung zur Annahme eines Eingabewertes
Die endgültige Entscheidung
PD Stefan Bosse - VPP - Verteile Systeme: Synchronisation und Gruppenkommunikation :: Zusammenfassung
Zuverlässige und sichere Synchronisation in asynchronen Systemen mit Fehlern ist theoretisch nicht möglich!