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

从ACID到CAP/BASE

 
阅读更多

由集中式系统到分布式系统的发展,事务的原则也有原先的ACID发展成了CAP/BASE。

ACID
事务(Transaction)是由一系列对系统中数据进行访问和更新的操作锁组成的一个程序执行逻辑单元(Unit),狭义上的事务特指数据库事务。
事务具有四个特征,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),简称事务的ACID特性。

原子性:事务必须是一个原子的操作序列单元,要么全部成功,要么全部失败。
一致性:事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。
隔离性:并发的事务是相互隔离的,一个事务的执行不能被其他事务干扰,定义了4个事务隔离级别。
持久性:事务一旦提交,他对数据库中对应数据的状态变更就应该是永久性的。

CAP和BASE理论
集中式系统中事务可以容易的满足ACID这几个特性,但是对于一个高访问量、高并发的互联网分布式系统来说,如果我们期望实现一套严格满足ACID特性的分布式事务,很可能出现的情况就是在系统的可用性和严格一致性之间出现冲突,因为当我们要求分布式系统具有严格一致性时,很可能就需要牺牲掉系统的可用性。可用性和一致性又是分布式系统不可或缺的两个属性,在可用性和一致性之间永远无法存在一个两全其美的方案,于是出现了诸如CAP和BASE这样的分布式系统经典理论。

CAP定理
一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个基本需求,最多只能同时满足其中的两项。

一致性:所有节点在同一时间具有相同的数据,注:这里的一致性和ACID中的一致性是不一样的
可用性:服务一直可用,而且是正常响应时间
分区容错性:分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

CAP证明
关于CAP定理中为什么只能同时满足其中的两项,这里可以做一个简单的证明:
前提:对于一个分布式系统而言,分区容错性可以说是一个最基本的要求。因为既然是一个分布式系统,那么分布式系统中的组件必然需要被部署到不同的节点,否则也就无所谓分布式系统了

假设网络中有2个节点N1和N2,N1和N2上分别安装了数据库D1(主)和D2(备)形成主备模式,D1(主)负责写并且读,D2(备)分担一部分读
正常情况下:D1(主)写完数据,同步到D2(备),读取D2可以读到最新的数据
非正常情况下:作为一个分布式系统,它和单机系统的最大区别,就在于网络,现在假设一种极端情况,N1和N2之间的网络断开了;D1(主)写完数据,D2(备)没有更新到最新的数据;这时候怎么办,有2个选择:第一,牺牲数据一致性,响应旧的数据给用户;第二,牺牲可用性,阻塞等待,直到网络连接恢复,数据更新操作完成之后,再给用户响应最新的数据。

BASE理论
BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写。很明显BASE理论更加倾向满足CAP理论中的AP,既满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

CAP、ACID以及BASE之间的关系
网上看到过一张图片,感觉对三者之间的关系描述的很清晰,如下图所示:

CAP理论中根据倾向的不同:
CA – 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大(ACID)
AP – 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些(BASE)
CP – 满足一致性,分区容忍必的系统,通常性能不是特别高(BASE)个人认为里面的?也可以写成BASE

其实我们还可以从数据库这个角度来看:
关系型数据库和非关系型数据库也能在CAP理论中得到体现,如下图所示(来源网上):

关系型数据库(RDBMS)遵循ACID原则,非关系型数据库遵循BASE原则

总结
ACID强一致性模型,而BASE提出通过牺牲强一致性来获得可用性但最终达到一致状态;在实际的分布式场景中,不同业务单元和组件对数据一致性的要求是不同的,因此在具体的分布式系统架构设计中,ACID特性和BASE理论往往会结合在一起使用。

 

https://my.oschina.net/OutOfMemory/blog/796248

 
分享到:
评论

相关推荐

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

    在本文中,我们将深入探讨几种重要的理论和实践方法,包括ACID特性、CAP定理、BASE原则,以及几种常见的分布式事务处理协议:二段提交、三段提交和TCC(Try-Confirm-Cancel)模式,同时也会提到幂等性这一关键概念。...

    CAP、BASE、ACID区分

    CAP、BASE、ACID区分 一、CAP CAP是分布式计算领域的公认定理。 1、一致性(Consistency) all nodes see the same data at the same time 在同一时间看见所有节点的数据是一致的 所有节点返回的数据都是一样的,...

    CAP原理和BASE思想.docx

    CAP原理和BASE思想是分布式系统设计的重要理论基础,它们帮助开发者在一致性、可用性和分区容错性之间做出明智的决策。而NoSQL运动则提供了更多适应现代分布式环境的数据存储解决方案,这些解决方案通常基于BASE思想...

    OceanBase企业级数据库介绍.pptx

    OceanBase 遵循 ACID 理论,即原子性、一致性、隔离性和持久性。这些理论是数据库系统的基础,确保了数据库的正确性和可靠性。 分布式事务: OceanBase 支持分布式事务,使用 Paxos + 2PC 协议来确保事务的一致性...

    OceanBase企业级分布式数据库介绍.pdf

    * 一致性(C):一个事务只能使数据库从一个一致的状态跳转到另一个一致的状态 * 隔离性(I):多个并发事务互相不影响 * 持久性(D):一旦事务成功提交,它对数据库的影响是永久的 分布式事务 OceanBase支持...

    2013年中国数据库大会-11-NoSQL一致性实践:我对CAP的一点认识

    CAP定理的历史沿革从1997年Fox和Brewer提出BASE概念开始,1999年他们又提出了CAP原理,直到2000年在PODC会议上正式提出CAP定理。2002年,Seth Gilbert和Nancy Lynch正式证明了CAP定理的可行性。CAP定理的流行得益...

    CAP Twelve Years Later——How the 'Rules' Have Changed

    NoSQL数据库通常采用BASE(基本可用、软状态、最终一致性)原则,与ACID的强一致性形成对比。 总的来说,CAP定理不再被视为一个硬性约束,而是成为设计分布式系统时的一个指导框架。设计师需要根据具体的应用场景和...

    Brewer’s CAP Theorem.pdf

    In the years before his talk, the size of data grew immensely, making it necessary to find more scalable solutions than the so far existing ACID-databases. As a result new principles were developed, ...

    Paxos 到 Zookeeper:分布式一致性原理与实践 高清

    全书共 8 章,分为五部分:第一部分(第 1 章)主要介绍了计算机系统从集中式向分布式系统演变过程中面临的挑战,并简要介绍了 ACID、CAP 和 BASE 等经典分布式理论;第二部分(第 2~4 章)介绍了 2PC、3PC 和 ...

    分布式论文:CAP Twelve Years Later: How the ‘Rules’ Have Changed

    这意味着在分区发生时,不仅要考虑如何操作,还要规划如何从分区中恢复,从而超越CAP定理的传统限制。 #### 三、CAP定理的应用实例分析 - **NoSQL运动**:近年来,随着互联网应用的快速发展,NoSQL数据库逐渐兴起...

    OceanBase:云时代企业级分布式数据库的技术挑战.pdf

    Paxos通过多数派共识机制保证高可用性,而CAP定理指出在分区容忍性、一致性和可用性之间必须做出权衡。OceanBase在此基础上进行了优化,提供了主备同步模式,以适应不同的可用性和性能需求。 OceanBase的演进历程中...

    zookeeper(一)

    分布式环境 分布式环境的特点 分布性 并发性:程序运行过程中,并发性操作是很常见的。比如同一个分布式系统中的多个节点,同时访问一个共享资源。数据库、分布式存储。...CAP/BASE理论 CAP consisten

    分布式事务解决方案「手写代码」视频教程

    1.基础概念:了解事务的ACID、CAP理论、BASE理论,为分布式方案打基础 2.2PC/3PC:通过2PC演化各种方案:XA方案、JTA、LCN、Seata 3.TCC:TCC不依赖本地事务的解决方案 4.可靠消息最终一致性:唯有了解方案原理,方能...

    java面试 distributed-system中知识点 BASE理论 整理.pdf

    **分布式系统中的BASE理论** ...与传统数据库的ACID属性相比,BASE理论更适合构建高扩展性和高可用性的分布式系统。在实际应用中,开发者需要根据业务需求和场景来权衡一致性与可用性,选择合适的解决方案。

    CAP理论与分布式数据库[归纳].pdf

    分布式数据库的挑战来自于 CAP 理论的限制,但通过采用 BASE 模型和 NoSQL 数据库,可以实现高可用性和扩展性。VoltDB 和 MySQL Cluster 是分布式数据库的代表,NoSQL 数据库也提供了多种选择。

    从Paxos到Zookeeper

    全书共8章,分为五部分:第一部分(第1章)主要介绍了计算机系统从集中式向分布式系统演变过程中面临的挑战,并简要介绍了ACID、CAP和BASE等经典分布式理论;第二部分(第2~4章)介绍了2PC、3PC和Paxos三种分布式...

    Paxos到Zookeeper:分布式一致性原理与实践

    全书共8章,分为五部分:第一部分(第1章)主要介绍了计算机系统从集中式向分布式系统演变过程中面临的挑战,并简要介绍了ACID、CAP和BASE等经典分布式理论;第二部分(第2~4章)介绍了2PC、3PC和Paxos三种分布式...

    CAP理论1

    面对CAP理论的挑战,BASE理论应运而生。BASE代表基本上可用(Basically Available)、软状态(Soft-state)、最终一致性(Eventually Consistent)。BASE理论主张在分布式系统中,牺牲强一致性以提高可用性和容错性...

Global site tag (gtag.js) - Google Analytics