From 573e592872d7eca26113e425d51c29a0c9d06395 Mon Sep 17 00:00:00 2001 From: Kenny Ballou Date: Thu, 1 Feb 2018 17:10:47 -0700 Subject: distributed-systems post conversion --- content/blog/distributed_systems.markdown | 188 ------------------------------ posts/distributed-systems.org | 158 +++++++++++++++++++++++++ 2 files changed, 158 insertions(+), 188 deletions(-) delete mode 100644 content/blog/distributed_systems.markdown create mode 100644 posts/distributed-systems.org diff --git a/content/blog/distributed_systems.markdown b/content/blog/distributed_systems.markdown deleted file mode 100644 index 27705ea..0000000 --- a/content/blog/distributed_systems.markdown +++ /dev/null @@ -1,188 +0,0 @@ ---- -title: "Yet Another Page on Readings in Distributed Systems" -description: "My own list of links, articles, papers, etc. I enjoyed reading -about distributed systems" -tags: - - "Distributed Systems" - - "Readings" -date: "2015-05-08" -updated: "2015-05-12" -categories: - - "Distributed Systems" -slug: "readings-in-distributed-systems" ---- - -> "Distributed systems are hard." --Everyone. - -This page is dedicated to general discussion of distributed systems, references -to general overviews and the like. Distributed systems are difficult and even -the well established ones aren't [bulletproof][1]. How can we make this better? -As SysAdmins? As Developers? First we can attempt to understand some of the -issues related to designing and implementing distributed systems. Then we can -throw all that out and figure out what *really* happens to distributed systems. - -## Recommended Reading ## - -### General ### - -* [Fallacies of Distributed Computing][2] - -* [CAP Theorem][3] - - - [LYSEFGG: Distribunomicon: My other cap is a theorem][4] - - - For a more entertaining introduction to CAP, Hebert's ''Learn You Some - Erlang for Great Good'' has a really good subsection on the topic that - includes the zombie apocalypse and some introduction to how a blend - between AP and CP systems can be achieved. - - - [CAP Theorem Proof][5] - - - [You can't sacrifice partition tolerance][6] - -* [Consistency Model][7] - - - [List of Consistency Models][8] - - - [Linearizability][9] - - - [Linearizability versus Serializability][10] - - - [Eventual Consistency][11] - -* [Paxos][12] - - - [Understanding Paxos (Part 1)][13] - - - [Lessons learned from implementing Paxos (2013)][34] - -* [Vector Clock][14] - -* [Split-Brain][15] - -* [Network Partitions][16] - -* [Distributed Systems and the End of the API][17] - -* [The Log][18]: What every software engineer should know about real time - data's unifying abstraction - -The [Jepsen][19] "Call me maybe" articles are really good, well written essays -on topics and technologies related to distributed systems. - -Introductory post to the "Call me maybe" series: - -* [Call me maybe][20] - -Here are some personal recommendations: - -* [The Network is Reliable][1] - -* [Strong Consistency Models][21] - -* [Asynchronous Replication with Failover][22] - -Really anything from Ferd Herbert is good. Particularly, the first and last -chapters of [Erlang In Anger][30] which includes longer essays from his blog -posts. - -* [Queues Don't Fix Overload][31] - -* [It's About the Guarantees][32] - -* [Lessons Learned while Working on Large-Scale Server Software][33] - -### General Networking ### - -* [TCP incast][29] - -### Hadoop ecosystem ### - -This link is more specific to HDFS and is a rather limited experiment but -nonetheless a good read to further understand partition issues that can arise -in Hadoop systems: - -* [Partition Tolerance in HDFS][23] - -More links from the [Jepsen essays][19]: - -* [Call me maybe: Zookeeper][24] - -* [Call me maybe: Kafka][25] - -* [Call me maybe: Cassandra][26] - -### Databases ### - -- [Wikipedia ACID][27] - -- [Call me maybe: Postgres][28] - -[1]: http://aphyr.com/posts/288-the-network-is-reliable - -[2]: http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing - -[3]: http://en.wikipedia.org/wiki/CAP_theorem - -[4]: http://learnyousomeerlang.com/distribunomicon#my-other-cap-is-a-theorem - -[5]: http://lpd.epfl.ch/sgilbert/pubs/BrewersConjecture-SigAct.pdf - -[6]: http://codahale.com/you-cant-sacrifice-partition-tolerance/ - -[7]: http://en.wikipedia.org/wiki/Consistency_model - -[8]: http://en.wikipedia.org/wiki/Category:Consistency_models - -[9]: http://en.wikipedia.org/wiki/Linearizability - -[10]: http://www.bailis.org/blog/linearizability-versus-serializability/ - -[11]: http://en.wikipedia.org/wiki/Eventual_consistency - -[12]: http://en.wikipedia.org/wiki/Paxos_(computer_science) - -[13]: http://distributedthoughts.wordpress.com/2013/09/22/understanding-paxos-part-1/ - -[14]: http://en.wikipedia.org/wiki/Vector_clock - -[15]: http://en.wikipedia.org/wiki/Split-brain_(computing) - -[16]: http://en.wikipedia.org/wiki/Network_partitioning - -[17]: https://speakerdeck.com/cemerick/distributed-systems-and-the-end-of-the-api - -[18]: http://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying - -[19]: http://aphyr.com/tags/jepsen - -[20]: http://aphyr.com/posts/281-call-me-maybe - -[21]: http://aphyr.com/posts/313-strong-consistency-models - -[22]: http://aphyr.com/posts/287-asynchronous-replication-with-failover - -[23]: https://www.growse.com/2014/07/18/partition-tolerance-and-hadoop-part-1-hdfs/ - -[24]: http://aphyr.com/posts/291-call-me-maybe-zookeeper - -[25]: http://aphyr.com/posts/293-call-me-maybe-kafka - -[26]: http://aphyr.com/posts/294-call-me-maybe-cassandra - -[27]: http://en.wikipedia.org/wiki/ACID - -[28]: http://aphyr.com/posts/282-call-me-maybe-postgres - -[29]: http://www.snookles.com/slf-blog/2012/01/05/tcp-incast-what-is-it/ - -[30]: http://www.erlang-in-anger.com/ - -[31]: http://ferd.ca/queues-don-t-fix-overload.html - -[32]: http://ferd.ca/it-s-about-the-guarantees.html - -[33]: http://ferd.ca/lessons-learned-while-working-on-large-scale-server-software.html - -[34]: http://blog.willportnoy.com/2012/06/lessons-learned-from-paxos.html diff --git a/posts/distributed-systems.org b/posts/distributed-systems.org new file mode 100644 index 0000000..a3589de --- /dev/null +++ b/posts/distributed-systems.org @@ -0,0 +1,158 @@ +#+TITLE: Yet Another Page on Readings in Distributed Systems +#+DESCRIPTION: My own list of links, articles, paper, etc. I enjoyed reading about distributed systems +#+TAGS: Distributed Systems +#+TAGS: Readings +#+DATE: 2015-05-08 +#+UPDATED: 2015-05-12 +#+SLUG: readings-in-distributed-systems +#+LINK: aphyr-post-network-reliable http://aphyr.com/posts/288-the-network-is-reliable +#+LINK: wiki-fallacies-of-distributed-computing http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing +#+LINK: wiki-cap-theorem http://en.wikipedia.org/wiki/CAP_theorem +#+LINK: lysefgg-cap http://learnyousomeerlang.com/distribunomicon#my-other-cap-is-a-theorem +#+LINK: cap-paper http://lpd.epfl.ch/sgilbert/pubs/BrewersConjecture-SigAct.pdf +#+LINK: codehale-cant-partition-tolerance http://codahale.com/you-cant-sacrifice-partition-tolerance/ +#+LINK: wiki-consistency-model http://en.wikipedia.org/wiki/Consistency_model +#+LINK: wiki-list-consistency-models http://en.wikipedia.org/wiki/Category:Consistency_models +#+LINK: wiki-linearizability http://en.wikipedia.org/wiki/Linearizability +#+LINK: bailis-linear-vs-serial http://www.bailis.org/blog/linearizability-versus-serializability/ +#+LINK: wiki-eventual-consistency http://en.wikipedia.org/wiki/Eventual_consistency +#+LINK: wiki-paxos http://en.wikipedia.org/wiki/Paxos_(computer_science) +#+LINK: distributed-thoughts-understanding-paxos http://distributedthoughts.wordpress.com/2013/09/22/understanding-paxos-part-1/ +#+LINK: willportnoy-lessons-paxos http://blog.willportnoy.com/2012/06/lessons-learned-from-paxos.html +#+LINK: wiki-vector-clock http://en.wikipedia.org/wiki/Vector_clock +#+LINK: wiki-split-brain http://en.wikipedia.org/wiki/Split-brain_(computing) +#+LINK: wiki-network-partitions http://en.wikipedia.org/wiki/Network_partitioning +#+LINK: cemerick-ds-end-api https://speakerdeck.com/cemerick/distributed-systems-and-the-end-of-the-api +#+LINK: linkedin-blog-the-log http://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying +#+LINK: aphyr-jepsen-tag http://aphyr.com/tags/jepsen +#+LINK: aphyr-jepsen-call-me-maybe http://aphyr.com/posts/281-call-me-maybe +#+LINK: snookles-tcp-incast http://www.snookles.com/slf-blog/2012/01/05/tcp-incast-what-is-it/ +#+LINK: growse-hdfs-partition-tolerance https://www.growse.com/2014/07/18/partition-tolerance-and-hadoop-part-1-hdfs/ +#+LINK: aphyr-jepsen-zookeeper http://aphyr.com/posts/291-call-me-maybe-zookeeper +#+LINK: aphyr-jepsen-kafka http://aphyr.com/posts/293-call-me-maybe-kafka +#+LINK: aphyr-jepsen-cassandra http://aphyr.com/posts/294-call-me-maybe-cassandra +#+LINK: wiki-acid http://en.wikipedia.org/wiki/ACID +#+LINK: aphyr-jepsen-postgres http://aphyr.com/posts/282-call-me-maybe-postgres +#+LINK: ferd-lessons-large-scale http://ferd.ca/lessons-learned-while-working-on-large-scale-server-software.html +#+LINK: ferd-about-guarantees http://ferd.ca/it-s-about-the-guarantees.html +#+LINK: ferd-queues-overload http://ferd.ca/queues-don-t-fix-overload.html +#+LINK: ferd-erlang-anger http://www.erlang-in-anger.com/ +#+LINK: aphyr-async-replication http://aphyr.com/posts/287-asynchronous-replication-with-failover +#+LINK: aphyr-strong-consistency-models http://aphyr.com/posts/313-strong-consistency-models + +#+BEGIN_QUOTE + "Distributed systems are hard." -Everyone. +#+END_QUOTE + +#+BEGIN_PREVIEW +This page is dedicated to general discussion of distributed systems, references +to general overviews and the like. Distributed systems are difficult and even +the well established ones aren't +[[aphyr-post-network-reliable][bulletproof]]. How can we make this better? As +SysAdmins? As Developers? First we can attempt to understand some of the issues +related to designing and implementing distributed systems. Then we can throw +all that out and figure out what /really/ happens to distributed systems. +#+END_PREVIEW + +** Recommended Reading + +*** General + +- [[wiki-fallacies-of-distributed-computing][Fallacies of Distributed + Computing]] + +- [[wiki-cap-theorem][CAP Theorem]] + + - [[lysefgg-cap][LYSEFGG: Distribunomicon: My other cap is a theorem]] + + - For a more entertaining introduction to CAP, Hebert's ''Learn You Some + Erlang for Great Good'' has a really good subsection on the topic that + includes the zombie apocalypse and some introduction to how a blend between + AP and CP systems can be achieved. + + - [[cap-paper][CAP Theorem Proof]] + + - [[codehale-cant-partition-tolerance][You can't sacrifice partition + tolerance]] + +- [[wiki-consistency-model][Consistency Model]] + + - [[wiki-list-consistency-models][List of Consistency Models]] + + - [[wiki-linearizability][Linearizability]] + + - [[bailis-linear-vs-serial][Linearizability versus Serializability]] + + - [[wiki-eventual-consistency][Eventual Consistency]] + +- [[wiki-paxos][Paxos]] + + - [[distributed-thoughts-understanding-paxos][Understanding Paxos (Part 1)]] + + - [[willportnoy-lessons-paxos][Lessons learned from implementing Paxos + (2013)]] + +- [[wiki-vector-clock][Vector Clock]] + +- [[wiki-split-brain][Split-Brain]] + +- [[wiki-network-partitions][Network Partitions]] + +- [[cemerick-ds-end-api][Distributed Systems and the End of the API]] + +- [[linkedin-blog-the-log][The Log]]: What every software engineer should know + about real time data's unifying abstraction + +The [[aphyr-jepsen-tag][Jepsen]] "Call me maybe" articles are really good, well +written essays on topics and technologies related to distributed systems. + +Introductory post to the "Call me maybe" series: + +- [[aphyr-jepsen-call-me-maybe][Call me maybe]] + +Here are some personal recommendations: + +- [[aphyr-post-network-reliable][The Network is Reliable]] + +- [[aphyr-strong-consistency-models][Strong Consistency Models]] + +- [[aphyr-async-replication][Asynchronous Replication with Failover]] + +Really anything from Ferd Herbert is good. Particularly, the first and last +chapters of [[ferd-erlang-anger][Erlang In Anger]] which includes longer essays +from his blog posts. + +- [[ferd-queues-overload][Queues Don't Fix Overload]] + +- [[ferd-about-guarantees][It's About the Guarantees]] + +- [[ferd-lessons-large-scale][Lessons Learned while Working on Large-Scale + Server Software]] + +*** General Networking + +- [[snookles-tcp-incast][TCP incast]] + +*** Hadoop ecosystem + +This link is more specific to HDFS and is a rather limited experiment but +nonetheless a good read to further understand partition issues that can arise +in Hadoop systems: + +- [[growse-hdfs-partition-tolerance][Partition Tolerance in HDFS]] + +More links from the [[aphyr-jepsen-tag][Jepsen essays]]: + +- [[aphyr-jepsen-zookeeper][Call me maybe: Zookeeper]] + +- [[aphyr-jepsen-kafka][Call me maybe: Kafka]] + +- [[aphyr-jepsen-cassandra][Call me maybe: Cassandra]] + +*** Databases + +- [[wiki-acid][Wikipedia ACID]] + +- [[aphyr-jepsen-postgres][Call me maybe: Postgres]] + + -- cgit v1.2.1