What is consensus?
Agreement among distributed processes:
- on a value, action, timestamp, …
- on the outcome of a transaction e.g., bank transaction
Reaching a consensus makes it possible for the system to be correct and is critical for making forward progress.
What’s hard about reaching consensus?
What are the key properties of consensus?
Is consensus really impossible?
While the FLP work suggests that it’s impossible to guarantee consensus when there’s a fault in the system, in reality we have several consensus protocols to ensure correctness:
- 2 phase commit
- 3 phase commit
- paxos
- raft
These protocols don’t contradict the FLP result, but they change the assumptions / properties of the system model. e.g., will the protocol (always) terminate? Under which conditions will it provide consensus?
What is the FLP theorem?
FLP Theorem proves that in a system with 1 faulty processor and reordered and arbitrarily delayed messages, it is impossible to guarantee that a consensus can be reached.