系统架构师福音—浅谈 CAP 理论

Posted ITPUB技术小栈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统架构师福音—浅谈 CAP 理论相关的知识,希望对你有一定的参考价值。

原文同步至: http://waylau.com/cap-theorem/


本文介绍了介绍了分布式系统著名的 CAP 理论。什么是 CAP 理论?为什么说 CAP 只能三选二?了解 CAP 对于系统架构又有什么指导意义?本文将一一作答。


什么是 CAP 理论

在计算机科学理论,CAP 定理(也称为 Brewer 定理),是由计算机科学家 Eric Brewer 提出的,即在分布式计算机系统不可能同时提供以下全部三个保证:


一致性(Consistency):所有节点同一时间看到是相同的数据;

可用性(Availability):不管是否成功,确保每一个请求都能接收到响应;

分区容错性(Partition tolerance):系统任意分区后,在网络故障时,仍能操作


为什么说 CAP 只能三选二


下面分别举例说明了为什么说 CAP 只能三选二。

上面的图显示了在一个网络中,N1 和 N2 两个节点。他们都共享数据块 V,其中有一个值 V0 。运行在 N1 的 A 程序可以认为是安全的、无 bug、可预测的和可靠的。运行在 N2 是 B 程序。这个例子中,A 将写入 V 新值,而 B 从 V 读取值

系统预期执行下面的操作

  1. 首先写一个 V 的新值 V1

  2. 然后消息(M)从 N1 更新 V 的拷贝到 N2

  3. 现在,从 B 读取将返回 V1

如果网络是分区的,当 N1 到 N2 的消息不能传递时,执行上面的第三步,会出现虽然 N2 能访问到 V 的值(可用性),但其实与 N1 的 V 的值已经不一致了(一致性)。


CAP 常见模型


牺牲分区(CA 模型)


举例:

         单站点数据库

         集群数据库

         LDAP

         xFS 文件系统


实现方式:

        两阶段提交

        缓存验证协议


牺牲可用性(CP 模型)

举例:

        分布式数据库

        分布式锁定

        绝大部分协议


实现方式:

         悲观锁

         少数分区不可用


牺牲一致性(AP 模型)

举例:

            Coda

            Web 缓存

            DNS


实现方式:

            到期/租赁

            解决冲突

            乐观


CAP 的意义


在系统架构时,应该根据具体的业务场景,来权衡 CAP。比如,对于大多数互联网应用来说(如门户网站),因为机器数量庞大,部署节点分散,网络故障是常态,可用性是必须需要保证的,所以只有舍弃一致性来保证服务的 AP。而对于银行等,需要确保一致性的场景,通常会权衡 CA 和 CP 模型,CA 模型网络故障时完全不可用,CP 模型具备部分可用性。


限时优惠!DTCC门票立享7.8折!



作为国内数据库与大数据领域最大规模的技术盛宴,2016第七届中国数据库技术大会(DTCC)将于2016年5月12日-14日召开。

大会云集了国内外顶尖专家,共同探讨mysql、智能数据平台、数据治理、大数据创业、大数据深度学习等领域的前瞻性热点话题与技术,为数据库人群、大数据从业人员、广大互联网人士及行业相关人士提供最具价值的交流平台。

3月16日前,订购DTCC大会门票即享7.8折优惠! 团购更有折上折!

报名参会可直接点击阅读原文。

更多详情可访问DTCC 2016官网:
http://dtcc.it168.com/




以上是关于系统架构师福音—浅谈 CAP 理论的主要内容,如果未能解决你的问题,请参考以下文章

架构学习系列:了解CAP理论

架构师必备!mysqljson数据查询

想成为架构师,你必须掌握的CAP理论及细节

迈向大数据架构师 - 架构师转型方法与架构设计理论

架构师教程-迈向大数据架构师 - 架构师转型方法与架构设计理论

cap理论与分布式事务的解决方案