通俗易懂 强一致性、弱一致性、最终一致性、读写一致性、单调读、因果一致性 的区别与联系

  • 什么是一致性
  • 一致性的种类
  • 导致一致性出现的原因
  • 强一致性 与 弱一致性
    • 强一致性两个要求
    • 弱一致性
    • 强一致性和弱一致性举例
  • 顺序一致性
  • 最终一致性
    • 最终一致性的种类

什么是一致性

在分布式系统中,一致性(Consistency)是指多副本(Replications)问题中的数据一致性。

一致性的种类

  • 事务一致性
  • 数据一致性

本文主要讨论数据一致性(事务一致性指ACID)

导致一致性出现的原因

  • 数据的分布式存储是导致出现一致性的唯一原因

强一致性 与 弱一致性

数据一致性的种类

  • 强一致性(线性一致性):即复制是同步的
  • 弱一致性:即复制是异步的

强一致性两个要求

  • 任何一次读都能读到某个数据的最近一次写的数据。
  • 系统中的所有进程,看到的操作顺序,都和全局时钟下的顺序一致。

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

弱一致性

数据更新后,如果能容忍后续的访问只能访问到部分或者全部访问不到,则是弱一致性。

最终一致性就属于弱一致性。

强一致性和弱一致性举例

例如,对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性
用户更新网站头像,在某个时间点,用户向主库发送更新请求,不久之后主库就收到了请求。在某个时刻,主库又会将数据变更转发给自己的从库。最后,主库通知用户更新成功。

如果在返回“更新成功”并使新头像对其他用户可见之前,主库需要等待从库的确认,确保从库已经收到写入操作,那么复制是同步的,即强一致性。如果主库写入成功后,不等待从库的响应,直接返回“更新成功”,则复制是异步的,即弱一致性。

强一致性可以保证从库有与主库一致的数据。如果主库突然宕机,我们仍可以保证数据完整。但如果从库宕机或网络阻塞,主库就无法完成写入操作。

在实践中,我们通常使一个从库是同步的,而其他的则是异步的。如果这个同步的从库出现问题,则使另一个异步从库同步。这可以确保永远有两个节点拥有完整数据:主库和同步从库。 这种配置称为半同步。

顺序一致性

两个要求:

  • 任何一次读都能读到某个数据的最近一次写的数据。
  • 系统的所有进程的顺序一致,而且是合理的。即不需要和全局时钟下的顺序一致,错的话一起错,对的话一起对。(强一致性的要求比顺序一致性更严格)

顺序一致性参考

最终一致性

不保证在任意时刻任意节点上的同一份数据都是相同的,但是随着时间的迁移,不同节点上的同一份数据总是在向趋同的方向变化。

最终两个字用得很微妙,因为从写入主库到反映至从库之间的延迟,可能仅仅是几分之一秒,也可能是几个小时

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

最终一致性的种类

最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以区分为:

  • 因果一致性(Casual Consistency)。如果进程A通知进程B它已更新了一个数据项,那么进程B的后续访问将返回更新后的值,且一次写入将保证取代前一次写入。与进程A无因果关系的进程C的访问,遵守一般的最终一致性规则。
  • “读己之所写(read-your-writes)”一致性。当进程A自己更新一个数据项之后,它总是访问到更新过的值,绝不会看到旧值。这是因果一致性模型的一个特例。
  • 会话(Session)一致性。这是上一个模型的实用版本,它把访问存储系统的进程放到会话的上下文中。只要会话还存在,系统就保证“读己之所写”一致性。如果由于某些失败情形令会话终止,就要建立新的会话,而且系统的保证不会延续到新的会话。
  • 单调(Monotonic)读一致性。如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值。
  • 单调写一致性。系统保证来自同一个进程的写操作顺序执行。要是系统不能保证这种程度的一致性,就非常难以编程了。

强一致性、弱一致性、顺序一致性、最终一致性概述相关推荐

  1. 最终一致性计算机学,最终一致性(eventual consistency)引

    一致性设计在分布式系统中是一个重要问题.如果一个系统同时使用多个子数据系统来存储与读取数据,就必须设计满足功能需求的一致性定义.如果系统对不同数据子系统进行操作的结果不一致,不但可能会使用户困惑,更可 ...

  2. 分布式事务解决方案:2PC,TCC以及基于消息的最终一致性

    各种形态的分布式事务 分布式事务有多种主流形态,包括:基于消息实现的分布式事务 基于补偿实现的分布式事务 基于TCC实现的分布式事务 基于SAGA实现的分布式事务 基于2PC实现的分布式事务 这些形态 ...

  3. 【分布式事务】最终一致性解决方案

    对于分布式事务一般采用的都是最终一致性方案,而不是强一致性.而在使用最终一致性的方案时,一定要提到的一个概念是状态机. 什么是状态机?是一种特殊的组织代码的方式,用这种方式能够确保你的对象随时都知道自 ...

  4. 不要千言万语,一组漫画让你秒懂最终一致性

    直接上图 如果你以前看过最终一致性的定义那么你一定会为这幅精彩漫画拍手叫好. 你要是不知道什么是最终一致性你可以看看下面的权威定义,当然了网上关于什么是最终一致性的帖子铺天盖地,也许你已经很明白了,即 ...

  5. rocketmq 消息删除_RocketMQ 实现分布式事务,达到数据最终一致性

    作者:江之北来源:https://www.jianshu.com/p/296e0de1b52e 前言 在分布式环境下,经常会有跨服务的事务需求,典型的例子如: 服务A 为账户服务,服务B为包月服务,在 ...

  6. 基于RabbitMQ的分布式事务最终一致性解决方案

    1. 分布式事务 所谓事务,通俗一点讲就是一系列操作要么同时成功,要么同时失败.而分布式事务就是这一系列的操作在不同的节点上,那要如何保证事务的ACID特性呢. 原子性(atomicity).一个事务 ...

  7. 强一致性、弱一致性、最终一致性

    强一致性.弱一致性.最终一致性 版权声明:本文为博主原创文章,未经博主允许不得转载. 强一致性:系统中的某个数据被成功更新后,后续任何对该数据的读取操作都将得到更新后的值: 弱一致性:系统中的某个数据 ...

  8. 强一致性 弱一致性 最终一致性

    在足球比赛里,一个球员在一场比赛中进三个球,称之为帽子戏法(Hat-trick).在分布式数据系统中,也有一个帽子原理(CAP Theorem),不过此帽子非彼帽子.CAP原理中,有三个要素: 一致性 ...

  9. cap与一致性(强一致性、弱一致性、最终一致性)

    在足球比赛里,一个球员在一场比赛中进三个球,称之为帽子戏法(Hat-trick).在分布式数据系统中,也有一个帽子原理(CAP Theorem),不过此帽子非彼帽子.CAP原理中,有三个要素: 一致性 ...

最新文章

  1. Sklearn(v3)——SVM理论(4)
  2. FFmpeg音频编解码处理
  3. 前端学习(3296):显示和隐藏
  4. 计算机网络管理2018版,2018~2019学年度第二学期“计算机网络管理”专业技能竞赛火热进行中...
  5. 百练_4123 马走日(深搜)
  6. CCleaner系统优化
  7. 网络爬虫-2018个人总结
  8. wince车机刷系统刷机包_2020年刷机包是不是越小越精简,越小越流畅好用
  9. 兜兜线报软件合集_柚子快报淘抢购秒杀系列【送秒杀软件】
  10. 2.10 数值分析: 条件数的定义及计算
  11. 小学数学思维导图集合 小学数学思维导图怎么画
  12. System Repair Engineer (SREng) 2.5 常用操作
  13. Android 仿QQ、新浪相册的实现
  14. android星星闪效果,使用Canvas绘制星星闪烁的效果
  15. 05JS实现弹性相册
  16. 华为od统一考试B卷【按身高体重排队】C语言 实现
  17. 纯CSS打气球爆炸js特效
  18. 中国首台千万亿次超级计算机叫什么,中国首台千万亿次超级计算机系统研制成功...
  19. 【纸牌屋】第一季第二集经典台词
  20. 打造个人品牌的十大项目

热门文章

  1. Sting的简介以及用法
  2. 【eccv2016-论文笔记】《Seed, Expand and Constrain: ... Weakly-Supervised Image Segmentation》
  3. 区块链技术与密码学联系
  4. Android安卓应用发布平台汇总
  5. 最近摸索ros以及orbslam2的一些错误
  6. 双系统下Ubuntu20.04使用Pavucontrol无法连接pulseaudio解决办法
  7. Windows下Java下载与安装,Java第一个程序
  8. python可以写前端吗_python之前端
  9. NE555方波发生器
  10. MP4文件格式详解——结构概述