Paxos Made Simple Lamport Thomas Marshall Motivation We need a - - PowerPoint PPT Presentation

paxos made simple lamport
SMART_READER_LITE
LIVE PREVIEW

Paxos Made Simple Lamport Thomas Marshall Motivation We need a - - PowerPoint PPT Presentation

Paxos Made Simple Lamport Thomas Marshall Motivation We need a way to maintain consistency in a distributed system in the presence of failures. 2PC works, but can get stuck, so a consensus algorithm is better. Background Jim


slide-1
SLIDE 1

Paxos Made Simple Lamport

Thomas Marshall

slide-2
SLIDE 2

Motivation

  • We need a way to maintain consistency in

a distributed system in the presence of failures.

  • 2PC works, but can get “stuck”, so a

consensus algorithm is better.

slide-3
SLIDE 3

Background

  • Jim Gray proposes 2PC in the 1970s, but

it blocks on single node failures.

  • Dale Skeen proposes 3PC in the 1980s,

but it produces incorrect results in some situations.

  • Leslie Lamport proposes Paxos in 1998;

the original paper describes the ancient Greek civilization on the Paxos island.

slide-4
SLIDE 4

Example

  • Leader election (eg. Mesos and

Zookeeper) – important to only have one leader at a time.

  • Some node(s) propose to be leader, other

nodes can accept or reject.

slide-5
SLIDE 5

Paxos

  • We want to choose a value and have

every node in the cluster agree on the value.

  • Three classes of agents: proposers,

acceptors, learners.

  • Failures are possible, but non-Byzantine.
slide-6
SLIDE 6

Safety Properties

  • Only a value that has been proposed may

be accepted.

  • Only a single value is chosen.
  • An agent never learns that a value has

been chosen unless it actually has been.

slide-7
SLIDE 7

Algorithm

  • A proposer selects a proposal number n

and sends a request to the acceptors.

  • If an acceptor has not already accepted a

proposal with number greater than n, it responds that it can accept this proposal.

slide-8
SLIDE 8

Algorithm (cont)

  • If a proposer receives ready responses

from a majority of acceptors, it sends an accept message.

  • An acceptor that receives an accept

message accepts the proposal unless it has responded to a prepare with a number greater than n.

slide-9
SLIDE 9

Paxos Example

proposer acceptors prepare = 8 prepare = 8 prepare = 8

slide-10
SLIDE 10

Paxos Example

proposer acceptors ready ready ready highest proposed = 8 highest proposed = 8 highest proposed = 8

slide-11
SLIDE 11

Paxos Example

proposer acceptors accept = (8, foo) accept = (8, foo) accept = (8, foo) highest proposed = 8 highest proposed = 8 highest proposed = 8

slide-12
SLIDE 12

Paxos Example

proposer acceptors accepted = (8. foo) highest accepted = (8, foo) highest accepted = (8, foo) highest accepted = (8, foo) accepted = (8. foo) accepted = (8. foo)

slide-13
SLIDE 13

Paxos Example

proposer leaners success = (8, foo) success = (8, foo) success = (8, foo)

slide-14
SLIDE 14

Paxos Example (2)

proposers acceptors prepare = (8, A) A B prepare = (8, A) prepare = (8, A)

slide-15
SLIDE 15

proposers acceptors ready A B ready ready highest proposed = (8, A) highest proposed = (8, A) highest proposed = (8, A)

Paxos Example (2)

slide-16
SLIDE 16

acceptors prepare = (9, B) A B highest proposed = (8, A) highest proposed = (8, A) highest proposed = (8, A) prepare = (9, B) prepare = (9, B)

Paxos Example (2)

slide-17
SLIDE 17

proposers acceptors A B highest proposed = (8, A) highest proposed = (9, B) highest proposed = (9, B) ready ready

Paxos Example (2)

slide-18
SLIDE 18

proposers acceptors accept = ((8, A), foo) A B highest proposed = (8, A) highest proposed = (9, B) highest proposed = (9, B) accept = ((8, A), foo) accept = ((8, A), foo)

Paxos Example (2)

slide-19
SLIDE 19

proposers acceptors accepted = ((8, A), foo) A B highest accepted = ((8, A), foo) highest proposed = (9, B) highest proposed = (9, B)

Paxos Example (2)

slide-20
SLIDE 20

proposers acceptors accept = ((9, B), bar) A B highest accepted = ((8, A), foo) highest proposed = (9, B) highest proposed = (9, B) accept = ((9, B), bar) accept = ((9, B), bar)

Paxos Example (2)

slide-21
SLIDE 21

proposers acceptors A B highest accepted = ((8, A), foo) highest accepted = ((9, B), bar) highest accepted = ((9, B), bar) accepted = ((9, B), bar) accepted = ((9, B), bar)

Paxos Example (2)

slide-22
SLIDE 22

proposers acceptors prepare = (10, A) A B prepare = (10, A) prepare = (10, A) highest accepted = ((8, A), foo) highest accepted = ((9, B), bar) highest accepted = ((9, B), bar)

Paxos Example (2)

slide-23
SLIDE 23

proposers acceptors A B highest accepted = ((8, A), foo) highest proposed = (10, A) highest accepted = ((9, B), bar) highest proposed = (10, A) highest accepted = ((9, B), bar) highest proposed = (10, A) ready = ((10, A), ((9, B), bar) ready = ((10, A), ((9, B), bar) ready = ((10, A), ((8, A), foo)

Paxos Example (2)

slide-24
SLIDE 24

proposers acceptors A B highest accepted = ((8, A), foo) highest proposed = (10, A) highest accepted = ((9, B), bar) highest proposed = (10, A) highest accepted = ((9, B), bar) highest proposed = (10, A) accept = ((10, A), bar) accept = ((10, A), bar) accept = ((10, A), bar)

Paxos Example (2)

slide-25
SLIDE 25

proposers acceptors A B highest accepted = ((10, A), bar) highest accepted = ((10, A), bar) highest accepted = ((10, A), bar) accepted = ((10, A), bar) accepted = ((10, A), bar) accepted = ((10, A), bar)

Paxos Example (2)

slide-26
SLIDE 26

Progress

  • You can imagine “dueling” proposers that

continually propose higher and higher proposal numbers without any ever being accepted.

  • Solution: distinguished proposer.