12.4k GitHub stars and counting — theanalyst/awesome-distributed-systems is a multi-language project TopGit is tracking across repositories on the platform. A curated list to learn about distributed systems
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
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
An Introduction to Distributed Systems @aphyr's excellent introduction to distributed systems
Books
Distributed Systems for fun and profit [Free]
Distributed Systems Principles and Paradigms, Andrew Tanenbaum [Free with registration]
Scalable Web Architecture and Distributed Systems [Free]
Principles of Distributed Systems [Free] [ETH Zurich University]
Making reliable distributed systems in the presence of software errors, [Free] Joe Amstrong's (Author of Erlang) PhD thesis
Designing Data Intensive Applications [Amazon Link]
Distributed Machine Learning Patterns, Yuan Tang, Practical patterns for scaling machine learning from your laptop to a distributed cluster
Distributed Computing, Hagit Attiya and Jennifer Welch
Distributed Algorithms, Nancy Lynch [Amazon Link]
Impossibility Results for Distributed Computing [paywall]
Designing Distributed Systems, Brendan Burns [Free with registration]
Distributed Systems: Concepts and Design, George Coulouris [Amazon Link]
Akka in Action, Second Edition
Systemantics: how systems work and especially how they fail
Think Distributed Systems[Free with subscription]
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
Session Guarantees for Weakly Consistent Replicated Data a '94 paper that talks about various recommendations for session guarantees for eventually consistent systems, many of this would be standard vocabulary in reading other dist. sys papers, like monotonic reads, read your writes etc.
Storage & Databases
Dynamo: Amazon's Highly Available Key Value Store
Paraphrasing @fogus from their blog, it is very rare for a paper describing an active production system to influence the state of active research in any industry; this is one of those seminal distributed systems paper that solves the problem of a highly available and fault tolerant database in an elegant way, later paving the way for systems like Cassandra, and many other AP systems using a consistent hashing.
Bigtable: A Distributed Storage System for Structured Data
The Google File System
Cassandra: A Decentralized Structured Storage System Inspired heavily by Dynamo, an now an open source
CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data, the algorithm for the basis of Ceph distributed storage system, for the architecture itself read RADOS
Messaging systems
The Log: What every software engineer should know about real-time data's unifying abstraction, a somewhat long read, but covers brilliantly on logs, which are at the heart of most distributed systems
Kafka: a Distributed Messaging System for Log Processing
Distributed Consensus and Fault-Tolerance
Practical Byzantine Fault Tolerance
The Byzantine Generals Problem
Impossibility of Distributed Consensus with One Faulty Process
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 theoretical concept.
Raft Consensus Algorithm An alternative to Paxos for distributed consensus, that is much simpler to understand. Do checkout an interesting visualization of raft
Conflict-free Replicated Data Types presents an approach for Strong Eventual Consistency which as been applied in projects such as Riak, Redis and Akka. A great talk on the subject by Martin Kleppmann can be found here
Speculative algorithms for global state synchronizations Azos.Sky.Server.Locking uses probability based QOS (Quality of Service)/Trust measure to ensure probability-based consensus. The approach avoids distributed state machine/phase synchronization and is very simple to understand and implement
Testing, monitoring and tracing
While designing distributed systems are hard enough, testing them is even harder.
Dapper, Google's large scale distributed-systems tracing infrastructure, this was also the basis for the design of open source projects such as Zipkin, Apache SkyWalking, Pinpoint and HTrace.
Programming Models
Distributed Programming Model
PSync: a partially synchronous language for fault-tolerant distributed algorithms Video: Conference Video
Programming Models for Distributed Computing
Logic and Lattices for Distributed Programming
Verification of Distributed Systems
Curated list of resources on testing distributed systems includes links to materials on testing by various companies (Google, Amazon, Netflix, Microsoft, Dropbox, etc) and research papers.
Jepsen A framework for distributed systems verification, with fault injection
@aphyr has featured enough times in this list already, but Jepsen and the blog posts that go with are a quintessntial addition to any distributed systems reading list.
Verdi A Framework for Implementing and Formally Verifying Distributed Systems Paper
Videos
Distributed Deep Dive interview series by Ably Relatime.
Distributed Systems in One Lesson Distributed Systems in One Lesson by Tim Berglund
Courses
Reliable Distributed Algorithms, Part 1, KTH Sweden
Reliable Distributed Algorithms, Part 2, KTH Sweden
Cloud Computing Concepts, University of Illinois
CMU: Distributed Systems in Go Programming Language
Software Defined Networking , Georgia Tech.
ETH Zurich: Distributed Systems
ETH Zurich: Distributed Systems Part 2, covers Distributed control algorithms, communication models, fault-tolerance among other things. In particular fault tolerance issues (models, consensus, agreement) and replication issues (2PC,3PC, Paxos), which are critical in understanding distributed systems are explained in great detail.
Distributed Systems Course, A beginner course on distributed system by Chris Colohan, A google employee who contributed to SUIF, MapReduce, TCMalloc, Percolator, Caffeine, Borg, Omega, and Piper.
MIT 6.824, Youtube-playlist MIT distributed system lectures, in each video they discuss papers like GFS, Zookeeper, RAFT, Spanner...
Distributed Systems, Lectures 9 to 16 of the Cambridge University lecture "Concurrent and Distributed Systems", given by Dr. Martin Kleppmann. Youtube-playlist. A computer science entrance course, covered basic models and algorithms in distributed systems, also discussed CRDT, collaboration software and google's spanner.
Blogs and other reading links
Amazon Builder's Library, a collection of Amazon's learnings on distributed systems
How we implemented consistent hashing efficiently
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
The Paper Trail blog, a very readable blog covering various aspects of distributed systems
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
Files are hard A blog post on filesystem consistency, pretty important to read if you are into distributed storage or databases.
Distributed Systems Testing: The Lost World Testing distributed systems are hard enough, a well researched blog post which again covers a lot of links to various approaches and other papers
SWIM Protocol explained A blog post on popular SWIM failure detector
Research
ACM Symposium on Principles of Distributed Computing (PODC) and International Symposium on Distributed Computing (DISC), a list of resources from PODC–DISC community including conference series, mailing lists, youtube, twitter, etc.
IEEE International Parallel & Distributed Processing Symposium (IPDPS), an international forum for engineers and scientists to present their latest research findings.
Springer Distributed Computing Journal, a journal about theory, design, specification, and implementation of distributed systems.
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
Awesome Distributed Consensus, Another list of materials on distributed consensus protocols
Beginner's Guide to Distributed Systems A blog post with some useful getting started links for distributed systems
How active is development on theanalyst/awesome-distributed-systems?
The most recent commit recorded on theanalyst/awesome-distributed-systems was 1.8 years ago, based on the GitHub push timestamp. The repository has 1.6k forks — one of the better signals of community interest.
How many stars does theanalyst/awesome-distributed-systems have?
theanalyst/awesome-distributed-systems has 12.4k GitHub stars — refresh the page for the live number, or check github.com/theanalyst/awesome-distributed-systems. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
What is theanalyst/awesome-distributed-systems?
theanalyst/awesome-distributed-systems (theanalyst/awesome-distributed-systems) is a multi-language project on GitHub. From the project's own README: A curated list to learn about distributed systems
What language is theanalyst/awesome-distributed-systems written in?
TopGit's last sync did not record a primary language for theanalyst/awesome-distributed-systems. Open the repository on GitHub to see the full breakdown by file extension.
What topics is theanalyst/awesome-distributed-systems associated with?
GitHub's repository topics for theanalyst/awesome-distributed-systems: "architecture", "consensus", "distributed-systems", "lamport", "paper", "paxos". TopGit's editorial category is open-source.
Read full README in the tab above.
Is awesome-distributed-systems worth your time?
ChatGPT, Claude and Perplexity can all read this page. Ask one of them what it makes of awesome-distributed-systems.