Distributed computing is at the heart of many applications. It arises as soon as one has to solve a problem in terms of entities -- such as processes, peers, processors, nodes, or agents -- that individually have only a partial knowledge of the many input parameters associated with the problem. In particular each entity cooperating towards the common goal cannot have an instantaneous knowledge of the current state of the other entities. Whereas parallel computing is mainly concerned with 'efficiency', and real-time computing is mainly concerned with 'on-time computing', distributed computing is mainly concerned with 'mastering uncertainty' created by issues such as the multiplicity of control flows, asynchronous communication, unstable behaviors, mobility, and dynamicity.
While some distributed algorithms consist of a few lines only, their behavior can be difficult to understand and their properties hard to state and prove. The aim of this book is to present in a comprehensive way the basic notions, concepts, and algorithms of distributed computing when the distributed entities cooperate by sending and receiving messages on top of an asynchronous network. The book is composed of seventeen chapters structured into six parts: distributed graph algorithms, in particular what makes them different from sequential or parallel algorithms; logical time and global states, the core of the book; mutual exclusion and resource allocation; high-level communication abstractions; distributed detection of properties; and distributed shared memory. The author establishes clear objectives per chapter and the content is supported throughout with illustrative examples, summaries, exercises, and annotated bibliographies.
This book constitutes an introduction to distributed computing and is suitable for advanced undergraduate students or graduate students in computer science and computer engineering, graduate students in mathematics interested in distributed computing, and practitioners and engineers involved in the design and implementation of distributed applications. The reader should have a basic knowledge of algorithms and operating systems.
“The aim of this book is to present in a comprehensive way basic notions, concepts, and algorithms of distributed computing when the distributed entities cooperate by sending and receiving messages on top of an underlying network. … This book is useful for senior-level undergraduate students and graduate students in computer science with basic knowledge of algorithms and operating systems.” (T. C. Mohan, Mathematical Reviews, November, 2015)
“This book offers balanced coverage of the major topics encountered in courses on modern distributed computations. The text is primarily intended for courses on distributed systems; it can be used for both undergraduate and postgraduate courses. … Overall, this title is an instructive and valuable book that deserves to be studied.” (Dimitrios Katsaros, Computing Reviews, June, 2014)
“The book presents in well structured manner the basic concepts and algorithms currently used in distributed systems based on message passing. … The book can be used as textbook by undergraduate students in distributed systems. What distinguishes this book from similar ones are the text accessibility and the well organization of a classical material. Many figures and pseudo-codes are helping the understanding of the algorithms.” (Dana Petcu, zbMATH, Vol. 1282, 2014)
Prof. Michel Raynal is among the top researchers in the world on the topic of distributed algorithms. He is a full professor at the Université de Rennes where he founded the Distributed Algorithms research group in 1984. He has been the principal investigator in numerous related research national and international projects, and he has been invited by more than 25 universities around the world to give lectures on distributed algorithms and distributed computing. He has over 300 academic publications on this topic, and has authored a number of books on related topics. His current research interests include distributed algorithms, distributed computing systems, distributed computability and dependability; and the fundamental principles that underlie the design and the construction of distributed computing systems.