强一致性、顺序一致性、弱一致性和共识

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)协议。共识算法没有一致性级别的区分。

参考文档:

https://blog.csdn.net/chao2016/article/details/81149674

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。