Distributed systems are counterintuitive because failure stops being an exception and becomes the normal case: messages are lost, clocks disagree, and nodes crash at the worst moment. Start with the formal impossibility results and consensus proofs and you will have rigor with no intuition; start with a framework tutorial and you will have intuition with no idea why your system loses data under partition.
The order that works builds a mental model from real systems first, then layers in the patterns practitioners use, and finally the theory that names and proves the limits you have already felt. Each book earns its place by answering a question the previous one made you ask.
Build intuition first
The essential starting point is Designing Data-Intensive Applications, which threads storage, replication, partitioning, and consensus into one coherent narrative and is the book that makes the whole field make sense. Pair it with Distributed Systems: For Fun and Profit, a short, free primer that introduces the core abstractions — time, order, and consistency — in plain language. Together they give you the vocabulary and instincts to read everything that follows without getting lost.
Patterns and internals
Next, connect the concepts to systems you can build. Distributed Systems. Principles and Paradigms is the classic textbook survey, thorough on naming, coordination, and fault tolerance. Designing Distributed Systems focuses on reusable patterns for scalable, reliable services, which is invaluable when you are actually architecting one. Database Internals zooms into the storage and replication engines underneath, showing how consensus and durability are implemented in practice rather than just described.
The theory
The final arc is the rigorous foundation. Replication: Theory and Practice collects the deep treatment of how to keep copies consistent, one of the field's central problems. Distributed algorithms is the canonical formal text on consensus, synchronization, and impossibility results, and Introduction to Reliable and Secure Distributed Programming builds those algorithms up from clear abstractions so the proofs feel earned. For the transactional side, Transactional information systems covers concurrency control and recovery in the depth that ties databases and distribution together.
Read in this order and distributed systems stop feeling like a bag of tricks and start feeling like a discipline with real laws. Follow the full path to go from practical intuition to the theory that explains the hardest cases.