paxos

64
Paxos 株式会社プリファードインフラストラクチャー 2012 7 5

Upload: preferred-infrastructure-preferred-networks

Post on 22-Nov-2014

7.329 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

  • 1. Paxos 2012 7 5
  • 2. l (@nobu_k)l l Sedue/Bazil l (Jubatus)l l l l l Transactional Information Systems(@) 1 l DB 2
  • 3. l Paxos l Consensus algorithm(protocol)1 l ()l l Consensus l l Paxos l ()Multi-Paxos l l 3
  • 4. PaxosConsensus 4
  • 5. Consensus()l Consensus l 1 l 1 A Red Bull B E 1 C D 5
  • 6. Consensus algorithml (High Availability)l 1 l 6
  • 7. (stateful)l l l State machine replication l 7
  • 8. l l i l i l Consensus l (inconsistent)l Atomic broadcast l l l 8
  • 9. l CC l () l l l l l l l l l 2 l 9
  • 10. Consensusl l CommitAbort l (consistency)l l l l l l 1(1)l l l CC 10
  • 11. 11
  • 12. Consensus probleml l ()l Paxos(Role) l Proposer l l Accepter l l Learner l l l 1 l Proposer&accepter&learner 12
  • 13. l (safety) l Proposer l l 1 l l l l (liveness) l : 13
  • 14. Consensusl l l l l 100% l (fail-stop)l 14
  • 15. l l l l (fail-recover) l (non-Byzantine) A1 () A2 P1 A3 A4 15
  • 16. Synchronous/Asynchronous system modell l lock-free l togetter l Google Spanner http://togetter.com/li/317139l Synchronous system model l l l Asynchronous system model l l 16
  • 17. FLP impossibilityl l 1100% Consensus l Paxosl l 100% l 100% 17
  • 18. Paxos18
  • 19. Paxosl Consensus protocol1 l 1989(1998) l Lamport l l Paxos l (fiction) l Chubbyl l 2PC3PC 19
  • 20. l Paxos made simple l Lamport() l 2001l l l 1Paxos l 1 l State machine replicationi 20
  • 21. l Proposer 1accepter 1l Proposeraccepterl l Proposeraccepterl l Proposeraccepter l accepter l proposer 21
  • 22. accepterl l Proposeraccepter l Accepter(accept) l ()accepter l Quorum l Accepter2() 1() l Accepter1l l Accepterl l P1. Accepter 22
  • 23. Proposerl 1l l Naccepter l M l accpeter A1 3 A2 A5 A3 A4 23
  • 24. proposerl l M=21accepterl l Accepter l ^o^l 2F+1F l 1 A2 A5 l A3 A4 24
  • 25. ID(proposal number)l Accepter l ID l ID l l ID()l l : (ID, ) l ID: (, ID) l IDl l ID l ID 25
  • 26. l v l accepterv l l N/2+1accepteraccepter1 l l (accepter) l 1 l 1 26
  • 27. 1l P2. vID vl l l accepter l P2 27
  • 28. P2l 1accepter l P2l P2a. vaccepter IDvl P1 l P1. Accepter 28
  • 29. P1P2al l l 1accepter l accepter l P1accepter A1 (^o^) A2 A5 A3 A4 29
  • 30. l l l ID l A1 (^o^) A2 A5 A3 A4 30
  • 31. P2al proposerl P2b. vproposer IDv l P2bP2aP2aP2l ProposerP1l P2b 31
  • 32. l l AccepterS l S()accepter l A1 A2 A5 A3 A4 32
  • 33. l accepter l ID l l A1l Paxos made live A2 A5 A3 A4 33
  • 34. P2bl P2c. vIDnproposer accepterS l Saccepter l SaccepterIDn (proposer) l SaccepterIDn IDvl l IDm l ID n(>m)ID m(m) m l m 34
  • 35. Prepare&Promisel ID l l l l Prepare(n) l IDn l l Prepareaccepterl Promise l AccepterPrepare l (ID) 35
  • 36. Acceptl Prepare(n) l l P2c l Accept(n, v) l nPrepareID l vl Accepter l nIDPrepareAccept l PrepareIDAccepted l AcceptIDPrepareID Accept l Prepare 36
  • 37. l P1a. AccepternPrepare IDnl P2c. vIDnproposer accepterS l Saccepter l SaccepterIDn l SaccepterIDn IDv 37
  • 38. Paxosl l l 2 l 1: Prepare&Promise l 2: Accept&Acceptedl PromiseAcceptedl Learner 38
  • 39. Paxos: 1 Preparel ProposerPrepare(n)accepter l NID(proposal number)l AccepterPromise l l 39
  • 40. Paxos: 1 Promisel AccepterPrepare(n)Promise l nPromiseID l (ID) l nil l l ID 40
  • 41. Paxos: 2l Prepare l 1accepter l ID l IDPrepare l l A1 A2 A5 A3 A4 41
  • 42. Paxos: 2 Acceptl ProposeraccepterAccept(n, v) l nPrepareID l v l AcceptaccepterPromise l v l accepter IDv l accepter v l P2c 42
  • 43. Paxos: 2 Acceptedl AccepterAccept(n, v) l nPromiseID l l AccepterPrepareAccept l l l l l 43
  • 44. l FLP impossibility! Paxosl Proposer 2Prepare Proposer1 Accepter Proposer2 Prepare(n) Prepare(n+1) Prepare(n+2) Prepare(n+3) Accept Prepare(n+4) (#^^)l l 44
  • 45. l l Proposer1 l Distinguished proposerl Paxos2 1proposerOKl l 45
  • 46. l Proposer2l 2 l Split brain l 1l Paxos l l 2 l 46
  • 47. ()l l l Learnerl Accepter l l Accepter1l AccepterLearner 47
  • 48. Learner1l Accepterlearner l l IDl accepterlearner A1 OK Accept(n, v) L1 P1 A2 L2 A3 Accepted(n, v) 48
  • 49. Learner2l Distinguished learnerl non-Byzantine l Byzantine-failureL1 A1 Accepted(n, v) L2 Accept(n, v) P1 A2 L1 L3 A3 L4 Accepted(n, v) 49
  • 50. Learnerl l AccepterAccepted l l Learneraccepter l Accepter l Proposerl Distinguished learner l Distinguished learner1SPOF l l (accepter+learner)*distinguished learner l A:5L:525 l A:5DL:2L:3(5+3)*216 50
  • 51. learnerl Distinguished proposer&learner l l ProposerAcceptedaccepter l Learnerl Accepted l 1Paxos 51
  • 52. Paxosl Paxos2 l Prepare&Promise l Accept&Accepted l IDl accepterl learnerl Proposeraccepterlearner l Proposer l Accepter l Learnerl AccepterLearner 52
  • 53. Multi-Paxos53
  • 54. Paxosl Paxos1 l 4l l l Paxos l Cheap Paxos l Fast Paxosl Multi-Paxos 54
  • 55. Multi-Paxosl l Distinguished proposerstable l l l 1Prepare&PromiseAccepted l 2Prepare&Promise l proposer Accept l proposerPrepare l 55
  • 56. 56
  • 57. l Paxosl Consensus protocol l Paper trailConsensus Protocolsl Paxos l Paxos made simplel Paxos l Paxos made livel Paxos l Chubby l PaxosZooKeeperl Paxos l The Part-time Parliament 57
  • 58. Paper TrailConsensus Protocolsl Henry Robinson(@HenryR) l http://the-paper-trail.org/ l ZooKeeper l Clouderal Consensus Protocolsl 2PC3PCPaxosl l PaxosPaxos made simple 58
  • 59. Paxos made simplel l Lamportl l 10l l Proposal/value l l Chosen l proposalvalue l Paxos made live 59
  • 60. Paxos made livel Google l Paxos l l l l (distinguished proposer) l l l l MongoDBoplog too stale l 60
  • 61. Chubby & ZooKeeperl Chubby l GooglePaxos l () l l ZooKeeper l Chubby(Paxos) l ZAB(ZooKeeper Atomic Broadcast) l Atomic Broadcast l Consensus() 61
  • 62. The Part-Time Parliamentl l 1990 l 1998ACM Transactions on Computer Systemsl l l 62
  • 63. l Consensus l l l l Paxos l Paxos made simple l Multi-Paxosl 63
  • 64. Copyright 2006-2012Preferred Infrastructure All Right Reserved.