The explosive growth of distributed computing systems makes understanding them
imperative. Yet achieving such understanding is notoriously difficult, because of the
uncertainties introduced by asynchrony, limited local knowledge, and partial failures.
The field of distributed computing provides the theoretical underpinning for the design
and analysis of many distributed systems: from wide-area communication networks,
through local-area clusters of workstations to shared-memory multiprocessors.
This book aims to provide a coherent view of the theory of distributed computing,
highlighting common themes and basic techniques. It introduces the reader to the
fundamental issues underlying the design of distributed systems--communication,
coordination, synchronization, and uncertainty--and to the fundamental algorithmic
ideas and lower bound techniques. Mastering these techniques will help the reader
design correct distributed applications.
This book covers the main elements of the theory of distributed computing, in
a unifying approach that emphasizes the similarities between different models and
explains inherent discrepancies between them. The book presents up-to-date results
in a precise, and detailed, yet accessible manner. The emphasis is on fundamental
ideas, not optimizations. More difficult results are typically presented as a series
of increasingly complex solutions. The exposition highlights techniques and results
that are applicable in several places throughout the text. This approach exposes the
inherent similarities in solutions to seemingly diverse problems.