Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

The ultimate consensus ?

Ähnliche Präsentationen


Präsentation zum Thema: "The ultimate consensus ?"—  Präsentation transkript:

1 The ultimate consensus ?
Paxos The ultimate consensus ?

2 Vortragsaufbau Teil I – Einführung Teil 2 – Paxos formal
Funktionsweise des Paxos – Algorithmus Kommunikationsprimitiven Rundenablauf Beispielrunden Teil 2 – Paxos formal Paxos als I/O – Automat Beweis von Validity und Agreement

3 PAXOS Name einer alten griechischen Hochkultur
Leslie Lamport beschrieb den Paxos-Algorithmus als Ergebnis archäologischer Studien dieser Kultur (L.Lamport[98]-„The part-time parliament“) Höchst fehlertoleranter Distributed-Consesus-Algorithmus, der Validity, Agreement und unter Umständen auch Termination garantiert

4 Complete Paxos

5 Basic Paxos Sichert Validity und Agreement
Termination nur unter der Annahme eines einzigen Leaders

6 Externe Primitiven von PAX
NewRound(value) : Startet eine neue Runde RndSuccess(value‘) : Meldet eine Entscheidung Neue Runden können beliebig oft gestartet werden.

7 Validity & Agreement Validity: Trivial
Agreement: Alle per RndSuccess(v) gemeldeten v müssen identisch sein

8 Komponenten von PAX 2 unabhängige Komponenten
Leader-Komponente bietet die externen Primitiven NewRnd(v) und RndSuccess(v‘) Acceptor dient nur interner Kommunikation

9 Interne Kommunikation
Jede Leader-Komponente kommuniziert nur mit Acceptor-Komponenten (auch mit der eigenen)

10 Runden Paxos läuft in Form von „Runden“ aus N x P
Es existiert eine Ordnung auf den Runden: r < r‘ gdw. (r.n < r‘.n) oder ( (r.n = r‘.n) und (r.p < r‘.p) ) Jede Runde r hat maximal 1 zugehörige Leader-Komponente Jede Nachricht zwischen Leader und Acceptors trägt diese Rundennummer r

11 Component states Rot: „Aktuelle Rundennummer“
Grün: „Höchste bekannte erfolgreiche Runde“ Blau: „Value der höchsten bekannten erfolgreichen Runde“

12 NewRound(v) Leader: CurRnd := CurRnd HighestRnd := RndVal := v

13 Collect()^r Leader sendet Collect()^CurRnd an alle Acceptor

14 Join(r‘,v‘)^r Acceptors: IF (r > Commit) Commit = r ; Send(Join, LastR, LastV)^r Leader: IF (r‘ > HighestRnd) HighestRnd = r‘ ; RndVal = v‘

15 Store(val)^r Sobald der Leader von einer Mehrheit der Prozesse Join-Nachrichten bekommen hat, sendet er allen Acceptors ein Store(RndVal)^CurRnd

16 Accept()^r Acceptors: if ( r >= Commit ) Commit = r ; LastR = r ; LastV = val; Send(Accept)^r Leader: Sobald von einer Mehrheit der Acceptors Accept-Nachrichten empfangen wurde, wird RndSuccess(RndVal) ausgeführt.

17 Kompaktes Beispiel

18 Frage Was passiert wenn nun ein andere Leader eine Runde 1‘ mit einem anderen Value v‘ startet ? Angenommen der neue Leader hat eine höhere Prozessnummer, d.h. seine Runde 1‘ ist höher als die Runde 1 des alten Leaders.

19 Kompaktes Beispiel (Forts.)

20 Teil II Paxos als I/O - Automat


Herunterladen ppt "The ultimate consensus ?"

Ähnliche Präsentationen


Google-Anzeigen