6 ms·
Paxos
- hardwaresofton 5y agoShameless plug of a blog series where I try to list and summarize every paxos variant: https://vadosware.io/post/paxosmon-gotta-concensus-them-all/ https://vadosware.io/post/paxosmon-gotta-concensus-them-all/
- anchpop 5y agoGreat read. One thing you may be interested to know: when do you need paxos or similar, and when can you get away with gossip and CRDTs? the answer is that the set of domains that can be expressed using CRDTs is exactly the set of monotonic logic. It’s a bit tricky to explain precisely in an HN comment but basically, something is monotonic if, once you learn that something is true, nothing can disprove it. For example, let’s say you know of a bunch of nodes on a graph, and you’re slowly learning about edges between the nodes. Once you see a cycle, no amount of new edges will ever “disprove” the cycle. So this means that, if what you care about is cycles, then a CRDT is fine. However, let’s say you’re trying to do disturbed garbage collection of nodes that have no edges leading to them. (And as before you’re slowly learning about new edges.) You can see a node has no edges leading to it that you know of, but if you think a node of garbage-collectible you might always be proved wrong by learning about a new edge. So the problem of distributed garbage collection can’t be solved using CRDTs. There’s a paper on this that you’ll find if you google for the CALM theorem.
- hardwaresofton 5y agoThanks for taking the time to write this out -- I'm digging into the CALM theorem right now to try and get it to sink in. This explanation is fantastic and it makes me feel like I understand the concepts better than I probably do in reality.
- bla3 5y agoThat was an interesting read, thanks!
- hardwaresofton 5y agoThanks! Hope it is a decent introductory reference -- there's so much out there.
- AtlasBarfed 5y agoThis is utterly fantastic stuff. Assuming it's correct, which with Paxos...
- hardwaresofton 5y agoDon't worry you don't have to take my word for it! I left all the links in and copied some PDFs to my domain as well just to make sure people could read the actual papers with the actual insight! :)
- egberts1 5y agoPaxos reminds me of all the TCP variants: Tahoe, Reno, Vegas, Veno, Westwood, Africa, Fast-Reno, Eifel, DOOR, Nice, YeAH, BIC, CUBIC, Illinois, Libra, Hybla, ARENO, Fusion.
- tombert 5y agoI have a bit of a man-crush on Leslie Lamport (and have (unsuccessfully) tried to get TLA+ to be used at every job I've had for the last five years), and I have read through both the original Paxos paper in addition to the Paxos Made Simple paper, and I'm just going to say that I still found it about five times harder to grok than Raft. Honestly the TLA+ specification of Paxos made it click more than the papers for me, but that could just be because of the repeated readings before. It's a beautiful algorithm, but Raft has the advantage of being a lot simpler.
- deleted 5y ago[deleted]
- loquor 5y ago> I have a bit of a man-crush on Leslie Lamport +1 - I really admire him too. I wonder, what makes people like him and Edsger Dijkstra so charismatic in this sense?
- tombert 5y agoI think a lot of it has to do with the fact that he's a very prolific writer and speaker, in addition to contributing to a fairly diverse set of Computer Science fields. I usually enjoy Lamport's speeches, and I have said before that his book Specifying Systems should be mandatory reading for nearly anyone interested in CS, due to how approachable it is, and yet how deep it goes.
- User23 5y agoDijkstra was and Lamport is very good at writing clearly and distinctly. Many people with that level of raw brainpower don't make that effort, so the ones that do are easy to admire and be grateful to.
- uvdn7 5y agoIt's interesting that you mentioned Dijkstra because Lamport in one interview said that the original Paxos paper (The Part-time Parliment) was written in the way it was exactly because he was inspired by Dijkstra in his famous examples such as Sleeping barber, etc.
- throwaway984393 5y agoI think a flow chart would have been easier to understand, or perhaps a video or .gif
- uvdn7 5y agoNo, it doesn't. A video might help you _feel_ like you understand it but it doesn't really help you understand it. That's just not how distributed systems work.
- spicybright 5y agoNow that's a little silly to say, some people grok more from video, some more from articles with pictures.
- jldugger 5y ago> Unmesh Joshi It feels kinda strange to see an author other than Martin Fowler blogging on martinfowler.com....
- DerpyBaby123 5y agoMaybe so, although he has been featuring other authors on his blog regularly now. He works with them to keep the quality high, check them out.
- Jtsummers 5y agoThis came up with another martinfowler.com post, and I checked the past couple years. Roughly half the content is Fowler's, and the other half are other writers (from memory, not recounting it now). I don't know the ratio going back prior years (only checked 2021 and 2020) but I've seen lots of posts by others on his site for the past few years. https://martinfowler.com/articles/patterns-of-distributed-systems/ https://martinfowler.com/articles/patterns-of-distributed-sy... - other content by the same author under title Patterns of Distributed Systems.
- m00x 5y agoMartin Fowler is just a brand now. He's not a spectacular dev that knows all the right ways of doing things, he's just good at finding decent approaches to things and great at writing and communicating them. It's good that he found other writers to keep high quality content. I used to hate people that preached his ways, but I recognized they're often pretty good. People just take them too much as laws and not opinions. People have to remember that he's just human like the rest of us.
- sidcool 5y agoUnmesh Joshi is the Chief Technologist at ThoughtWorks and a colleague of Martin. Martin publishes a lot of posts on behalf of many colleagues to give visibility to tech posts that interest Martin. It's more like a collaboration and acknowledging contributions.
- rdtsc 5y agoIs there a mistake on the second diagram where prepare(1,e) is sent to Byzantium? Wonder if it should be prepare(1,a), since Athens hasn't learned the (1,e) value which only Ephesus and Delphi know about at that point? Otherwise I think it's a pretty good description of Paxos. I like that it walks through a good number of failure scenarios and mentions interesting corner cases such as a lack of an explicit commit in the original papers and that reading also needs to run the full Paxos algorithm.
- Jtsummers 5y agoIt does seem to be a typo, based on the table and text below it.
- daveevad 5y agoMy grey matter is failing me but does anyone remember a rant about 5-10 years ago about developing software in this era that had some punch line about consensus algorithms that went a little like, "so, there's this guy named Diego?" edit: found it https://circleci.com/blog/its-the-future/ https://circleci.com/blog/its-the-future/
- kybernetikos 5y agoI thought you were going to link my favourite humor piece on consensus https://scholar.harvard.edu/files/mickens/files/thesaddestmoment.pdf https://scholar.harvard.edu/files/mickens/files/thesaddestmo...
- daveevad 5y agoThank you so much. This is hilarious. It really is in the same vain of being at whit's end of fundamental truths of space and time. > It may be difficult if you can’t trust anything and the entire concept of happiness is a lie designed by unseen overlords of endless deceptive power.
- lowbloodsugar 5y ago>Why don’t I just use Google’s thing? >-You think that’s going to be around in 6 months? bahaha.
- didip 5y agoThat convo reminded me of Google inside joke: i just want to serve 5TB. https://youtu.be/3t6L-FlfeaI https://youtu.be/3t6L-FlfeaI
- thakoppno 5y agoAs a longtime yahoo, ouch and double-ouch as we’ve always had our own version of this hell, just with different names.
- kkwteh 5y agoPaxos has a reputation of being hard to understand. I was under the impression that Raft was now preferred for distributed consensus. The creators of the Raft algorithm explicitly had understandability as a goal when designing it and called out Paxos as being hard to understand. https://pdos.csail.mit.edu/6.824/papers/raft-extended.pdf https://pdos.csail.mit.edu/6.824/papers/raft-extended.pdf
- solidangle 5y ago(Multi-)Paxos and Raft are incredibly similar. I would even argue that Raft is just a variant of Paxos in the same way that e.g. Fast Paxos and EPaxos are variants of Paxos. Most of the Raft algorithm is identical to the Paxos algorithm. The main difference between the two algorithms is how leadership election works. In my view the main reason why Raft is considered to be simpler is because it was presented in a really clear paper. Paxos becomes equally simple when using a similar representation as used in that paper. See this paper: https://arxiv.org/pdf/2004.05074 https://arxiv.org/pdf/2004.05074
- arsh 5y agoThere are huge gaps between the scientific paper and how you actually operate and scale Paxos from an engineering point of view. See "Paxos Made Live - An Engineering Perspective" by Tushar Chandra et.al. Paxos also has drawbacks like being slow or lacking liveness guarantees. Some alternatives are discussed in https://aws.amazon.com/builders-library/leader-election-in-distributed-systems/ https://aws.amazon.com/builders-library/leader-election-in-d...
- gralx 5y agoLamport has published a TLA+ spec of the Paxos consensus algorithm¹, but none I could find of the Paxos algorithm itself (aka multi-Paxos). In 2016 some academics at Stony Brook University did, along with a machine-checked TLAPS proof, updated in 2019: https://arxiv.org/abs/1606.01387 https://arxiv.org/abs/1606.01387 ¹Paxos consensus refines specs for consensus and voting. See the spec and accompanying material here: https://lamport.azurewebsites.net/tla/paxos-algorithm.html https://lamport.azurewebsites.net/tla/paxos-algorithm.html
- bullen 5y agoI prefer a simpler approach where only 100% read uptime is guaranteed: http://talk.binarytask.com/task?id=4662372011677848884 http://talk.binarytask.com/task?id=4662372011677848884 The way to do this is to asynconously write to all nodes in real-time, here you can try it out: http://root.rupy.se http://root.rupy.se Go to http://root.rupy.se/node?make&info http://root.rupy.se/node?make&info and press Make and you'll se the replication in real-time! (although it's too fast so you'll only see it as being delivered in one go, if you wireshark it you'll see multiple HTTP chunks...) The source is also here: https://github.com/tinspin/rupy https://github.com/tinspin/rupy in Root.java