Date Added: Oct 2009
Developing dependable distributed applications is not easy. The complexity stems from the asynchrony and unreliability of typical distributed systems: processes execute at different speeds and may abruptly stop executing their code (i.e., crash). Moreover, messages may be arbitrarily delayed, received out-of-order, and even lost, if the sender or receiver is faulty. To ease the development of distributed systems, several group-communication abstractions have been proposed. Two common abstractions are atomic broadcast and atomic multicast. While in the former messages are addressed to all system members, in the latter messages are addressed to subsets of the system members (i.e, groups).