
Understanding consensus and Paxos in distributed systems - kiyanwang
http://ifeanyi.co/posts/understanding-consensus/
======
udkl
Readers would also be interested in this excellent Raft consensus algorithm
visualization :
[http://thesecretlivesofdata.com/raft/](http://thesecretlivesofdata.com/raft/)

As well as : "Ice cream & distributed systems" :
[https://brooker.co.za/blog/2014/10/25/ice-
cream.html](https://brooker.co.za/blog/2014/10/25/ice-cream.html)

~~~
ansible
Since I think that Raft is relatively easy to grok and implement, what
situations make Paxos a better choice these days?

------
sargun
If you're interested in learning more about consensus algorithms, there's a
great website that describes many of the variants:
[http://paxos.systems/](http://paxos.systems/).

The author also published an excellent paper on the subject called "Paxos Made
Moderately Complex"
([http://www.cs.cornell.edu/courses/cs7412/2011sp/paxos.pdf](http://www.cs.cornell.edu/courses/cs7412/2011sp/paxos.pdf))

------
altendo
I like how the article steps through and examines the key points of Paxos with
a relatable scenario. Still a complicated subject for sure. Makes me want to
go home and implement a working version for myself.

~~~
peterwwillis
If you want a system that's going to "just work" and not be complicated or
potentially error-prone (what happens when too many nodes don't respond?), use
synchronous distributed design. Paxos has its uses, but I would argue they're
few and far between.

~~~
justinsaccount
What is "synchronous distributed design"? Where all nodes have to respond and
the entire system blocks until they do?

~~~
m00dy
2PC is a nice algorithm for it.

~~~
justinsaccount
Right... 2PC is where all nodes have to respond and the entire system blocks
until they do.

------
jaekwon
If you'd like to venture into Byzantine fault tolerant consensus, check out
Tendermint.

draft thesis from Ethan Buchman:
[https://github.com/ebuchman/thesis/blob/master/Buchman_Ethan...](https://github.com/ebuchman/thesis/blob/master/Buchman_Ethan_201604_MAsc.pdf)

[https://github.com/tendermint/tendermint](https://github.com/tendermint/tendermint)

------
jamesblonde
Checkout lecture 10 here. Great stuff, will be an edx course this fall:
[https://www.youtube.com/playlist?list=PL700757A5D4B3F368](https://www.youtube.com/playlist?list=PL700757A5D4B3F368)

------
doug1001
this is a lucid step-by-step explanation of Paxos, which additionally doesn't
seem to require any particular knowledge of consensus algorithms--it provides
the background as needed. Engaging prose as well, eg:

"Note that it is possible for several bids to win an auction round. In fact,
every active bidder must get a bid chosen in order to decide which candidate
won the round. The goal is not agreement on which bidder/bid wins the round
(they all do at some point), rather which candidate wins."

from a guy, who, based on his profile is maybe 20 or 21, which is a little
depressing.

------
federicoponzi
I love this! Thanks

