paxos made simple lamport
play

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


  1. Paxos Made Simple Lamport Thomas Marshall

  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.

  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.

  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.

  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.

  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.

  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.

  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 .

  9. Paxos Example acceptors prepare = 8 proposer prepare = 8 prepare = 8

  10. Paxos Example acceptors highest proposed = 8 ready proposer ready highest proposed = 8 ready highest proposed = 8

  11. Paxos Example acceptors highest proposed = 8 accept = (8, foo) proposer accept = (8, foo) highest proposed = 8 accept = (8, foo) highest proposed = 8

  12. Paxos Example acceptors highest accepted = (8, foo) accepted = (8. foo) proposer accepted = (8. foo) highest accepted = (8, foo) accepted = (8. foo) highest accepted = (8, foo)

  13. Paxos Example leaners success = (8, foo) proposer success = (8, foo) success = (8, foo)

  14. Paxos Example (2) acceptors proposers prepare = (8, A) prepare = (8, A) A prepare = (8, A) B

  15. Paxos Example (2) acceptors proposers ready highest proposed = (8, A) ready A highest proposed = (8, A) ready B highest proposed = (8, A)

  16. Paxos Example (2) acceptors highest proposed = (8, A) prepare = (9, B) A highest proposed = (8, A) prepare = (9, B) B prepare = (9, B) highest proposed = (8, A)

  17. Paxos Example (2) acceptors proposers highest proposed = (8, A) A highest proposed = (9, B) ready B ready highest proposed = (9, B)

  18. Paxos Example (2) acceptors proposers accept = ((8, A), foo) highest proposed = (8, A) accept = ((8, A), foo) A highest proposed = (9, B) accept = ((8, A), foo) B highest proposed = (9, B)

  19. Paxos Example (2) acceptors proposers accepted = ((8, A), foo) highest accepted = ((8, A), foo) A highest proposed = (9, B) B highest proposed = (9, B)

  20. Paxos Example (2) acceptors proposers highest accepted = ((8, A), foo) accept = ((9, B), bar) A highest proposed = accept = ((9, B), bar) (9, B) B accept = ((9, B), bar) highest proposed = (9, B)

  21. Paxos Example (2) acceptors proposers highest accepted = ((8, A), foo) A highest accepted = accepted = ((9, B), bar) ((9, B), bar) B accepted = ((9, B), bar) highest accepted = ((9, B), bar)

  22. Paxos Example (2) acceptors proposers prepare = (10, A) highest accepted = ((8, A), foo) prepare = (10, A) A highest accepted = ((9, B), bar) prepare = (10, A) B highest accepted = ((9, B), bar)

  23. Paxos Example (2) acceptors proposers ready = ((10, A), highest accepted = ((8, A), foo) ((8, A), foo) highest proposed = ready = ((10, A), (10, A) ((9, B), bar) A highest accepted = ((9, B), bar) ready = ((10, A), highest proposed = ((9, B), bar) (10, A) B highest accepted = ((9, B), bar) highest proposed = (10, A)

  24. Paxos Example (2) acceptors proposers accept = ((10, A), highest accepted = bar) ((8, A), foo) highest proposed = accept = ((10, A), (10, A) bar) A highest accepted = ((9, B), bar) highest proposed = accept = ((10, A), (10, A) bar) B highest accepted = ((9, B), bar) highest proposed = (10, A)

  25. Paxos Example (2) acceptors proposers accepted = ((10, A), highest accepted = bar) ((10, A), bar) accepted = ((10, A), bar) A highest accepted = ((10, A), bar) accepted = ((10, A), bar) B highest accepted = ((10, A), bar)

  26. Progress ● You can imagine “dueling” proposers that continually propose higher and higher proposal numbers without any ever being accepted. ● Solution: distinguished proposer.

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend