分布式架构之Consistency(一致性、强一致性,弱一致性,顺序一致性,最终一致性)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分布式架构之Consistency(⼀致性、强⼀致性,弱⼀致性,顺序⼀致性,最终
⼀致性)
⼀致性(Consistency)
是指多副本(Replications)问题中的数据⼀致性。可以分为强⼀致性、顺序⼀致性与弱⼀致
性。
强⼀致性(Strict Consistency)
系统中的某个数据被成功更新后,后续任何对该数据的读取操作都将得到更新后的值;
也称为:原⼦⼀致性(Atomic Consistency)线性⼀致性(Linearizable Consistency)
两个要求:
任何⼀次读都能读到某个数据的最近⼀次写的数据。
系统中的所有进程,看到的操作顺序,都和全局时钟下的顺序⼀致。
简⾔之,在任意时刻,所有节点中的数据是⼀样的。
例如,对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强⼀致性。
总结:
⼀个集群需要对外部提供强⼀致性,所以只要集群内部某⼀台服务器的数据发⽣了改变,那么
就需要等待集群内其他服务器的数据同步完成后,才能正常的对外提供服务。
保证了强⼀致性,务必会损耗⾼可⽤性。
顺序⼀致性(Sequential Consistency)
两个要求:
任何⼀次读都能读到某个数据的最近⼀次写的数据。
系统的所有进程的顺序⼀致,⽽且是合理的。即不需要和全局时钟下的顺序⼀致,错的话⼀起
错,对的话⼀起对。
弱⼀致性
系统中的某个数据被更新后,后续对该数据的读取操作可能得到更新后的值,也可能是更改前
的值。
但即使过了“不⼀致时间窗⼝”这段时间后,后续对该数据的读取也不⼀定是最新之;
所以说,可以理解为数据更新后,如果能容忍后续的访问只能访问到部分或者全部访问不到,
则是弱⼀致性。
最终⼀致性
是弱⼀致性的特殊形式,存储系统保证在没有新的更新的条件下,最终所有的访问都是最后更
新的值。
不保证在任意时刻任意节点上的同⼀份数据都是相同的,但是随着时间的迁移,不同节点上的
同⼀份数据总是在向趋同的⽅向变化。
简单说,就是在⼀段时间后,节点间的数据会最终达到⼀致状态。
弱⼀致性与最终⼀致性区别
弱⼀致性即使过了不⼀致时间窗⼝,后续的读取也不⼀定能保证⼀致,⽽最终⼀致过了不⼀致
窗⼝后,后续的读取⼀定⼀致,才能说清楚弱⼀致和最终⼀致的区别