skip to main content
Skip header Section
Introduction to Reliable Distributed ProgrammingApril 2006
Publisher:
  • Springer-Verlag
  • Berlin, Heidelberg
ISBN:978-3-540-28845-9
Published:01 April 2006
Skip Bibliometrics Section
Bibliometrics
Abstract

No abstract available.

Cited By

  1. Sens P, Arantes L, Graciela De Moraes Rossetto A and Marin O (2024). Stab-FD, Journal of Parallel and Distributed Computing, 186:C, Online publication date: 1-Apr-2024.
  2. Arun B, Peluso S, Palmieri R, Losa G and Ravindran B (2021). Taming the Contention in Consensus-Based Distributed Systems, IEEE Transactions on Dependable and Secure Computing, 18:6, (2907-2925), Online publication date: 1-Nov-2021.
  3. ACM
    Ben-David N and Nayak K Brief Announcement: Classifying Trusted Hardware via Unidirectional Communication Proceedings of the 2021 ACM Symposium on Principles of Distributed Computing, (191-194)
  4. ACM
    Abad C, Ortiz-Holguin E and Boza E Have We Reached Consensus? An Analysis of Distributed Systems Syllabi Proceedings of the 52nd ACM Technical Symposium on Computer Science Education, (1082-1088)
  5. ACM
    Costa P, Rosa A and Leitão J Enabling wireless ad hoc edge systems with Yggdrasil Proceedings of the 35th Annual ACM Symposium on Applied Computing, (2129-2136)
  6. ACM
    Carvalho C, Porto D, Rodrigues L, Bravo M and Bessani A Dynamic adaptation of byzantine consensus protocols Proceedings of the 33rd Annual ACM Symposium on Applied Computing, (411-418)
  7. Hirve S, Palmieri R and Ravindran B (2017). HiperTM, Theoretical Computer Science, 688:C, (86-102), Online publication date: 6-Aug-2017.
  8. ACM
    Prokopec A Pluggable scheduling for the reactor programming model Proceedings of the 6th International Workshop on Programming Based on Actors, Agents, and Decentralized Control, (41-50)
  9. ACM
    Drăgoi C, Henzinger T and Zufferey D (2016). PSync: a partially synchronous language for fault-tolerant distributed algorithms, ACM SIGPLAN Notices, 51:1, (400-415), Online publication date: 8-Apr-2016.
  10. ACM
    Drăgoi C, Henzinger T and Zufferey D PSync: a partially synchronous language for fault-tolerant distributed algorithms Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, (400-415)
  11. ACM
    Couceiro M, Chandrasekara G, Bravo M, Hiltunen M, Romano P and Rodrigues L Q-OPT Proceedings of the 16th Annual Middleware Conference, (88-99)
  12. ACM
    Prokopec A and Odersky M Isolates, channels, and event streams for composable distributed programming 2015 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!), (171-182)
  13. Chengpu Yu and Lihua Xie (2015). On Recursive Blind Equalization in Sensor Networks, IEEE Transactions on Signal Processing, 63:3, (662-672), Online publication date: 1-Feb-2015.
  14. ACM
    Didona D, Quaglia F, Romano P and Torre E Enhancing Performance Prediction Robustness by Combining Analytical Modeling and Machine Learning Proceedings of the 6th ACM/SPEC International Conference on Performance Engineering, (145-156)
  15. Hirve S, Palmieri R and Ravindran B HiperTM Proceedings of the 15th International Conference on Distributed Computing and Networking - Volume 8314, (181-196)
  16. Taïani F, Porter B, Coulson G and Raynal M Cliff-Edge Consensus Proceedings of the 12th International Conference on Parallel Computing Technologies - Volume 7979, (51-64)
  17. Kim J and Ravindran B Scheduling transactions in replicated distributed software transactional memory Proceedings of the 13th IEEE/ACM International Symposium on Cluster, Cloud, and Grid Computing, (227-234)
  18. Philips E, Vallejos J, Van Der Straeten R and Jonckers V Group orchestration in a mobile environment Proceedings of the 14th international conference on Coordination Models and Languages, (181-195)
  19. ACM
    Dashti M (2012). Efficiency of optimistic fair exchange using trusted devices, ACM Transactions on Autonomous and Adaptive Systems, 7:1, (1-18), Online publication date: 1-Apr-2012.
  20. ACM
    Proença J, Clarke D, de Vink E and Arbab F Dreams Proceedings of the 27th Annual ACM Symposium on Applied Computing, (1510-1515)
  21. Couceiro M, Romano P and Rodrigues L PolyCert Proceedings of the 12th International Middleware Conference, (300-319)
  22. Couceiro M, Romano P and Rodrigues L PolyCert Proceedings of the 12th ACM/IFIP/USENIX international conference on Middleware, (309-328)
  23. Brzeziński J, Kalewski M and Wawrzyniak D On time constraints of reliable broadcast protocols for ad hoc networks with the liveness property Proceedings of the 9th international conference on Parallel Processing and Applied Mathematics - Volume Part I, (40-49)
  24. ACM
    Carvalho N, Romano P and Rodrigues L SCert Proceedings of the 4th Annual International Conference on Systems and Storage, (1-13)
  25. ACM
    Milano D and Stojnić N Shepherd Proceedings of the 5th International Workshop on Enhanced Web Service Technologies, (26-35)
  26. ACM
    Carvalho N Generic replication of software transactional memory Proceedings of the 7th Middleware Doctoral Symposium, (14-19)
  27. Carvalho N, Romano P and Rodrigues L Asynchronous lease-based replication of software transactional memory Proceedings of the ACM/IFIP/USENIX 11th International Conference on Middleware, (376-396)
  28. Mostarda L, Ball R and Dulay N Distributed fault tolerant controllers Proceedings of the 10th IFIP WG 6.1 international conference on Distributed Applications and Interoperable Systems, (141-154)
  29. Schintke F, Reinefeld A, Haridi S and Schütt T Enhanced Paxos Commit for Transactions on DHTs Proceedings of the 2010 10th IEEE/ACM International Conference on Cluster, Cloud and Grid Computing, (448-454)
  30. Torabi Dashti M Optimistic Fair Exchange Using Trusted Devices Proceedings of the 11th International Symposium on Stabilization, Safety, and Security of Distributed Systems, (711-725)
  31. Lindbäck L, Vlassov V, Mokarizadeh S and Violino G Churn tolerant virtual organization file system for grids Proceedings of the 8th international conference on Parallel processing and applied mathematics: Part II, (194-203)
  32. ACM
    Mejías B, Cádiz A and Van Roy P Beernet Proceedings of the 1st International Workshop on Distributed Objects for the 21st Century, (1-8)
  33. ACM
    Schütt T, Schintke F and Reinefeld A Scalaris Proceedings of the 7th ACM SIGPLAN workshop on ERLANG, (41-48)
  34. ACM
    Romano P, Carvalho N and Rodrigues L Towards distributed software transactional memory systems Proceedings of the 2nd Workshop on Large-Scale Distributed Systems and Middleware, (1-4)
  35. ACM
    Fritzke U, Valentim R and Gomes L Adaptive replication control based on consensus Proceedings of the 2nd workshop on Dependable distributed data management, (1-10)
  36. ACM
    Steffenel L, Pinheiro M and Bebers Y Total order broadcast on pervasive systems Proceedings of the 2008 ACM symposium on Applied computing, (2202-2206)
  37. Freiling F and Jhumka A Global predicate detection in distributed systems with small faults Proceedings of the 9h international conference on Stabilization, safety, and security of distributed systems, (296-310)
  38. Freiling F and Jhumka A Global Predicate Detection in Distributed Systems with Small Faults Stabilization, Safety, and Security of Distributed Systems, (296-310)
  39. ACM
    Dunkels A, Österlind F and He Z An adaptive communication architecture for wireless sensor networks Proceedings of the 5th international conference on Embedded networked sensor systems, (335-349)
  40. Xhafa F, Fernandez R, Daradoumis T, Barolli L and Caballé S Improvement of JXTA protocols for supporting reliable distributed applications in P2P systems Proceedings of the 1st international conference on Network-based information systems, (345-354)
  41. Patra A, Choudhary A, Srinathan K and Rangan C Constant phase bit optimal protocols for perfectly reliable and secure message transmission Proceedings of the 7th international conference on Cryptology in India, (221-235)
Contributors

Recommendations

Reviews

Wei-Ming Hu

Some of the key algorithms for reliable broadcast, synchronized access to data, and achieving consensus are covered in this textbook, on abstractions and algorithms for building distributed systems. The book begins by describing how to model fundamental concepts such as processes, failures, communications, time, and the perfect failure detector abstraction. This is followed by a discussion of the first class of algorithms: reliable broadcast. The book starts with the simple best-effort broadcast, and successively adds reliability, uniformity, and, eventually, causal broadcast. Both deterministic and probabilistic algorithms are described. From here, the book moves on to distributed shared memory. This chapter describes how one or more processes can write a value that is then read by one or more other processes. The initial algorithm implements single writer/multiple reader, and then successively adds atomicity, multiple writers, and recovery. The next major topic is distributed algorithms for achieving consensus, namely, agreeing on a common value. Starting with a basic flooding algorithm, the chapter explains how to achieve uniform agreement, abortable consensus, and variants that use logging and randomized algorithms. The last chapter of the book describes variants of consensus abstractions, such as total order broadcast, terminating reliable broadcast, group membership, and view synchronous communications. To supplement the algorithms in the book, each chapter contains a hands-on section that presents some exercises that can be solved and executed using the Java-based, open source Appia protocol framework. Those interested in the details of how these algorithms are implemented should definitely go through these hands-on sections. In addition, every chapter also ends with a historical notes section that describes the history and origin of these ideas and algorithms. The book is well organized. It incrementally introduces the key concepts and simple algorithms, and then builds on them to achieve various properties such as reliability and atomicity. This structure gives a good picture of how these various algorithms relate. The book does a good job of describing the core algorithms at a high level. I appreciated the historical notes, because they help place the various papers that one may have read in a larger context. The book, however, does not address how well these algorithms fare in practice. For example, fault detectors are imperfect, and that usually forces certain tradeoffs that affect where these algorithms can be employed. Likewise, a more complete failure model, and a description of how these algorithms behave, would also be helpful. Overall, the book succeeds in providing a good introduction to this important area. Online Computing Reviews Service

Burkhard Englert

Developing correct distributed programs remains one of the most challenging problems software developers face. In this book, Guerraoui and Rodrigues successfully discuss and illustrate these difficulties. The book offers an introductory description of several common distributed programming abstractions as well as the algorithms that are used to implement these abstractions. These programming abstractions encapsulate the difficulties of robust cooperation between several processes and all of the challenging algorithmic issues and functions (as an intermediate layer between the network communication and the distributed application layers). As a result, this book will interest both distributed application programmers, who are provided with a library of abstraction interface specifications, and distributed system builders, who are provided with a library of algorithms that implement the given abstractions. A companion set of examples implemented in Java and running in the Appia protocol composition framework is included with the book. Appia is an open-source layered communication toolkit. It consists of a core, that is used to compose protocols, and a set of protocols, that provide group communication, ordering guaranties, atomic broadcast, and other properties. Being open source, it is easily accessible to any interested reader. The examples presented allow readers to experience first hand some of the implementation details that are not obviously comprehended from the algorithms presented in the text. In the first chapter, the authors present several applications that depend on distributed programming abstractions. These applications are not discussed in detail, but are pertinent to later chapters of the book. This is a very helpful chapter for anyone who wants to use the book as a teaching tool. It provides good examples that can be used in cooperation with the material covered in a course on distributed algorithms. More experienced users, namely application programmers or system builders, may choose to skip this introduction. The second chapter discusses the distributed system models that are used throughout the book. Within the context of the book, this means a description of process and link abstractions, on which all other abstractions are built. Chapter 3 presents the reliable broadcast abstraction. Chapter 4 discusses the shared memory abstraction, and chapter 5 discusses the consensus abstraction. Finally, chapter 6 presents some variants of consensus, particularly atomic broadcast, terminating (reliable) broadcast, (nonblocking) atomic commitment, group membership, and view-synchronous communication. Each chapter that discusses programming abstractions proceeds in a similar manner. Algorithms that implement a given abstraction are first presented for a simplified model. Then, they are adapted for more realistic models. This gives the reader some insight into how modeling assumptions affect the algorithm design. The chapters end with a hands-on section where readers are encouraged to implement the presented abstractions using the Appia framework. Some readers may find the book disappointing in regard to its apparent lack of rigor. There are no formal correctness proofs, only more informal correctness arguments. Any reader not satisfied will be able to supply these proofs using other resources. There are no theorems in the book. This allows the authors to focus entirely on the design of the algorithms. The strengths of this book lie in the connections made between distributed algorithms and actual implementations. This demonstrates the practicalities of these algorithms to the user. However, one should not assume that this book is a distributed programming manual. The organization of this book directly reflects the subject it discusses. As distributed algorithm abstractions are sandwiched between application and network layers, this book is sandwiched between formal textbooks on distributed algorithms and distributed programming manuals. Overall, the book fulfills an important practical need, which is teaching students how distributed algorithms are actually used. At the same time, a focus on the development of correct algorithms is maintained. The exercises at the end of each chapter also reflect this philosophy. They are not programming exercises. Almost all of the exercises relate to some aspect of the algorithms previously presented. This does not mean, however, that the implementations are simply filler. Particularly in a teaching environment, implementations are incredibly useful tools that facilitate learning. This book will open doors for students who might otherwise shy away from the area of distributed algorithms because of the perceived difficulty and abstractness of the subject. The hands-on approach will allow students to gain a better understanding of the underlying concepts. In this sense, I highly recommend this book to anyone thinking about teaching a more applied course in distributed algorithms. It may also prove useful to those wanting first-hand experience with algorithms in distributed computing. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.