一致性往往指分布式系统中多个副本对外呈现的数据的状态。如前面提到的顺序一致性、线性一致性,描述了多个节点对数据状态的维护能力。
共识则描述了分布式系统中多个节点之间,彼此对某个状态达成一致结果的过程。
致性描述的是结果状态,共识则是一种手段。达成某种共识并不意味着就保障了一致性。
讲,各个节点通常都是相同的确定性状态机模型(又称为状态机复制问题,state-machine replication),从相同初始状态开始接收相同顺序的指令,则可以保证相同的结果状态。
系统中多个节点最关键的是对多个事件的顺序进行共识,即排序。
出现故障(crash或fail-stop,即不响应)但不会伪造信息的情况称为“非拜占庭错误”(non-byzantine fault)或“故障错误”(Crash Fault);
伪造信息恶意响应的情况称为“拜占庭错误”