image.png

This chapter discusses various algorithms and protocols for constructing fault-tolerant distributed systems. The best way to build fault-tolerant systems is to find general-purpose abstractions with useful guarantees, implement them once, and let applications rely on those guarantees.

My note: In distributed systems, everything is unpredictable, from clocks and networks to the consistency of data across multiple database nodes.