mirror of
https://github.com/theanalyst/awesome-distributed-systems.git
synced 2024-11-27 11:14:46 -05:00
A curated list to learn about distributed systems
README.md |
awesome-distributed-systems
A (hopefully) curated list on awesome material on distributed systems, inspired by other awesome frameworks like awesome-python. Most links will tend to be readings on architecture itself rather than code itself.
Bootcamp
Read things here before you start.
- CAP Theorem, Also plain english explanation
- Fallacies of Distributed Computing, expect things to break, everything
- Distributed systems theory for the distributed engineer, most of the papers/books in the blog might reappear in this list again. Still a good BFS approach to distributed systems.
- FLP Impossibility Result (paper), an easier blog post to follow along
Books
- Distributed Systems for fun and profit [Free]
- Distributed Systems Principles and Paradigms, Andrew Tanenbaum [Amazon Link]
- Scalable Web Architecture and Distributed Systems [Free]
- Principles of Distributed Systems [ETH Zurich University]
Papers
Must read papers on distributed systems. While nearly all of Lamport's work should feature here, just adding a few that must be read.
- Times, Clocks and Ordering of Events in Distributed Systems Lamport's paper, the Quintessential distributed systems primer
Storage & Databases
- Dynamo: Amazon's Highly Available Key Value Store
- Bigtable: A Distributed Storage System for Structured Data
- The Google File System
- Cassandra: A Decentralized Structured Storage System Inspired heavily by Dynamo
- CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data, Basis of Ceph distributed storage system
Distributed Consensus
- The Part Time Parliament Paxos, Lamport's original Paxos paper, a bit difficult to understand, may require multiple passes
- Paxos Made Simple, a more terse readable Paxos paper by Lamport himself. Shorter and more easier compared to the original.
- The Chubby Lock Service for loosely coupled distributed systems Google's lock service used for loosely coupled distributed systems. Sort of Paxos as a Service for building other distributed systems. Primary inspiration behind other Service Discovery & Coordination tools like Zookeeper, etcd, Consul etc.
- Paxos made live - An engineering perspective Google's learning while implementing systems atop of Paxos. Demonstrates various practical issues encountered while implementing a theoritical concept.
- Raft Consensus Algorithm An alternative to Paxos for distributed consensus, that is much simpler to understand. Do checkout an interesting visualization of raft
Courses
- Cloud Computing Concepts, University of Illinois
- CMU: Distributed Systems in Go Programming Language
- Software Defined Networking , Georgia Tech.
- ETH Zurich: Distributed Systems
Blogs and other reading links
- Notes on Distributed Systems for Young Bloods
- High Scalability Several architectures of huge internet services, for eg twitter, whatsapp
- There is No Now, Problems with simultaneity in distributed systems
- Turing Lecture: The Computer Science of Concurrency: The Early Years, An article by Leslie Lamport on concurrency
- aphyr, Posts on jepsen series are pretty awesome
- All Things Distributed - Wernel Vogel's (Amazon CTO) blog on distributed systems
- Distributed Systems: Take Responsibility for Failover
- The C10K problem
- On Designing and Deploying Internet-Scale Services
Meta Lists
Other lists like this one
- Readings in distributed systems
- Distributed Systems meta list
- List of required readings for Distributed Systems Part of CMU's Engineering Distributed Systems course
- The Distributed Reader
- A Distributed Systems Reading List, A collection of material, mostly papers on Distributed Systems Theory as well as seminal industry papers
- Distributed Systems Readings, A comprehensive list of online courses related to distributed systems