找回密码
 立即注册
查看: 33|回复: 0

数据词典:最终一致性(Eventual Consistency)

[复制链接]

656

主题

70

回帖

2291

积分

管理员

积分
2291
发表于 2025-11-7 13:18:20 | 显示全部楼层 |阅读模式
讨论一致性的时候,需要从客户端和服务端两个角度来考虑。从服务端来看,一致性是指更新如何复制分布到整个系统,以保证数据最终一致。从客户端来看,一致性主要指的是高并发的数据访问操作下,后续操作是否能够获取最新的数据。关系数据库通常实现强一致性,也就是一旦一个更新完成,后续的访问操作都可以立即读取到更新过的数据。而对于弱一致性而言,则无法保证后续访问都能够读到更新后的数据。
最终一致性的要求更低,只要经过一段时间后能够访问到更新后的数据即可。也就是说,如果一个操作OP往分布式存储系统中写入了一个值,遵循最终一致性的系统可以保证,如果后续访问发生之前没有其他写操作去更新这个值的话,那么,最终所有后续的访问都可以读取到操作OP写入的最新值。从OP操作完成到后续访问可以最终读取到OP写入的最新值,这之间的时间间隔称为“不一致性窗口”,如果没有发生系统失败的话,这个窗口的大小依赖于交互延迟、系统负载和副本个数等因素。
最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以进行如下区分。
1.因果一致性。如果进程A通知进程B它已更新了一个数据项,那么进程B的后续访问将获得进程A写入的最新值。而与进程A无因果关系的进程C的访问,仍然遵守一般的最终一致性规则。
2.“读己之所写”一致性。可以视为因果一致性的一个特例。当进程A自己执行一个更新操作之后,它自己总是可以访问到更新过的值,绝不会看到旧值。
3.会话一致性。它把访问存储系统的进程放到会话(Session)的上下文中,只要会话还存在,系统就保证“读己之所写”一致性。如果由于某些失败情形令会话终止,就要建立新的会话,而且系统保证不会延续到新的会话。
4.单调读一致性。如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值。
5.单调写一致性。系统保证来自同一个进程的写操作顺序执行。系统必须保证这种程度的一致性,否则就非常难以编程了。
【出处】林子雨.大数据技术原理与应用(第3版).人民邮电出版社,20211.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|全数联人才测评中心 ( 京ICP备2024094898号 )

GMT+8, 2025-11-18 03:11 , Processed in 0.133624 second(s), 20 queries .

版权所有: 全数联人才测评(北京)中心

友情链接: 中华全国数字人才培育联盟 全数联人才测评中心学习平台 全数联人才测评中心存证平台 全数联人工智能专员认证中心

快速回复 返回顶部 返回列表