- etcetera08
- Sep 11, 2008
-
|
1. Get to know your CAP theorem. I'd start with http://www.julianbrowne.com/article/viewer/brewers-cap-theorem and then You Can't Sacrifice Partition Tolerance. I also made my own thing on it at http://learnyousomeerlang.com/distribunomicon#my-other-cap-is-a-theorem
2. Read and try to understand Amazon's Dynamo Paper(PDF). It's a very good read and behind a shitload of systems' architecture now.
3. Read on "The fallacies of distributed computing" (I've made a write up on them vs. Erlang).
4. Then, I’d direct people to try and understand vector clocks/Lamport clocks. I suggest reading Basho's Why Vector Clocks are Easy followed by their post titled Why Vector Clocks are Hard. I then explain them very simply in my project.log. Get to read the papers if you want, there's a shitload of them.
5. Check out PACELC. It's a very simple extension to CAP that basically says that PAC is “during a (P)artition, do you pick (A)vailability or (C)onsistency”, and “(E)lse, do you pick (L)atency or (C)onsistency”. For this one, http://www.slideshare.net/abadid/cap-pacelc-and-determinism and http://dbmsmusings.blogspot.ca/2010/04/problems-with-cap-and-yahoos-little.html are nice.
6. Take a look at Two-Phase Commits and Three-Phase Commit protocol. You could also look into other schemes for replication such as chain replication and whatnot.
7. Consensus algorithms. Three main ones here, in order of how easy they are to understand: Raft, ZAB, and Paxos (notoriously hard to understand). They guarantee consistency but with failed nodes.
Oh and all around that, go read Aphyr's blog, particularly "The trouble with timestamps" and the "Call me maybe" series.
(Sorry this isn't directly about Erlang, but I saw it pop on Twitter as I was reading this thread: http://www.infoq.com/presentations/raft)
|
#
¿
Dec 5, 2013 05:31
|
|
- Adbot
-
ADBOT LOVES YOU
|
|
#
¿
May 14, 2024 00:57
|
|