Consistency often refers to the state of data that is rendered externally by multiple replicas in a distributed system. The sequential consistency and linear consistency mentioned above describe the maintenance capability of multiple nodes for the data state.
Consensus describes the process by which multiple nodes in a distributed system agree on a certain state.
The sexual description is the result state, the consensus is a means. Reaching some sort of consensus does not mean that consistency is guaranteed.
Say, each node is usually the same deterministic state machine model (also known as State machine replication problem, state-machine replication), from the same initial state to receive the same order of instructions, you can guarantee the same result state.
The most critical of multiple nodes in the system is to agree on the order of multiple events, that is, to sort.
A failure (Crash or fail-stop, that is, not responding) but does not falsify information is called "Non-Byzantine error" (Non-byzantine fault) or "Fault error" (Crash fault);
The case of a malicious response to counterfeit information is called "Byzantine Error" (Byzantine Fault), and the corresponding node is a Byzantine node.
The common and Byzantine error conditions are solved, and the consensus algorithm can be divided into crash Fault tolerance (CFT) class algorithm and Byzantine Fault tolerance (BFT) class algorithm.
In order to tolerate the Byzantine error, it generally includes the deterministic series algorithm represented by PBFT (practical Byzantine Fault tolerance), and the probability algorithm represented by POW.
Note that in practice, the results of consistency often require additional support from the client, typically by accessing a sufficient number of service nodes to verify that the correct results are obtained after consensus.
It is not only in the field of distributed system, but also in many fields, there are some constraints such as "Uncertainty principle".