The Alpha(s) and Omega of Consensus: Failure Detector-Based Consensus
Chapter 16 has shown that a base read/write system enriched with objects whose consensus number is at least \(x\) allows consensus objects to be wait-free implemented in a system of at most \(x\) processes. Moreover, thanks to universal constructions (Chap. 14) these objects allow construction of wait-free implementations of any object defined by a sequential specification on total operations.
Hence, the question: is the enrichment of a read/write asynchronous system with stronger operations such as compare&swap the only means to obtain wait-free implementations of consensus objects? This chapter shows that the answer to this question is “no”. To that end it presents another approach which is based on information on failures (the failure detector-based approach). Each process is enriched with a specific module that gives it (possibly unreliable) information on the faulty/correct status of processes.
The chapter presents first a de-construction of compare&swap that allows us to introduce two types of objects whose combination allows consensus to be solved despite asynchrony and any number of process crashes. One is related to the safety of consensus, the other one to its liveness. The chapter presents then the failure detector \(\Omega \) which has been proved to be the one providing the weakest information on failure which allows consensus to be solved. \(\Omega \) is used to ensure the consensus termination property. Several base objects that can be used to guarantee the consensus safety properties are then introduced. Differently from \(\Omega \), these objects can be wait-free built from read/write registers only. The chapter finally investigates additional synchrony assumptions that allow \(\Omega \) to be implemented.