分布式架构之Consistency(一致性、强一致性,弱一致性,顺序一致性,最终一致性)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分布式架构之Consistency(⼀致性、强⼀致性,弱⼀致性,顺序⼀致性,最终

⼀致性)

⼀致性(Consistency)

是指多副本(Replications)问题中的数据⼀致性。可以分为强⼀致性、顺序⼀致性与弱⼀致

性。

强⼀致性(Strict Consistency)

系统中的某个数据被成功更新后,后续任何对该数据的读取操作都将得到更新后的值;

也称为:原⼦⼀致性(Atomic Consistency)线性⼀致性(Linearizable Consistency)

两个要求:

任何⼀次读都能读到某个数据的最近⼀次写的数据。

系统中的所有进程,看到的操作顺序,都和全局时钟下的顺序⼀致。

简⾔之,在任意时刻,所有节点中的数据是⼀样的。

例如,对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强⼀致性。

总结:

⼀个集群需要对外部提供强⼀致性,所以只要集群内部某⼀台服务器的数据发⽣了改变,那么

就需要等待集群内其他服务器的数据同步完成后,才能正常的对外提供服务。

保证了强⼀致性,务必会损耗⾼可⽤性。

顺序⼀致性(Sequential Consistency)

两个要求:

任何⼀次读都能读到某个数据的最近⼀次写的数据。

系统的所有进程的顺序⼀致,⽽且是合理的。即不需要和全局时钟下的顺序⼀致,错的话⼀起

错,对的话⼀起对。

弱⼀致性

系统中的某个数据被更新后,后续对该数据的读取操作可能得到更新后的值,也可能是更改前

的值。

但即使过了“不⼀致时间窗⼝”这段时间后,后续对该数据的读取也不⼀定是最新之;

所以说,可以理解为数据更新后,如果能容忍后续的访问只能访问到部分或者全部访问不到,

则是弱⼀致性。

最终⼀致性

是弱⼀致性的特殊形式,存储系统保证在没有新的更新的条件下,最终所有的访问都是最后更

新的值。

不保证在任意时刻任意节点上的同⼀份数据都是相同的,但是随着时间的迁移,不同节点上的

同⼀份数据总是在向趋同的⽅向变化。

简单说,就是在⼀段时间后,节点间的数据会最终达到⼀致状态。

弱⼀致性与最终⼀致性区别

弱⼀致性即使过了不⼀致时间窗⼝,后续的读取也不⼀定能保证⼀致,⽽最终⼀致过了不⼀致

窗⼝后,后续的读取⼀定⼀致,才能说清楚弱⼀致和最终⼀致的区别

相关文档
最新文档