`

笔记--强一致性、若一致性、最终一致性

阅读更多
这两天在准备面试,今天学习了下CAP原理,顺便做个笔记加深印象:
在分布式系统中会涉及到CAP原理,来保证数据的一致性,
1.什么是CAP:
一致性(Consistency)
可用性(Availability)
分区容忍性(Partition tolerance)
CAP原理是说这三个要素最多只能同时满足两点,不可能同时兼顾三点,因此在分布式架构设计时必须进行取舍,而分布式数据系统,分区容忍性是最基本的要求,否则就失去了价值,因此只能在一致性和可用性之间取一个平衡。其实对于大多数web系统并不需要强一致性,因此牺牲一致性,换取高可用性是现在多数分布式数据库产品的方向。
牺牲一致性并不是完全不管数据的一致性,否则数据混乱了可用性再高,分布式再好也就没有了意义。牺牲一致性只是不再要求关系型数据库中的强一致性,而是只要系统能达到最终一致性即可。考虑到客户体验,这个最终一致性的时间窗口要尽可能的对用户透明,也就是需要保障‘用户感知到的一致性’。通常通过数据的异步复制来达到系统的高可用和数据的最终一致性。‘用户感知到的一致性’的时间窗口取决于数据复制到一致性状态的时间。
最终一致性(eventually consistent)
对于一致性,可以分为从客户端和服务端两个不同的视角。从客户端来看,一致性主要指的是多并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。一致性是因为有并发读写才有的问题,因此在理解一致性的问题时,一定要注意结合考虑并发读写的场景。
强一致性
对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性,如果能容忍后续的部分或者全部访问不到,则是弱一致性。如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。

从服务端角度,如何尽快将更新后的数据分布到整个系统,降低达到最终一致性的时间窗口,是提高系统的可用度和用户体验非常重要的方面。对于分布式数据系统:

  • N — 数据复制的份数
  • W — 更新数据是需要保证写完成的节点数
  • R — 读取数据的时候需要读取的节点数

如果W+R>N,写的节点和读的节点重叠,则是强一致性。例如对于典型的一主一备同步复制的关系型数据库,N=2,W=2,R=1,则不管读的是主库还是备库的数据,都是一致的。

如果W+R<=N,则是弱一致性。例如对于一主一备异步复制的关系型数据库,N=2,W=1,R=1,则如果读的是备库,就可能无法读取主库已经更新过的数据,所以是弱一致性。

对于分布式系统,为了保证高可用性,一般设置N>=3。不同的N,W,R组合,是在可用性和一致性之间取一个平衡,以适应不同的应用场景。

  • 如果N=W,R=1,任何一个写节点失效,都会导致写失败,因此可用性会降低,但是由于数据分布的N个节点是同步写入的,因此可以保证强一致性。
  • 如果N=R,W=1,只需要一个节点写入成功即可,写性能和可用性都比较高。但是读取其他节点的进程可能不能获取更新后的数据,因此是弱一致性。这种情况下,如果W<(N+1)/2,并且写入的节点不重叠的话,则会存在写冲突  
 原文地址:https://blog.csdn.net/aosica321/article/details/48769913
分享到:
评论

相关推荐

    五种事务一致性比较

    五种事务一致性介绍笔记:两阶段提交、TCC、Event Sourcing、读写分离、Sagas

    STM32 L1Cache一致性探讨笔记

    STM32 L1Cache一致性详细解析笔记,深入理解Cache和DMA的机制,避免采坑

    信息系统项目管理学习笔记-软考高级

    1. 信息系统项目管理基础 1.1 基础 项目概念: 项目是为提供一项独特的产品、服务或成果所做的 临时性 ...标准 - 一致同意,由公认机构批准,可重复使用 规则 - 政府强制要求 项目环境 - 社会、政治、自然 通用管理技能

    01 - Java并发编程与高并发解决方案笔记-基础篇

    详细的讲述了并发、高并发、CPU Cache、CPU多级缓存、CPU多级缓存 - 缓存一致性(MESI)、CPU多级缓存-乱序执行优化、Java内存模型(Java Memory Model,JMM)、并发的优势和风险...等等图文并茂详解

    信息系统项目管理师 高级 -全书重点笔记整理

    2、 一致性成本和非一致性成本的定义?请分别举出两个例子。 一致性成本:项目期间用于防止项目失败的费用 (1)预防成本【生成合格产品】 培训 流程文档化 设备 选择正确的做事时间 (2)评价成本【评定质量】 ...

    老方块 ORACLE 教学笔记 整理

    老方块 ORACLE 教学笔记 整理 第1堂体验课-SQL技巧篇(一) 第2堂体验课-SQL技巧篇(二) 第3堂体验课-ORACLE并发事务和锁机制 第4堂体验课-索引机制 ...第七堂体验课-ORACLE读一致性 方块笔记--oracle基础篇.pdf

    谷歌师兄的leetcode刷题笔记-BigBellyBrother:前端开发

    这帮助我即使使用颜色也能保持干净的一致性。 遇到的问题对我来说,第一个问题是在我努力收集提交时提交到 github。 我不得不重新创建一个用户并再次开始提交,因为他们失败了。 我无法确定我一开始犯的错误。 对我...

    Java毕业设计-基于springboot开发的学生读书笔记共享-毕业论文(附毕设源代码).rar

    数据库方面,我们使用了关系型数据库进行数据存储,保证了数据的一致性和完整性。 此外,本项目还充分考虑了系统的安全性和可扩展性。通过合理的权限控制,确保了用户数据的安全;同时,我们也预留了足够的接口和...

    Protege-OWL教程笔记

    而且,这个逻辑模型允许使用推理机检查本体中的statement和定义是否具有一致性,也能识别哪个概念符合哪个定义。推理机有助于维护层次结构。这在处理有多个父类的类时非常有用。 然后介绍了OWL的三个子语言:OWL-...

    MySQL笔记整理.doc

    由于资料集中管理,电脑的资源便可由使用者共享,而且资料的保密及处理的一致性更容易达成。 数据库将相关数据的集合存储在一起的,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立...

    2014-15系统分析师复习笔记精华版(20180227150716).pdf

    分布式数据库必须保证数据库全局数据一致性,并发操作可串行性,和故障的全局性; 【特点】 (1)数据独立性与位置透明性; (2)集中和节点自治相结合; (3)支持全局数据库的一致性和可恢复性; (4)复制透明性...

    consistencycalendar:可视化习惯一致性的应用程序

    一致性日历 用于可视化习惯一致性的应用程序。 笔记 在花费大量时间专注于撰写硕士论文之后,我使用它来重新编写代码。 还探讨了JPA。 它比我习惯的更加抽象和自动化。 以前,我正在编写SQL查询语句和解析记录。 ...

    heif_conformance:原始内容,比特流和HEIF文件以进行一致性测试

    高效图像文件格式(HEIF)符合性文件候选... \ conformance_files:HEIF一致性文件笔记候选一致性文件可能会根据测试结果而更改,或者可以将新文件添加到存储库中以进行其他一致性测试。 请确保您保持本地文件为最新。

    mysql-mha笔记1

    1、原理mha适合一主多从 主从同步,注意数据一致性 2、切换过程1.从宕机的master中保存二进制文件 2.检测含有最新日志更新的slave 3.应用差异的

    数据仓库维度建模笔记

    从其它地方找到的, 关于数据仓库维度建模, 对初学者有帮助.

    【笔记】分布式系统核心问题概述(一)

    文章目录一、一致性问题1.定义2.一致性要求3.带约束的一致性二、共识算法1.问题与挑战2.常见算法三、FLP不可能原理1.定义2.定理的理解四、CAP原理1.定义2.应用场景五、ACID原则 区块链系统,首先是一个分布式系统。 ...

    \java超强笔记(超级经典)

    编译时类型的泛型和运行时类型的泛型一定要一致,没有多态。 支持泛型的集合,只能存放指定的类型,或者是指定类型的子类型。 注释(元数据): 描述代码的代码,作用是规范编译器的语法。 三种内置...

    分布式存储系统笔记

    *一致性(如何保证不同复制后的副本的数据一致性) *容错(如何进行故障检查?如何进行故障数据进行迁移?) *负载均衡(新增和减少服务器如何实现自动的负载均衡?数据迁移过程中如何保证不影响其他服务) *...

    Zookeeper笔记.zip

    Zookeeper的笔记知识,从分布式架构到一致性协议说明,Zookeeper的基本用法,Zookeeper典型使用场景,和技术内幕

    JDBC笔记 JDBC笔记

    JDBC的特性:高度的一致性、简单性(常用的接口只有4、5个)。 1.在JDBC中包括了两个包:java.sql和javax.sql。 ① java.sql 基本功能。这个包中的类和接口主要针对基本的数据库编程服务,如生成连接、执行语句...

Global site tag (gtag.js) - Google Analytics