This text is based on a simple and fully reactive computational model that allows for intuitive comprehension and logical designs. The principles and techniques presented can be applied to any distributed computing environment (e.g., distributed systems, communication networks, data networks, grid networks, internet, etc.). The text provides a wealth of unique material for learning how to design algorithms and protocols perform tasks efficiently in a distributed computing environment.
Distributed algorithms have been the subject of intense development over the last twenty years. The second edition of this successful textbook provides an up-to-date introduction both to the topic, and to the theory behind the algorithms. The clear presentation makes the book suitable for advanced undergraduate or graduate courses, whilst the coverage is sufficiently deep to make it useful for practising engineers and researchers. The author concentrates on algorithms for the point-to-point message passing model, and includes algorithms for the implementation of computer communication networks. Other key areas discussed are algorithms for the control of distributed applications (wave, broadcast, election, termination detection, randomized algorithms for anonymous networks, snapshots, deadlock detection, synchronous systems), and fault-tolerance achievable by distributed algorithms. The two new chapters on sense of direction and failure detectors are state-of-the-art and will provide an entry to research in these still-developing topics.
This classroom-tested textbook provides an accessible introduction to the design, formal modeling, and analysis of distributed computer systems. The book uses Maude, a rewriting logic-based language and simulation and model checking tool, which offers a simple and intuitive modeling formalism that is suitable for modeling distributed systems in an attractive object-oriented and functional programming style. Topics and features: introduces classical algebraic specification and term rewriting theory, including reasoning about termination, confluence, and equational properties; covers object-oriented modeling of distributed systems using rewriting logic, as well as temporal logic to specify requirements that a system should satisfy; provides a range of examples and case studies from different domains, to help the reader to develop an intuitive understanding of distributed systems and their design challenges; examples include classic distributed systems such as transport protocols, cryptographic protocols, and distributed transactions, leader election, and mutual execution algorithms; contains a wealth of exercises, including larger exercises suitable for course projects, and supplies executable code and supplementary material at an associated website. This self-contained textbook is designed to support undergraduate courses on formal methods and distributed systems, and will prove invaluable to any student seeking a reader-friendly introduction to formal specification, logics and inference systems, and automated model checking techniques.
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.
Presents the locality-sensitive approach to distributed network algorithms-the utilization of locality to simplify control structures and algorithms and reduce their costs. The author begins with an introductory exposition of distributed network algorithms focusing on topics that illustrate the role of locality in distributed algorithmic techniques. He then introduces locality-preserving network representations and describes sequential and distributed techniques for their construction. Finally, the applicability of the locality-sensitive approach is demonstrated through several applications. Gives a thorough exposition of network spanners and other locality-preserving network representations such as sparse covers and partitions. The book is useful for computer scientists interested in distributed computing, electrical engineers interested in network architectures and protocols, and for discrete mathematicians and graph theorists.
This book documents the main results developed in the course of the European project "Basic Research on Advanced Distributed Computing: From Algorithms to Systems (BROADCAST)". Eight major European research groups in distributed computing cooporated on this projects, from 1992 to 1999. The 21 thoroughly cross-reviewed final full papers present the state-of-the art results on distributed systems in a coherent way. The book is divided in parts on distributed algorithms, systems architecture, applications support, and case studies.
This volume contains the proceedings of the fifth International Workshop on Distributed Algorithms (WDAG '91) held in Delphi, Greece, in October 1991. The workshop provided a forum for researchers and others interested in distributed algorithms, communication networks, and decentralized systems. The aim was to present recent research results, explore directions for future research, and identify common fundamental techniques that serve as building blocks in many distributed algorithms. The volume contains 23 papers selected by the Program Committee from about fifty extended abstracts on the basis of perceived originality and quality and on thematic appropriateness and topical balance. The workshop was organizedby the Computer Technology Institute of Patras University, Greece.
AN ELABORATE YET BEGINNER-FRIENDLY GUIDE TO DISTRIBUTED ALGORITHMS Distributed Algorithms, a non-trivial and highly evolving field of active research, is often presented in most publications using a heavy accompaniment of mathematical techniques and notations. Aimed squarely at beginners as well as experienced practitioners, this book attempts to demystify and explicate the subject of distributed algorithms using a highly expansive and verbose style of treatment. Covering scores of landmark algorithms in the field of distributed computing, the approach is to present and analyse each topic using a minimum of mathematical exposition, reverting instead to a fluid style of description in plain English. A mathematical presentation is avoided altogether whenever such a move does not reduce the quality of the analysis at hand. Elsewhere, the effort always is to talk and guide the reader through the relevant math without resorting to a series of equations. To backup such a style of treatment, each topic is accompanied by a multitude of examples, flowcharts, and diagrams. The book is divided into three parts; the first part deals with fundamentals, the second and largest of the three is all about algorithms specific to message passing networks, while the last one focuses on shared memory algorithms. The beginning of the book dedicates a few chapters to the basics - including a quick orientation on the underlying platform, i.e. distributed systems, their characteristics, advantages, challenges, and so on. Some of the earlier chapters also address basic algorithms and techniques relevant to distributed computing environments before moving on to progressively complex algorithms and results - en route to the later chapters in the second part which deal with widely used 'industrial-strength' protocols such as Paxos and Raft. The third part of the book does assume a basic orientation towards computer programming, and presents numerous shared memory algorithms where each one is accompanied by a detailed description, analysis, pseudo code, and in some cases, code (C or C++). Whenever actual code is used, the syntax is kept as basic as possible - incorporating only elementary features of the language - so that newbie programmers can follow the presentation smoothly. Lastly, the target audience of the book is wide enough to cover beginners such as students or graduates joining the industry, experienced professionals wishing to migrate from monolithic frameworks to distributed ones, as well as readers with years of experience on the subject of distributed computing. The style of presentation is selected with the first two classes of readers in mind: those who wish to quickly ramp up on the subject of distributed algorithms for professional reasons or personal ones. While staying true to the stated aim, the book does not shy away from dealing with complex topics. A concise list of content information follows: Introduction to distributed systems Properties of distributed data stores and Brewer's theorem Building blocks: unicast, broadcast, algorithms in cubes Leader election algorithms: for ring/generic networks Consensus algorithms: synchronous/asynchronous variants for message passing and shared memory systems Distributed commits, Paxos, Raft Graph algorithms Routing algorithms Time and order Mutual exclusion: for message passing networks Debug algorithms: snapshot, deadlock/termination detection Shared memory: practical problems, mutual exclusion, consensus, resource allocation About the author Fourré Sigs is an industry veteran with over 25 years of experience in systems programming, networking, and highly scalable and secure distributed service architectures.