1. 一致性(Consistency)
一致性(Consistency)是指多副本(Replications)问题中的数据一致性。可以分为强一致性、顺序一致性与弱一致性。
1.1 强一致性(Strict Consistency)
也称为:原子一致性(Atomic Consistency),线性一致性(Linearizable Consistency)
两个要求:
(1)任何一次读都能读到某个数据的最近一次写的数据。
(2)系统中的所有进程,看到的操作顺序,都和全局时钟下的顺序一致。
简言之,在任意时刻,所有节点中的数据是一样的。
例如,对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。
1.2 顺序一致性(Sequential Consistency)
顺序一致性主要是在操作系统领域中的概念,具体可以参考:
https://lotabout.me/2019/QQA-What-is-Sequential-Consistency/
1.3 弱一致性
数据更新后,如果能容忍后续的访问只能访问到部分或者全部访问不到,则是弱一致性。最终一致性就属于弱一致性。
最终一致性
不保证在任意时刻任意节点上的同一份数据都是相同的,但是随着时间的迁移,不同节点上的同一份数据总是在向趋同的方向变化。简单说,就是在一段时间后,节点间的数据会最终达到一致状态。
2. 共识(Consensus)
共识问题中所有的节点要最终达成共识,由于最终目标是所有节点都要达成一致,所以根本不存在一致性强弱之分。例如,Paxos是共识(Consensus)算法而不是强一致性(Consistency)协议。共识算法没有一致性级别的区分。
参考文档: