The consensus protocol is the way, for different components of a distributed system, to achieve an agreement about a shared data value. A transaction environment is used by the transaction manager to establish whether a transaction can be committed or aborted, using the following three conditions:
- Agreement: All nodes decide on the same value
- Validity: If all of the nodes have the same value, then a consensus must be obtained on this value
- Termination: All nodes decide about a transaction's outcome
In enterprise architectures, there are three major consensus protocols, as follows:
- Two-phase commit (2PC) protocol
- Three-phase commit (3PC) protocol
- Paxos