`
lucene321
  • 浏览: 174994 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CAP原理

阅读更多

    作者:NinGoo&nbsp; 原文链接:http://www.ningoo.net/html/2010/cap_theorem_and_eventually_consistent.html <br /> <br />CAP原理(CAP Theorem) <br />  在足球比赛里,一个球员在一场比赛中进三个球,称之为帽子戏法(Hat-trick)。在分布式数据系统中,也有一个帽子原理(CAP Theorem),不过此帽子非彼帽子。CAP原理中,有三个要素: <br />一致性(Consistency) <br />可用性(Availability) <br />分区容忍性(Partition tolerance) <br />  CAP理论告诉我们,一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。因此在进行分布式架构设计时,必须做出取舍。对于分布式数据系统,分区容忍性是基本要求,否则就失去了价值。因此设计分布式数据系统,就是在一致性和可用性之间取一个平衡。对于大多数web应用,其实并不需要强一致性,因此牺牲一致性而换取高可用性,是目前多数分布式数据库产品的方向。 <br /> <br />  当然,牺牲一致性,并不是完全不管数据的一致性,否则数据是混乱的,那么系统可用性再高分布式再好也没有了价值。牺牲一致性,只是不再要求关系型数据库中的强一致性,而是只要系统能达到最终一致性即可,考虑到客户体验,这个最终一致的时间窗口,要尽可能的对用户透明,也就是需要保障“用户感知到的一致性”。通常是通过数据的多份异步复制来实现系统的高可用和数据的最终一致性的,“用户感知到的一致性”的时间窗口则取决于数据复制到一致状态的时间。 <br /> <br />最终一致性(eventually consistent) <br />对于一致性,可以分为从客户端和服务端两个不同的视角。从客户端来看,一致性主要指的是多并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。一致性是因为有并发读写才有的问题,因此在理解一致性的问题时,一定要注意结合考虑并发读写的场景。 <br /> <br />从客户端角度,多进程并发访问时,更新过的数据在不同进程如何获取的不同策略,决定了不同的一致性。对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。如果能容忍后续的部分或者全部访问不到,则是弱一致性。如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。 <br />最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以区分为: <br />因果一致性。如果进程A通知进程B它已更新了一个数据项,那么进程B的后续访问将返回更新后的值,且一次写入将保证取代前一次写入。与进程A无因果关系的进程C的访问遵守一般的最终一致性规则。 <br />“读己之所写(read-your-writes)”一致性。当进程A自己更新一个数据项之后,它总是访问到更新过的值,绝不会看到旧值。这是因果一致性模型的一个特例。 <br />会话(Session)一致性。这是上一个模型的实用版本,它把访问存储系统的进程放到会话的上下文中。只要会话还存在,系统就保证“读己之所写”一致性。如果由于某些失败情形令会话终止,就要建立新的会话,而且系统的保证不会延续到新的会话。 <br />单调(Monotonic)读一致性。如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值。 <br />单调写一致性。系统保证来自同一个进程的写操作顺序执行。要是系统不能保证这种程度的一致性,就非常难以编程了。 <br />上述最终一致性的不同方式可以进行组合,例如单调读一致性和读己之所写一致性就可以组合实现。并且从实践的角度来看,这两者的组合,读取自己更新的数据,和一旦读取到最新的版本不会再读取旧版本,对于此架构上的程序开发来说,会少很多额外的烦恼。 <br /> <br />从服务端角度,如何尽快将更新后的数据分布到整个系统,降低达到最终一致性的时间窗口,是提高系统的可用度和用户体验非常重要的方面。对于分布式数据系统: <br />N — 数据复制的份数 <br />W — 更新数据时需要保证写完成的节点数 <br />R — 读取数据的时候需要读取的节点数 <br />如果W+R&gt;N,写的节点和读的节点重叠,则是强一致性。例如对于典型的一主一备同步复制的关系型数据库,N=2,W=2,R=1,则不管读的是主库还是备库的数据,都是一致的。 <br />如果W+R&lt;=N,则是弱一致性。例如对于一主一备异步复制的关系型数据库,N=2,W=1,R=1,则如果读的是备库,就可能无法读取主库已经更新过的数据,所以是弱一致性。 <br />对于分布式系统,为了保证高可用性,一般设置N&gt;=3。不同的N,W,R组合,是在可用性和一致性之间取一个平衡,以适应不同的应用场景。 <br />如果N=W,R=1,任何一个写节点失效,都会导致写失败,因此可用性会降低,但是由于数据分布的N个节点是同步写入的,因此可以保证强一致性。 <br />如果N=R,W=1,只需要一个节点写入成功即可,写性能和可用性都比较高。但是读取其他节点的进程可能不能获取更新后的数据,因此是弱一致性。这种情况下,如果W&lt;(N+1)/2,并且写入的节点不重叠的话,则会存在写冲突CAP原理与最终一致性
 
分享到:
评论

相关推荐

    cap原理

    cap原理

    CAP原理和BASE思想.docx

    CAP原理和BASE思想

    2-2+分布式系统中的CAP原理1

    2-2+分布式系统中的CAP原理1

    Brewer’CAP原理--CAP定理

    CAP定理指在设计分布式系统时,一致性(Consistent)、可用性(Availability)、Partition Tolerance(分区容忍性)三个属性不可能同时满足,该定理也叫做布鲁尔定理。CAP定理明确了分布式系统所能实现系统的局限性...

    java面试最全八股文

    CAP原理和BASE理论 CAP原则(CAP定理)、BASE理论 一、CAP原则 一致性与可用性的决择编辑 取舍策略 BASE理论 基本可用 最终一致性 小结: 与NoSQL的关系编辑 CAP的是什么关系 为什么会是这样 选择权衡 延伸 分布式系统...

    CAP与一致性级别介绍PPT

    CAP与一致性级别介绍PPT,是我在课堂报告时制作,介绍了CAP原理与实际的场景。

    数据库原理书上例子CAP

    呵呵,这是Patrick O'Neil书上的例子,CAP,但愿对你有用~

    CAP4加密分析软件

    利用CAP软件实现几种常用密码加密和解密;利用CAP软件对密文进行分析。用于分析一写常见的加密算法,例如Hill、Vigenere算法。

    Scan2Cap:Scan2Cap:RGB-D扫描中的上下文感知密集字幕

    Scan2Cap:Scan2Cap:RGB-D扫描中的上下文感知密集字幕

    从零学架构无评论版

    高可用架构模式:将介绍 CAP 原理的理解和应用、FMEA 分析方法;从主备、主从、主主、集群、分区详解常见的高可用存储架构;给出如何设计高可用计算架构;使用异地多活方案保障业务高可用的技巧和步骤。 可扩展架构...

    MicroCap_12cd.zip

    MicroCap_12 已经开源免费,是一款用于模拟和数字电路原理图设计和仿真的软件。Micro-Cap为交互式设计和仿真电路提供电子环境。Micro-Cap不断扩展其功能。目前,该软件是一个现代化,简单,用户友好的界面和许多用于...

    这就是搜索引擎

    • 什么是CAP 原理?什么是ACID 原理?它们之间有什么异同? • Google 的整套云计算框架包含哪些技术? Hadoop 系列和Google 的云计算框架是什么 关系? Goo剖e 的三驾马车GFS、BigTable、MapReduce 各自代表什么...

    网站架构技术

    CAP原理 数据备份 失效转移 高可用网站的软件质量保证 网站发布 自动化测试 预发布验证 代码控制 自动化发布 灰度发布 网站运行临控 临控数据采集 临控管理 永无止境:网站的可伸缩性 网站...

    cap多电子原子泡利原理解析PPT学习教案.pptx

    cap多电子原子泡利原理解析PPT学习教案.pptx

    cap多电子原子泡利原理解析PPT教学课件.pptx

    cap多电子原子泡利原理解析PPT教学课件.pptx

    分布式系统一致性(ACID、CAP、BASE、二段提交、三段提交、TCC、幂等性)原理详解1

    1背景分布式系统致性(ACID、CAP、BASE、段提交、三段提交、TCC、幂等性)原理详解-掘的是按照功能拆分,秉着 “专业的人干专业的事儿” 的原则,把

    分布式系统架构的基本原则和实践

    应用的高可用要求,故障转移分布式系统遵循几个基本原则CAPTheorem,CAP原理中,有三个要素:1.一致性(Consistency)2.可用性(Availability)3.分区容忍性(Partitiontolerance)CAP原理指的是,在分布式系统中这三个...

    区块链共识机制的演进

    FLP不可能原理(FLPimpossibility):在网络可靠,存在节点失效(即便只有一个)的最小化异步模型系统中,不存在...CAP原理最早由EricBrewer在2000年,ACM组织的一个研讨会上提出猜想,后来 Lynch等人进行了证明。分布

    IMX6ULL 核心板ALTIUM原理图库+PCB封装库+主要器件技术手册.zip

    IMX6ULL 核心板ALTIUM原理图库+PCB封装库+主要器件技术手册, 器件手册: IMX6ULLIEC.pdf KLM8G1GETF-B041-14B.pdf MT41K256M16TW-107 IT.pdf MT9700.pdf RB521S30.PDF RT8096CHGJ5.PDF SSM3J328R.pdf 原理图库器件...

Global site tag (gtag.js) - Google Analytics