Understanding distributed computing is not an easy task. This is due to the many facets of uncertainty one has to cope with and master in order to produce correct distributed software. Considering the uncertainty created by asynchrony and process crash failures in the context of message-passing systems, the book focuses on the main abstractions that one has to understand and master in order to be able to produce software with guaranteed properties. These fundamental abstractions are communication abstractions that allow the processes to communicate consistently (namely the register abstraction and the reliable broadcast abstraction), and the consensus agreement abstractions that allows them to cooperate despite failures. As they give a precise meaning to the words "communicate" and "agree" despite asynchrony and failures, these abstractions allow distributed programs to be designed with properties that can be stated and proved.Impossibility results are associated with these abstractions. Hence, in order to circumvent these impossibilities, the book relies on the failure detector approach, and, consequently, that approach to fault-tolerance is central to the book.Table of Contents: List of Figures / The Atomic Register Abstraction / Implementing an Atomic Register in a Crash-Prone Asynchronous System / The Uniform Reliable Broadcast Abstraction / Uniform Reliable Broadcast Abstraction Despite Unreliable Channels / The Consensus Abstraction / Consensus Algorithms for Asynchronous Systems Enriched with Various Failure Detectors / Constructing Failure Detectors
“The value of this book lies in its narrow focus on the register, broadcast, and consensus abstractions. This allows the reader to obtain a thorough understanding of the essential foundations of distributed computing, without being distracted by other aspects of distributed systems that are less important or irrelevant from a foundational standpoint. As such, this book is an ideal textbook for graduate students in computer science who have an interest in distributed computing; it will also work as a reference for researchers and interested professionals. The book is very well written and has a rigorous approach to its subject. Needless to say, it requires substantial mathematical maturity from the reader. This maturity will allow the target audience to truly appreciate the clean and beautiful presentation of this difficult material.” – Burkhard Englert for ACM Computing Reviews