SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
gen_paxos
             kuenishi
                     
2009/7/3 3rd Erlang‐meeting in
    Shirogane‐takanawa, Tokyo 
                          kuenishi@gmail.com  

         
                                                             
         Erlang         Python
         See id:kuenishi, g:erlang:id:kuenishi, @kuenishi 
                  http://github.com/kuenishi 
                  http://bitbucket.org/kuenishi 


    Recent Activities 
        Yet another TC‐Erlang binding 
                  http://bitbucket.org/kuenishi/yatce/ 
         Mercurial l10n 
                  1.3 has been released on 7/1! 
                  http://bitbucket.org/foozy/mercurial‐translation‐ja/ 




                                                                           2 
Outline
    Introduction 
    Why PAXOS? 
    What is PAXOS? 
    How can we implement PAXOS? 
         Why Erlang? 
    Where is PAXOS? 
    When? 
    Appendix 



    Notice: Basically English, Sometimes Japanese 



                                                      3 
Introduction – what is gen_paxos?
    GENeric PAXOS module written in Erlang 
         Reduction of the cost of re‐invention of wheels. 
         At first, I had aimed to make it sth like ‘behaviour’ 
         http://github.com/kuenishi/gen_paxos 


    Related works (I think not enough)  
         libpaxos 
         gen_leader 

         Why not enough? 




                                                                   4 
Why PAXOS?
     Split Brain 
              Typically, broken switches / wires 
              Both master and slave updates independently




                
                                                           




     ID
       name
   addr
                                  ID
   name
   addr
     0
        Hage
         
                                0
    Hage
            
     1
        hoge
         
                                1
    hoge
            
     …
         …
      …
                                    …
     …
         …


                     Replication Master
     Replication Slave

                                 Data Inconsistency! Ouch!
                                                                                         5 
Why PAXOS? – cont’d
    Split Brain Problem 
         Separate actors can’t coordinate 
             Lacking coordination ‐> Multi‐master 
             Multi‐master ‐> Data Inconsistency 
             Inconsistency ‐> Tragedy 
         Typically, BigTable solely depends upon Chubby[2] 
               BigTable’s Master Election, so on. 


    Byzantine Generals Problem 
         A faulty actor who lies destroys consistency 
         I don’t know current implementation of gen_paxos solves 
          this problem – not in scope 
         See Byzantine PAXOS in Wikpedia[6]



                                                                     6 
What is PAXOS?
    Distributed Consensus/Coordination Algorithm 
         Masterless (no SPOF) 
         Robust to split brain environment such as network 
          separation 
         Proved to converge within infinite time period[9] 
         Works iff majority of fixed group of actors is alive 
          and communicable 




                                                                  7 
What is PAXOS? – Example
  Two phase election – phase 1 
    Larger n is prior 

                              21:32
   21:36
                                              
            

         n=3


   21:35         n=2
                JK
                   n=1

 21:36                      21:38
                orz                     orz
                                                  8 
What is PAXOS? – Example
  Two phase election – phase 2  
     confirmation 
                            n=4
 21:43
                                         21:43
                                         …
21:41                                                      
                proposer
        
                                                   21:42
                                                       


            21:44
                                           21:43

                                                               9 
What is PAXOS? – data model in gen_paxos
    Actors 
       n processors with processor ID 

    Data 
       Instance ID (Subject) 
       Proposal ID (N) 
       Proposal itself (Value) 

  N should be unique 
                                    ID
    1
   2
    3
    4
    5
  At first, V differs 
                                   n(1)
   1
   2
    3
    4
    5
       later V converges
                                   n(2)
   6
   7
    8
    9
    10
                                   n(3)
 11
    12
   13
   14
   15
                                   n(4)
 16
    17
   18
   19
   20
                                   n(…)
   …
   …
    ..
   …
    ..
                                                                   10 
What is PAXOS? – details in gen_paxos
    Basic sequence of Each actor 

    Prepare Phase 
         If Prepare comes, agree or disagree  be Acceptor  
         If Prepare doesn’t come, send Prepare  be Proposer  
         If majority of group agrees Prepare, send Propose 
         If timeout, increase n and restart Prepare phase 
    Propose Phase 
         Acceptor – agree to Propose (ignoring lower n) 
         Proposer – decided if majority agrees 
         If timeout, increase n and restart Prepare phase 
    Commit Phase 
         Send the committed Value again to notify


                                                                 11 
What is PAXOS? – details in gen_paxos
    Basic sequence of Each actor 

    Prepare Phase 
         Prepare                                 Acceptor  
         Prepare              Prepare           Proposer  
                   Prepare                  Propose 
                        n                
    Propose Phase 
         Acceptor ‐ Propose                  n                 
         Proposer ‐                            
                       n           Prepare Phase          
    Commit Phase 
                               


                                                                   12 
What is PAXOS? – details in gen_paxos
    Basic sequence of Each actor 

    Prepare Phase 
         Prepare                                 Acceptor  
         Prepare              Prepare           Proposer  
                   Prepare                  Propose 
                        n                
    Propose Phase 
         Acceptor ‐ Propose                    
         Proposer ‐                            
                       n           Prepare Phase          
    Commit Phase 
                               


                                                               13 
How can we implement PAXOS?




1. Make a State Diagram 
2. Write an FSM code 




                               14 
How can we implement PAXOS? (1/2)

1. Make a State Diagram 
                                                    [State]




                                           {Action, NextState}
                    [Event]

                               Define: 
                               • {State, Event} ‐> {NextState, Action}


                                                                    15 
How can we implement PAXOS? (2/2)

2.    Write an FSM code 

                         Define a set of 
                         Module:State/2 

                         Module:State(Event, Data)  
                            ‐> {next_state, 
                                NextState, NextData} 

                         (See paxos_fsm.erl for details)




                                                           16 
Process Architecture of a Node (gen_paxos.erl)
    A‐little‐bit load balancing 
    Not pursuing consensus performance 
    Thinkin’bout Chubby[5] (no dynamic node addition/removal) 


                       gen_fsm:start_link/4                  gen_fsm starts for
                       Creates gen_fsm after                    each subject
                       receiving message 

Sends message after 
balancing with                                             paxos_fsm(Key)
erlang:phash(Key,3)    coordinator0
                       coordinator1
                        coordinator2
                                                puts the result
                                                into process
                       gen_paxos.erl            dictionary after
                                                receiving message
      User
      process
                                                       Sends message 
                                                                     after getting 
     {Key, Value} 
                                                                     consensus 
                                                                                  17 
Messaging between nodes (paxos_fsm.erl)
    FSMs talk each other by sending events with globalname() 
         globalname() = {global, GlobalName}
         GlobalName is for first argument of gen_fsm:start_link/4 
    gen_fsm:send_event/2 sends Events to remote nodes 
         gen_fsm:send_event({global, GlobalName}, Event). – that’s all. 
    Anyway, no need to design application protocol, object 
     serialization, nor GoF ‘State, Observer’ pattern! That’s 
     WHY ERLANG!! 
                                               gen_fsm:send_event/2


             nodeA
                   nodeB
                           nodeC

          paxos_fsm
              paxos_fsm
                     paxos_fsm

          coordinators
           coordinators
                 coordinators

          User                   User                          User
          process
               process
                      process

                                                                                18 
Sample code – paxos_fsm.erl




  • acceptor      {prepare, {S,N,V,From}}   N
  • prepare_result
  • N V        acceptor




                                                19 
Where is PAXOS?




                   20 
Where is PAXOS?
  Paxon Isles in Aegean Sea[1] 
    ‘the part‐time parliament’[3]




                                      21 
Where is PAXOS? cont’d
    Looks so nice place to visit!




                                      22 
When?? ‐ References
    [1]PAXOS island 
          http://www.paxos‐greece.com/ 
    [2]Google, The Chubby Paper, 2006. 
    [3]Leslie Lamport, `The Part‐Time Parliament’, ACM Trans. Comput. Syst. 
     Volume 16 ,  Issue 2  (May 1998) , pp. 133 – 169. 
    [4]Leslie Lamport, `Paxos Made Simple’, SIGACT News, Vol. 32, No. 4. 
     (December 2001), pp. 51‐58. 
    [5]T Chandra et al., `Paxos made live: an engineering perspective’, PODC 
     '07, ACM Press, 2007, pp. 398‐407. 
    [6]Wikipedia, `Paxos_algorithm’,  
          http://en.wikipedia.org/wiki/Paxos_algorithm 
          1990                               
    [7]Lamport’s patent            M$…  
          http://www.j‐tokkyo.com/2005/G06F/JP2005‐196763.shtml 
    [8]David Mazieres, `Paxos Made Practical’, tech report, 2007. 
          http://net.pku.edu.cn/~course/cs501/2008/reading.html 
    [9]Dwork, Cynthia et al., `Consensus in the presence of partial 
     synchrony’, J. ACM 35‐2, pp. 288—323, 1988.  
    Other implementations 
          single‐phase majority‐voting is used in distributed memory, distributed CPU; 
           rather hardware. 
          libpaxos 


                                                                                           23 
  Any Questions?




              http://creativecommons.org/licenses/by‐sa/2.1/jp/

                                                               24 
appendix
    Known Bugs
           FAQ
             
 State Diagram
Appendix – Known Bug(s)
                            
                                    
                            


                                            
                    

                                 

                                         

                         





 
            


                                                 26 
Appendix – FAQ
                                       

                            

                                    
      
                                            


 
          

                                
                                                    
                                                        
      
                                            


 
                           
                 ?DEFAULT_TIMEOUT
                                            #state
              
                                                             27 
Appendix – State Diagram
                                      
                       


                                  
                                       




              
           
                   
                       
           




                      




                      




                      



                              
                   


                  
                       
               
                   
       
          


                                                                                          


                                                                  


                      
                       
                       
           




                                                      




                      
                       




                                                                                              28 
  Thanks! 




              http://creativecommons.org/licenses/by‐sa/2.1/jp/

                                                               29 

Más contenido relacionado

Destacado

scalaliftoff2009.pdf
scalaliftoff2009.pdfscalaliftoff2009.pdf
scalaliftoff2009.pdfHiroshi Ono
 
nodalities_issue7.pdf
nodalities_issue7.pdfnodalities_issue7.pdf
nodalities_issue7.pdfHiroshi Ono
 
A Curious Course on Coroutines and Concurrency
A Curious Course on Coroutines and ConcurrencyA Curious Course on Coroutines and Concurrency
A Curious Course on Coroutines and ConcurrencyHiroshi Ono
 
program_draft3.pdf
program_draft3.pdfprogram_draft3.pdf
program_draft3.pdfHiroshi Ono
 
EventDrivenArchitecture
EventDrivenArchitectureEventDrivenArchitecture
EventDrivenArchitectureHiroshi Ono
 
Gamecenter概説
Gamecenter概説Gamecenter概説
Gamecenter概説Hiroshi Ono
 
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdfstateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdfHiroshi Ono
 
Voltdb - wikipedia
Voltdb - wikipediaVoltdb - wikipedia
Voltdb - wikipediaHiroshi Ono
 

Destacado (9)

scalaliftoff2009.pdf
scalaliftoff2009.pdfscalaliftoff2009.pdf
scalaliftoff2009.pdf
 
camel-scala.pdf
camel-scala.pdfcamel-scala.pdf
camel-scala.pdf
 
nodalities_issue7.pdf
nodalities_issue7.pdfnodalities_issue7.pdf
nodalities_issue7.pdf
 
A Curious Course on Coroutines and Concurrency
A Curious Course on Coroutines and ConcurrencyA Curious Course on Coroutines and Concurrency
A Curious Course on Coroutines and Concurrency
 
program_draft3.pdf
program_draft3.pdfprogram_draft3.pdf
program_draft3.pdf
 
EventDrivenArchitecture
EventDrivenArchitectureEventDrivenArchitecture
EventDrivenArchitecture
 
Gamecenter概説
Gamecenter概説Gamecenter概説
Gamecenter概説
 
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdfstateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf
 
Voltdb - wikipedia
Voltdb - wikipediaVoltdb - wikipedia
Voltdb - wikipedia
 

Más de Hiroshi Ono

pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfHiroshi Ono
 
SACSIS2009_TCP.pdf
SACSIS2009_TCP.pdfSACSIS2009_TCP.pdf
SACSIS2009_TCP.pdfHiroshi Ono
 
program_draft3.pdf
program_draft3.pdfprogram_draft3.pdf
program_draft3.pdfHiroshi Ono
 
nodalities_issue7.pdf
nodalities_issue7.pdfnodalities_issue7.pdf
nodalities_issue7.pdfHiroshi Ono
 
kademlia-1227143905867010-8.pdf
kademlia-1227143905867010-8.pdfkademlia-1227143905867010-8.pdf
kademlia-1227143905867010-8.pdfHiroshi Ono
 
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfHiroshi Ono
 
downey08semaphores.pdf
downey08semaphores.pdfdowney08semaphores.pdf
downey08semaphores.pdfHiroshi Ono
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
TwitterOct2008.pdf
TwitterOct2008.pdfTwitterOct2008.pdf
TwitterOct2008.pdfHiroshi Ono
 
pamphlet_honsyou.pdf
pamphlet_honsyou.pdfpamphlet_honsyou.pdf
pamphlet_honsyou.pdfHiroshi Ono
 
program_draft3.pdf
program_draft3.pdfprogram_draft3.pdf
program_draft3.pdfHiroshi Ono
 
nodalities_issue7.pdf
nodalities_issue7.pdfnodalities_issue7.pdf
nodalities_issue7.pdfHiroshi Ono
 
genpaxospublic-090703114743-phpapp01.pdf
genpaxospublic-090703114743-phpapp01.pdfgenpaxospublic-090703114743-phpapp01.pdf
genpaxospublic-090703114743-phpapp01.pdfHiroshi Ono
 
kademlia-1227143905867010-8.pdf
kademlia-1227143905867010-8.pdfkademlia-1227143905867010-8.pdf
kademlia-1227143905867010-8.pdfHiroshi Ono
 
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfHiroshi Ono
 

Más de Hiroshi Ono (16)

pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
 
SACSIS2009_TCP.pdf
SACSIS2009_TCP.pdfSACSIS2009_TCP.pdf
SACSIS2009_TCP.pdf
 
program_draft3.pdf
program_draft3.pdfprogram_draft3.pdf
program_draft3.pdf
 
nodalities_issue7.pdf
nodalities_issue7.pdfnodalities_issue7.pdf
nodalities_issue7.pdf
 
kademlia-1227143905867010-8.pdf
kademlia-1227143905867010-8.pdfkademlia-1227143905867010-8.pdf
kademlia-1227143905867010-8.pdf
 
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
 
downey08semaphores.pdf
downey08semaphores.pdfdowney08semaphores.pdf
downey08semaphores.pdf
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
TwitterOct2008.pdf
TwitterOct2008.pdfTwitterOct2008.pdf
TwitterOct2008.pdf
 
pamphlet_honsyou.pdf
pamphlet_honsyou.pdfpamphlet_honsyou.pdf
pamphlet_honsyou.pdf
 
camel-scala.pdf
camel-scala.pdfcamel-scala.pdf
camel-scala.pdf
 
program_draft3.pdf
program_draft3.pdfprogram_draft3.pdf
program_draft3.pdf
 
nodalities_issue7.pdf
nodalities_issue7.pdfnodalities_issue7.pdf
nodalities_issue7.pdf
 
genpaxospublic-090703114743-phpapp01.pdf
genpaxospublic-090703114743-phpapp01.pdfgenpaxospublic-090703114743-phpapp01.pdf
genpaxospublic-090703114743-phpapp01.pdf
 
kademlia-1227143905867010-8.pdf
kademlia-1227143905867010-8.pdfkademlia-1227143905867010-8.pdf
kademlia-1227143905867010-8.pdf
 
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
 

genpaxospublic-090703114743-phpapp01.pdf

  • 1. gen_paxos kuenishi   2009/7/3 3rd Erlang‐meeting in  Shirogane‐takanawa, Tokyo 
  • 2.   kuenishi@gmail.com         Erlang Python   See id:kuenishi, g:erlang:id:kuenishi, @kuenishi    http://github.com/kuenishi    http://bitbucket.org/kuenishi    Recent Activities    Yet another TC‐Erlang binding    http://bitbucket.org/kuenishi/yatce/    Mercurial l10n    1.3 has been released on 7/1!    http://bitbucket.org/foozy/mercurial‐translation‐ja/  2 
  • 3. Outline   Introduction    Why PAXOS?    What is PAXOS?    How can we implement PAXOS?    Why Erlang?    Where is PAXOS?    When?    Appendix    Notice: Basically English, Sometimes Japanese  3 
  • 4. Introduction – what is gen_paxos?   GENeric PAXOS module written in Erlang    Reduction of the cost of re‐invention of wheels.    At first, I had aimed to make it sth like ‘behaviour’    http://github.com/kuenishi/gen_paxos    Related works (I think not enough)     libpaxos    gen_leader    Why not enough?  4 
  • 5. Why PAXOS?   Split Brain    Typically, broken switches / wires    Both master and slave updates independently ID name addr ID name addr 0 Hage 0 Hage 1 hoge 1 hoge … … … … … … Replication Master Replication Slave Data Inconsistency! Ouch! 5 
  • 6. Why PAXOS? – cont’d   Split Brain Problem    Separate actors can’t coordinate    Lacking coordination ‐> Multi‐master    Multi‐master ‐> Data Inconsistency    Inconsistency ‐> Tragedy    Typically, BigTable solely depends upon Chubby[2]    BigTable’s Master Election, so on.    Byzantine Generals Problem    A faulty actor who lies destroys consistency    I don’t know current implementation of gen_paxos solves  this problem – not in scope    See Byzantine PAXOS in Wikpedia[6] 6 
  • 7. What is PAXOS?   Distributed Consensus/Coordination Algorithm    Masterless (no SPOF)    Robust to split brain environment such as network  separation    Proved to converge within infinite time period[9]    Works iff majority of fixed group of actors is alive  and communicable  7 
  • 8. What is PAXOS? – Example   Two phase election – phase 1    Larger n is prior  21:32 21:36 n=3 21:35 n=2 JK n=1 21:36 21:38 orz orz 8 
  • 9. What is PAXOS? – Example   Two phase election – phase 2     confirmation  n=4 21:43 21:43 … 21:41 proposer 21:42 21:44 21:43 9 
  • 10. What is PAXOS? – data model in gen_paxos   Actors    n processors with processor ID    Data    Instance ID (Subject)    Proposal ID (N)    Proposal itself (Value)    N should be unique  ID 1 2 3 4 5   At first, V differs  n(1) 1 2 3 4 5   later V converges n(2) 6 7 8 9 10 n(3) 11 12 13 14 15 n(4) 16 17 18 19 20 n(…) … … .. … .. 10 
  • 11. What is PAXOS? – details in gen_paxos   Basic sequence of Each actor    Prepare Phase    If Prepare comes, agree or disagree  be Acceptor     If Prepare doesn’t come, send Prepare  be Proposer     If majority of group agrees Prepare, send Propose    If timeout, increase n and restart Prepare phase    Propose Phase    Acceptor – agree to Propose (ignoring lower n)    Proposer – decided if majority agrees    If timeout, increase n and restart Prepare phase    Commit Phase    Send the committed Value again to notify 11 
  • 12. What is PAXOS? – details in gen_paxos   Basic sequence of Each actor    Prepare Phase    Prepare Acceptor     Prepare Prepare Proposer     Prepare Propose    n     Propose Phase    Acceptor ‐ Propose n     Proposer ‐      n Prepare Phase     Commit Phase    12 
  • 13. What is PAXOS? – details in gen_paxos   Basic sequence of Each actor    Prepare Phase    Prepare Acceptor     Prepare Prepare Proposer     Prepare Propose    n     Propose Phase    Acceptor ‐ Propose     Proposer ‐      n Prepare Phase     Commit Phase    13 
  • 15. How can we implement PAXOS? (1/2) 1. Make a State Diagram  [State] {Action, NextState} [Event] Define:  • {State, Event} ‐> {NextState, Action} 15 
  • 16. How can we implement PAXOS? (2/2) 2.  Write an FSM code  Define a set of  Module:State/2  Module:State(Event, Data)      ‐> {next_state,   NextState, NextData}  (See paxos_fsm.erl for details) 16 
  • 17. Process Architecture of a Node (gen_paxos.erl)   A‐little‐bit load balancing    Not pursuing consensus performance    Thinkin’bout Chubby[5] (no dynamic node addition/removal)  gen_fsm:start_link/4 gen_fsm starts for Creates gen_fsm after  each subject receiving message  Sends message after  balancing with  paxos_fsm(Key) erlang:phash(Key,3) coordinator0 coordinator1 coordinator2 puts the result into process gen_paxos.erl dictionary after receiving message User process Sends message  after getting  {Key, Value}  consensus  17 
  • 18. Messaging between nodes (paxos_fsm.erl)   FSMs talk each other by sending events with globalname()    globalname() = {global, GlobalName}   GlobalName is for first argument of gen_fsm:start_link/4    gen_fsm:send_event/2 sends Events to remote nodes    gen_fsm:send_event({global, GlobalName}, Event). – that’s all.    Anyway, no need to design application protocol, object  serialization, nor GoF ‘State, Observer’ pattern! That’s  WHY ERLANG!!  gen_fsm:send_event/2 nodeA nodeB nodeC paxos_fsm paxos_fsm paxos_fsm coordinators coordinators coordinators User User User process process process 18 
  • 19. Sample code – paxos_fsm.erl • acceptor {prepare, {S,N,V,From}} N • prepare_result • N V acceptor 19 
  • 21. Where is PAXOS?   Paxon Isles in Aegean Sea[1]    ‘the part‐time parliament’[3] 21 
  • 22. Where is PAXOS? cont’d   Looks so nice place to visit! 22 
  • 23. When?? ‐ References   [1]PAXOS island    http://www.paxos‐greece.com/    [2]Google, The Chubby Paper, 2006.    [3]Leslie Lamport, `The Part‐Time Parliament’, ACM Trans. Comput. Syst.  Volume 16 ,  Issue 2  (May 1998) , pp. 133 – 169.    [4]Leslie Lamport, `Paxos Made Simple’, SIGACT News, Vol. 32, No. 4.  (December 2001), pp. 51‐58.    [5]T Chandra et al., `Paxos made live: an engineering perspective’, PODC  '07, ACM Press, 2007, pp. 398‐407.    [6]Wikipedia, `Paxos_algorithm’,     http://en.wikipedia.org/wiki/Paxos_algorithm    1990     [7]Lamport’s patent  M$…     http://www.j‐tokkyo.com/2005/G06F/JP2005‐196763.shtml    [8]David Mazieres, `Paxos Made Practical’, tech report, 2007.    http://net.pku.edu.cn/~course/cs501/2008/reading.html    [9]Dwork, Cynthia et al., `Consensus in the presence of partial  synchrony’, J. ACM 35‐2, pp. 288—323, 1988.     Other implementations    single‐phase majority‐voting is used in distributed memory, distributed CPU;  rather hardware.    libpaxos  23 
  • 24.   Any Questions? http://creativecommons.org/licenses/by‐sa/2.1/jp/ 24 
  • 25. appendix Known Bugs FAQ State Diagram
  • 26. Appendix – Known Bug(s)           
 
 
 26 
  • 27. Appendix – FAQ   
 
     
           ?DEFAULT_TIMEOUT #state 27 
  • 29.   Thanks!  http://creativecommons.org/licenses/by‐sa/2.1/jp/ 29