云计算平台是非常巨大的分布式系统,需要处理庞大的处理请求,因此任何小概率事件在此平台中都必然发生。

DBMS强调ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性 (Durability)。其中的一致性强调当程序员定义的事务完成时,数据库处于一致的状态,如对于转帐来说,事务完成时必须是A少了多少钱B就多了多少钱。而对于很多互联网应用来说,对于一致性和隔离性的要求可以降低,而可用性(Availability)的要求则更为明显。从而产生了两种弱一致性的理论:BASE和CAP。

BASE:Basically Availble --基本可用;Soft-state --;Eventual Consistency --最终一致性

CAP: Consistency 一致性;Availability 可用性; Tolerance of network Partition 分区容忍性(可理解为部分节点故障或节点之间连接故障下系统仍可正常工作)。Brewer提出的该经验理论认为这三个目标最多只能达成两个,而另一个则需要通过其他方式来弥补。

如果网络中不存在分区,客户端和存储系统在同一环境中,通过分布式事务机制可以保证一致性和可用性。但在大型网络系统中,分区是必然存在的,因此一般的选择只能是在一致性和可用性之间权衡和折衷。如Ebay的经验尽可能保证可用性,但采用周密调整数据库操作的次序、异步恢复事件,以及数据核对(reconciliation)或者集中决算(settlement batches)等方式来帮助系统达到最终一致性。

实际互联网系统往往都是ACID和BASE两种系统的结合,例如用户身份数据、交易数据通常采取ACID准则。

Guy Pardon认为,CAP理论认为三者不能同时达到是假定CAP被满足是在at the same moment in time,如果放弃这个假定就可以得到三者都满足的方案。但是在我看来,其方案也只是在可用性和一致性之间的折衷而已。放弃了读写一致性,读到的可能只是 cache中的快照而不是最新值;通过在系统无分区时才执行写入队列来保证数据更新一致性,而结果则是异步获得,相当于是对写入可用性要求的一种降低

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wdwbw/archive/2009/05/13/4179749.aspx

分布式领域CAP理论,
Consistency(一致性), 数据一致更新,所有数据变动都是同步的
Availability(可用性), 好的响应性能
Partition tolerance(分区容错性) 可靠性
定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。
关系数据库的ACID模型拥有 高一致性 + 可靠性 丧失可用性:
Atomicity原子性:一个事务中所有操作都必须全部完成,要么全部不完成。
Consistency一致性. 在事务开始或结束时,数据库应该在一致状态。
Isolation隔离层. 事务将假定只有它自己在操作数据库,彼此不知晓。
Durability. 一旦事务完成,就不能返回。
跨数据库事务:2PC (two-phase commit), 2PC is the anti-scalability pattern (Pat Helland) 是反可伸缩模式的,JavaEE中的JTA事务可以支持2PC。因为2PC是反模式,尽量不要使用2PC,使用BASE来回避。
BASE模型反ACID模型,完全不同ACID模型,牺牲高一致性,获得可用性或可靠性:
Basically Available基本可用。支持分区失败(e.g. sharding碎片划分数据库)
Soft state软状态 状态可以有一段时间不同步,异步。
Eventually consistent最终一致,最终数据是一致的就可以了,而不是时时高一致。
BASE思想的主要实现有
1.按功能划分数据库
2.sharding碎片 
BASE思想主要强调基本的可用性,如果你需要High 可用性,也就是纯粹的高性能,那么就要以一致性或容错性为牺牲,BASE思想的方案在性能上还是有潜力可挖的。
现在NoSQL运动丰富了拓展了BASE思想,可按照具体情况定制特别方案,比如忽视一致性,获得高可用性等等,NOSQL应该有下面两个流派:
1. Key-Value存储,如Amaze Dynamo等,可根据CAP三原则灵活选择不同倾向的数据库产品。
2. 领域模型 + 分布式缓存 + 存储 (Qi4j和NoSQL运动),可根据CAP三原则结合自己项目定制灵活的分布式方案,难度高。
这两者共同点:都是关系数据库SQL以外的可选方案,逻辑随着数据分布,任何模型都可以自己持久化,将数据处理和数据存储分离,将读和写分离,存储可以是异步或同步,取决于对一致性的要求程度。
不同点:NOSQL之类的Key-Value存储产品是和关系数据库头碰头的产品BOX,可以适合非Java如PHP RUBY等领域,是一种可以拿来就用的产品,而领域模型 + 分布式缓存 + 存储是一种复杂的架构解决方案,不是产品,但这种方式更灵活,更应该是架构师必须掌握的。

ACID, BASE和CAP相关推荐

  1. NoSql理解+传统关系型数据库ACID+Nosql的CAP+BASE的理解

    1)什么是Nosql NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL", 泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在 ...

  2. 分布式事务的常见概念:ACID,BASE,XA,SAGA

    ACID和BASE这是事务实现的两种基础理论, ACID是刚性事务,强调的是隔离性和强制一致性,隔离性的话就导致事务操作的资源在事务结束以前要一直被锁定占用,又因为强一致性,如果一个事务中包含了多个子 ...

  3. 谈谈对数据库中ACID、CAP、BASE的认识

    2019独角兽企业重金招聘Python工程师标准>>> ACID.CAP.BASE的区别与联系 这得从关系型数据库关系型数据库(RDBMS)和非关系型数据库(NoSQL)说起. RD ...

  4. CAP,ACID,BASE

    一.CAP C(Consistency):一致性,是指任何一个读操作总是能够读到之前完成的写操作的结果,也就是在分布式环境中,多点的数据是一致的,或者说,所有节点在同一时间具有相同的数据 对某个指定客 ...

  5. 分布式系统 - CAP, BASE, ACID之间的关系 - 学习/实践

    1.应用场景 主要用于学习分布式系统中CAP, BASE, ACID之间的关系,理清各自的应用场景. 2.学习/操作 1.文档阅读 22 | 想成为架构师,你必须知道CAP理论-极客时间 23 | 想 ...

  6. 分布式系统概念 | 分布式理论:CAP、BASE

    文章目录 CAP定理 BASE理论 CAP定理 一个分布式系统不可能同时满足一致性(Consistency).可用性(Availability).分区容错性(Partition Tolerance)这 ...

  7. 【架构师-系统设计】理解分布式系统的CAP和BASE理论

    文章内容 CAP理论 概述 CAP定义 CAP理论的三选二的艰难抉择 CA,AP,CP的实践者 CAP的小结 BASE理论 概述 BASE定义 BASE与ACID BASE小结 原文请移步这里

  8. CAP定理与BASE理论

    CAP定理与BASE理论 CAP定理 2000 年 7 月,加州大学伯克利分校的 Eric Brewer 教授在 ACM PODC 会议上提出 CAP 猜想.2年后,麻省理工学院的 Seth Gilb ...

  9. 分布式事务系列02--分布式事务定义,理论基础--CAP,BASE,酸碱平衡

    https://blog.csdn.net/u010425776/article/details/79516298 目录 一.什么是分布式事务? 二.CAP理论 三.BASE理论 酸碱平衡----AC ...

  10. java基础巩固-宇宙第一AiYWM:为了维持生计,架构知识+分布式微服务+高并发高可用高性能知识序幕就此拉开(三:注册中心、补充CAP定理、BASE 理论)~整起

    架构知识+分布式微服务+高并发高可用高性能知识序幕就此拉开(一:总览篇) 网关开了个头 你请求来了,我网关把你拦截住,验明正身,加以控制,协助你调用服务,完成请求的调用.但是这个过程中,为了解耦和或者 ...

最新文章

  1. 利用FFmpeg切割视频
  2. HttpURLConnection IllegalStateException
  3. ThinkPHP学习笔记 事务处理
  4. mt65xx android phone win10驱动,mt65xx android phone驱动下载
  5. OpenGL实现齿轮gears联动
  6. Proxy error: Could not proxy request /admin/myResources.do from localhost.jd.com:41000 to http://loc
  7. C#调用ORACLE存储过程返回结果集及函数
  8. activemq生产者和消费者的双向通信
  9. PyQt5系列(一)第一个helloworld
  10. PostgreSQL Excel包含中文字符的数据导入方法
  11. UNITY3d在移动设备上的一些优化实战(一)-概述
  12. 如何去除数据库中重复的数据
  13. GoogleVRForUnity✨一款常用的谷歌VR插件教程
  14. 工作为什么找不到,简历为什么总会石沉大海
  15. 解决 login.live.com onedrive.live.com 等微软国外网站打不开问题
  16. drawableTop,button图片显示在文字上面,文字不显示的问题
  17. mysql锁机制和索引_MySql锁机制及索引 · 十年饮冰,难凉热血
  18. Facebook多账号运营如何防关联
  19. 查验身份证 浙大陈越习题
  20. SPA、MPA 的优缺点

热门文章

  1. 运用ENVI bandmath对多波段进行计算
  2. ENVI去除NDVI/EVI异常值、NAN(not a number,无效值)、无穷大(inf)
  3. 使用flask快速搭建API
  4. 实习成长之路:MySQL二 : 一条SQL更新语句是如何执行的?
  5. 关系抽取综述及相关顶会论文介绍
  6. 怎样输出矩阵乘积C语言,c语言矩阵相乘
  7. Apache Flink 在快手的过去、现在和未来
  8. Android TV开发总结【焦点】
  9. 树莓派小车python pid_树莓派小车实现转弯(创乐博套件)
  10. python快速入门神器 知乎_Python爬虫偷懒神器!快速一键生成Python爬虫请求头