浅谈 CAP 理论

本文介绍了介绍了分布式系统著名的 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 模型具备部分可用性。

参考引用

时间: 2024-09-28 19:43:27

浅谈 CAP 理论的相关文章

小脑袋竞价软件浅谈网站多渠道广播式营销理论

明日即是圣诞节了,值此佳节和我们同享网站多路径广播式推广理论,提早祝 A5修正和广大读者们圣诞快乐.几个月从前,我宣告过一篇<从"学易优"看开源搭站产品的运用> ,与我们同享了怎么运用开源搭站产品进行优化,其时学易优在一个月的时间内alexa排行从二百多万进升至四十多万,那在从前的两个月的时间里,小脑袋竞价软件浅 谈网站多渠道广播式营销理论这种上升的劲头有没有接连?我们看一组运用站长东西进行查询的数据. &http://www.aliyun.com/zixun/ag

浅谈网站经营管理二、三事

浅谈网站经营管理二.三事 建置好一个网站,便要正式迈向经营的路程.其实网站虽然本身的功能使用设计非常重要,但经营的好坏,才是一个网站是否能够生存的关键. 推销你的网站 一个网站做的再怎么好,若是没有人知道网站的存在,那么一切都是枉然,因此将网站广为告知是网站经营的第一个动作. 在传统的营销观念里,谈到营销第一个直觉就是要花钱.无可讳言的,在预算许可的前提下,透过一些传统营销媒体的运作,例如电视广告.户外媒体.宣传造势活动等,是提升网站知名度.增加阅览率最直接的方法,而这些方式在前几年网络投资热络

总结Flash建站经验:浅谈flash web的结构

web 引言 记得我刚接触FLASH那会儿,应该是FLASH6末期吧,国内的flash web还是很少的,牛X的更是屈指可数,而且这个时候所谓的牛X,一般都是指效果很酷,技术强的基本没有.其实这是必然,国内早期的flash web开发者大都是由FLASH动画制作者或是网页设计师转变而来.他们非常热衷于片头和过渡效果,为此不惜牺牲浏览者的等待时间并吃掉浏览者的CPU.这就是为什么现在好多人一谈起flash web就觉得它体积大,效率低的根源了.当然如果是真对个人网站,这也无可厚非,个人网站信息量小

浅谈SEO优化的三大误区

seo需要的是我们亲自动手的能力,绝不是人云亦云,因为有一些道理不是随口说说就能够明白,在搜索引擎不断变化的今天,每一次的调整,都有人做总结;每一次的更新,都会有他的道理,现在无论在什么地方,关于seo的分析总是有很多,相信经常在seo论坛上和A5论坛上逛的朋友,总是可以看到很多理论派的seo文章,这些观点都认同吗,那么,这些分析之中,自己就浅谈下有哪些seo不同的观点吧. 一:seo外链和排名的关系,外链越多,排名越好吗? 每一位seo都知道外链的重要性,每天的工作任务之一就是发外链,每天的任

企业网站优化经验浅谈SEO之站内优化篇

     当初的自己开始工作可算是顶级的seo菜鸟了,自己当初在学校,在网上学习的全是seo理论知识,要是说实践的话那是曾没有过的.对此我也很感谢我以前公司的培养和给予我的机会.初做seo,是给企业公司网站做seo搜素引擎优化. 那么我就针对我做过的企业网站seo,结合自己那么一丁点的经验来给大家浅谈一下网站内部优化. 首先,你拿到一个网站你得首先看他是否适合做seo,是否需要做改版,网站结构是否需要改动等等问题.一般来说DIV+CSS是比较适合做seo网站优化的.待你解决掉网站构架整体问题后,

浅谈区域经理如何开发一个新市场?

新市场的开发一直以来都是企业经营管理的重要策略,新区域的开拓意味着企业经营区域的扩大,意味着在行业市场份额的提升,意味着企业知名度.影响力的扩大.但是新区域的开拓也伴随着各种风险和企业管理成本的增加,风险诸如文化的适应.人员的稳定性及养成.区域的经营模式.客户对价值的认可程度以及新区域服务的能力等,都是一个新区域成长所要面临的诸多问题,提前 认识到这些问题,会让我们在市场开发的过程中,更加合理的评估我们开拓的进程以及有意识的规避风险. 我们暂且不谈我们什么时候该进入一个新区域,而从一个新区域的开

企业安全建设之浅谈办公网安全

企业安全建设之浅谈办公网安全.在大多数互联网公司,安全建设的主要精力都投入在业务网安全上,办公网往往成为短板.为避免教科书式的理论说教,本文以攻防的角度,以中型互联网公司为例,讨论下办公网安全建设.这里的办公网是狭义的办公网,仅包括员工办公的网络区域,支撑办公的erp.邮件等系统不包含在内. 办公网渗透思路 办公网通常是黑客入侵的一大突破口,究其原因我认为主要为: 办公网安全投入相对业务网不足,入侵成本较低 办公网的主体是人,人有七情六欲,上网行为千奇百怪,攻击面大于业务网 业务网往往信赖办公网

Apache Spark源码走读(十一)浅谈mllib中线性回归的算法实现&amp;Spark MLLib中拟牛顿法L-BFGS的源码实现

<一>浅谈mllib中线性回归的算法实现 概要 本文简要描述线性回归算法在Spark MLLib中的具体实现,涉及线性回归算法本身及线性回归并行处理的理论基础,然后对代码实现部分进行走读. 线性回归模型 机器学习算法是的主要目的是找到最能够对数据做出合理解释的模型,这个模型是假设函数,一步步的推导基本遵循这样的思路 假设函数 为了找到最好的假设函数,需要找到合理的评估标准,一般来说使用损失函数来做为评估标准 根据损失函数推出目标函数 现在问题转换成为如何找到目标函数的最优解,也就是目标函数的最

浅谈微服务的来龙去脉

浅谈微服务的来龙去脉 背景介绍 微服务怎么来的 微服务是进化出来的 微服务不是银弹 作者:王清培(Plen wang) 沪江 公共业务平台 应用架构师 转载至沪江技术学院微信公众号 背景介绍 最近一段时间公共业务平台在进行大面积的重构,对原来的技术栈进行迁移,逐渐往java.go.node.js等开源.自由为主的技术体系中过度. 虽然这主要是替换技术框架,但也是我们应用系统进行重新设计.业务流程重新梳理的一个好机会,我们将利用这次机会来重构之前发现的一些问题. Martin Fowler大师<重