20
Paxos The ultimate consensus ?

Paxos

  • Upload
    khuong

  • View
    49

  • Download
    2

Embed Size (px)

DESCRIPTION

Paxos. The ultimate consensus ?. Vortragsaufbau. Teil I – Einführung Funktionsweise des Paxos – Algorithmus Kommunikationsprimitiven Rundenablauf Beispielrunden Teil 2 – Paxos formal Paxos als I/O – Automat Beweis von Validity und Agreement. PAXOS. - PowerPoint PPT Presentation

Citation preview

Page 1: Paxos

PaxosThe ultimate consensus ?

Page 2: Paxos

Vortragsaufbau

Teil I – Einführung• Funktionsweise des Paxos – Algorithmus• Kommunikationsprimitiven• Rundenablauf• Beispielrunden

Teil 2 – Paxos formal• Paxos als I/O – Automat• Beweis von Validity und Agreement

Page 3: Paxos

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

Page 4: Paxos

Complete Paxos

Page 5: Paxos

Basic Paxos

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

Page 6: Paxos

Externe Primitiven von PAX

NewRound(value) : Startet eine neue Runde RndSuccess(value‘) : Meldet eine Entscheidung

Neue Runden können beliebig oft gestartet werden.

Page 7: Paxos

Validity & Agreement

Validity: Trivial Agreement: Alle per RndSuccess(v) gemeldeten v

müssen identisch sein

Page 8: Paxos

Komponenten von PAX

2 unabhängige Komponenten Leader-Komponente bietet die externen

Primitiven NewRnd(v) und RndSuccess(v‘) Acceptor dient nur interner Kommunikation

Page 9: Paxos

Interne Kommunikation

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

Page 10: Paxos

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

Page 11: Paxos

Component states

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

Page 12: Paxos

NewRound(v)

Leader: CurRnd := CurRnd + 1 HighestRnd := 0

RndVal := v

Page 13: Paxos

Collect()^r

Leader sendet Collect()^CurRnd an alle Acceptor

Page 14: Paxos

Join(r‘,v‘)^r

Acceptors: IF (r > Commit) Commit = r ; Send(Join, LastR, LastV)^r

Leader: IF (r‘ > HighestRnd) HighestRnd = r‘ ; RndVal = v‘

Page 15: Paxos

Store(val)^r

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

Page 16: Paxos

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.

Page 17: Paxos

Kompaktes Beispiel

Page 18: Paxos

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.

Page 19: Paxos

Kompaktes Beispiel (Forts.)

Page 20: Paxos

Teil II

Paxos als I/O - Automat