+ All Categories
Home > Documents > Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in...

Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in...

Date post: 23-Jul-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
26
Paxos Made Simple Lamport Thomas Marshall
Transcript
Page 1: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

Paxos Made Simple

Lamport

Thomas Marshall

Page 2: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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.

Page 3: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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.

Page 4: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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.

Page 5: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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.

Page 6: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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.

Page 7: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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.

Page 8: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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.

Page 9: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

Paxos Example

proposer

acceptors

prepare = 8

prepare = 8

prepare = 8

Page 10: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

Paxos Example

proposer

acceptors

ready

ready

ready

highest proposed = 8

highest proposed = 8

highest proposed = 8

Page 11: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

Paxos Example

proposer

acceptors

accept = (8, foo)

accept = (8, foo)

accept = (8, foo)

highest proposed = 8

highest proposed = 8

highest proposed = 8

Page 12: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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)

Page 13: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

Paxos Example

proposer

leaners

success = (8, foo)

success = (8, foo)

success = (8, foo)

Page 14: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

Paxos Example (2)

proposers

acceptors

prepare = (8, A)

A

B

prepare = (8, A)

prepare = (8, A)

Page 15: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

proposers

acceptors

ready

A

B

ready

ready

highest proposed = (8, A)

highest proposed = (8, A)

highest proposed = (8, A)

Paxos Example (2)

Page 16: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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)

Page 17: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

proposers

acceptors

A

B

highest proposed = (8, A)

highest proposed = (9, B)

highest proposed = (9, B)

ready

ready

Paxos Example (2)

Page 18: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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)

Page 19: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

proposers

acceptors

accepted = ((8, A), foo)

A

B

highest accepted = ((8, A), foo)

highest proposed = (9, B)

highest proposed = (9, B)

Paxos Example (2)

Page 20: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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)

Page 21: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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)

Page 22: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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)

Page 23: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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)

Page 24: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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)

Page 25: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

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)

Page 26: Paxos Made Simple Lamportpavlo/courses/fall2013/static/... · Background Jim Gray proposes 2PC in the 1970s, but it blocks on single node failures. Dale Skeen proposes 3PC in the

Progress

● You can imagine “dueling” proposers that continually propose higher and higher proposal numbers without any ever being accepted.

● Solution: distinguished proposer.


Recommended