从分布式事务到CAP理论和BASE理论

前言

我在《数据库事务和事务的隔离级别》和《再谈数据库事务隔离级别》两篇文章中详细介绍了数据库事务的隔离级别。本文将会从分布式的事务开始谈起,以及CAP理论和BASE理论。

分布式事务

随着分布式计算的发展,事务在分布式计算领域中也得到了广泛的应用。在单机数据库中,我们很容易能够实现一套满足ACID特性的事务处理系统,但是在分布式数据库中,数据分散在各台不同的机器上,如何对这些数据进行分布式事务处理具有非常大的挑战。

分布式事务是指事务的参与者,支持事务的服务器,资源服务器以及事务管理器分别位于分布式系统的不同节点之上,通常一个分布式事务中会涉及对多个数据源或者业务系统的操作。

我们可以设想一下最典型的的分布式事务场景。一个跨银行转账的操作,比如从建行的账户转账到农行的账户上,这一个操作包含需要调用分布式中两个不同节点上的服务1.取款服务2.目标账户的存款服务。这两个服务之间是无状态并且是相互保持独立的,共同构成一个完成的分布式事务。  如果调用第一个取款服务成功,而再目标账户的存款服务时因为某一种原因导致调用失败了,那么就必须要全部回滚到取款之前的状态,否则,用户会发现,账户中的钱不翼而飞。

一个分布式事务可以看做是由多个分布式的操作序列组成的。我们把这些操作序列叫做子事务。因此分布式事务也可以被叫做嵌套性的事务,同时也就具有ACID的事务特性。但是在分布式事务中,各个子事务的执行是分布式的。因此我们要实现能够保证ACID特性的分布式事务就变得很难很难。

在一套搞访问量,高并发的分布式系统下,如果想要去实现一个严格的ACID特性的分布式事务,那就会造成系统的可用性和严格一致性的冲突,严格的一致性,就意味着需要牺牲掉系统的可用性。因此在可用性和严格一致性存在着不能兼顾的难题,于是就cap和base这样的理论。

CAP理论

来自加州大学伯克利分校的Eric Brewer教授,这位教授好像很厉害的样子,据说是加州大学伯克利分校的终身教授,他首次提出了著名的cap猜想。后来,来自麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了这个猜想,从此出现了公认的cap定理:一个分布式系统不可能同时满足一致性[Consistency],可用性[Availability],和分区容错性[Partition tolerance]这三个基本需求,最多只能同时满足其中的两项

①一致性。

一致性是指数据在多个副本之间是否能够保持一致的特性。假如现在的多个结点中的数据是保持一致的,当执行完某一个更新操作之后,应当要保证系统的数据然后处于一致性的状态。

对于一个将数据副本分布在不同的分布式节点上,如果对第一个结点的数据进行了更新的操作,并且更新成功之后,却没有让第二个节点得到相应的更新。当外部系统再去调用第二个节点时,获取到的依然是原始的数据,这就是分布式数据不一致的情况了。在分布式系统中,如果能够做到针对一个数据项更新操作执行成功之后,所有的用户都可以读取到最新的值,那么这样的系统就被认为是具有强一致性的。

②可用性。

可用性是指系统提供的服务必须一致处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果

有限的时间内:对于用户的一个操作请求,系统必须能够在指定的时间内返回对应的结果。如果超过了这个时间,就认为系统是不可用的。

返回结果是可用性的一个非常重要的指标,它要求系统在完成对用户请求的处理后,返回一个正常的响应结果。正常的响应结果包含成功或失败,而不是一个让用户迷惑的结果。

③分区容错性。

分布式系统在遇到任何网络分区故障的时候,仍然需要对外提供满足一致性和可用性的服务。

cap定理示意图:我从proccesson模板上找到现成的一张图。

一个分布式系统既然不能同时满足上述的三个需求,因此在进行对cap定理的应用时,我们就需要去抛弃一项。

①选择CA

放弃分区容错性,比较简单的方式就是把所有的数据都放在一个分布式节点上。那不就又成为了单机应用了吗?

②选择CP

放弃可用性,一旦出现网络故障,受到影响的服务需要再等待一定时间,因为系统处于不可用的状态。

③选择AP

放弃一致性,这里所指的一致性是强一致性,但是确保最终一致性。是很多分布式系统的选择。

小结:从cap的定理可以看出,分区容错性是一个最基本的要求,因为既然是一个分布式系统,必然要部署到两个或两个以上的节点上,否则,就不是分布式系统,因此我们只能在一致性和可用性寻求平衡。

BASE理论

base是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写。base是对cap中一致性和可用性的权衡的结果。是根据cao理论演变而来,核心思想是即使无法做到强一致性,但是每个应用根据自身的业务特点,采用适当的方式来使系统达到最终与执行。

①基本可用

基本可用指的是分布式系统出现了不可预知故障的时候,允许损失部分可用性。响应时间合理延长,功能上适当做服务降级。

②弱状态

弱状态指的是允许系统中的数据存在中间状态,并认为该中间状态不会永祥系统的整体可用性,即允许在各个节点数据同步时存在延时。

③最终一致性

最终一致性强调的是系统中所有的数据副本,在经过一点时间 的同步之后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证数据最终能够达到一致。而不需要实时保证系统数据的一致性。

原文地址:https://www.cnblogs.com/sunshine798798/p/9737296.html

时间: 2024-10-12 23:11:27

从分布式事务到CAP理论和BASE理论的相关文章

CAP原则、BASE理论

CAP原则.BASE理论 2017-12-15 目录 1 CAP原则  1.1 CAP原则是什么  1.2 CAP为何三者不可得兼  1.3 一致性与可用性的决择2 BASE理论  2.1 BASE理论是什么  2.2 ACID和BASE的区别与联系  2.3 最终一致性五钟变种3 分布式系统的典型应用参考 计算机系统从集中式向分布式的变革,随着包括分布式网络.分布式事务和分布式数据一致性等在内的一系列问题与挑战,同时也催生了一大批诸如ACID.CAP和BASE等经典理论的快速发展. 1 CAP

从分布式一致性谈到CAP理论、BASE理论

问题的提出 在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景. 1.火车站售票 假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然后拿着车票去检票口,再坐上火车,开始一段美好的旅行----一切似乎都是那么和谐.想象一下,如果他选择的目的地是杭州,而某一趟开往杭州的火车只剩下最后一张车票,可能在同一时刻,不同售票窗口的另一位乘客也购买了同一张车票.假如说售票系统没有进行一致性的保障,两人都购票成功了.而在检票口检票的时候,其中一

(二)从分布式一致性谈到CAP理论、BASE理论

问题的提出 在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景. 1.火车站售票 假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然后拿着车票去检票口,再坐上火车,开始一段美好的旅行----一切似乎都是那么和谐.想象一下,如果他选择的目的地是杭州,而某一趟开往杭州的火车只剩下最后一张车票,可能在同一时刻,不同售票窗口的另一位乘客也购买了同一张车票.假如说售票系统没有进行一致性的保障,两人都购票成功了.而在检票口检票的时候,其中一

CAP原则和BASE理论

CAP原则 CAP原则又称CAP定理,是一个经典的分布式系统理论.CAP理论告诉我们:一个分布式系统不可能同时满足一致性(C:Consistency).可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中两项. 一致性 在分布式环境下,一致性是指数据在多个副本之间能否保持一致的特性.在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态. 对于一个将数据副本分布在不同分布式

CPA理论与Base理论

CPA理论: 由于对系统或者数据进行了拆分,我们的系统不再是单机系统,而是分布式系统,针对分布式系统的CAP原理包含如下三个元素. C:Consistency,一致性.在分布式系统中的所有数据 备份,在同一时刻具有同样的值,所有节点在同一时刻读取的数据都是最新的数据副本. P: Partition tolerance,分区容忍性.尽管网络上有部分消息丢失,但系统仍然可继续工作. A:Availability,可用性,好的响应性能.完全的可用性指的是在任何故障模型下,服务都会在有限的时间内处理完成

分布式系统CAP定理与BASE理论

CAP定理: 一个分布式系统不可能同时满足一致性(C:Consistency).可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本要求,最多只能满足其中的两项. 一致性 在分布式环境中,一致性是指数据在多个副本之间是否能够保持强一致的特性. 对于一个将数据副本分布在不同节点上的分布式系统来说,如果对第一个节点的数据进行了更新操作并且更新成功后,却没有使得第二个节点上的数据得到相应的更新,于是在对第二个节点的数据进行读取操作时,获取的依然是更

CAP原则(CAP定理)、BASE理论

参考文章: https://www.cnblogs.com/duanxz/p/5229352.html 原文地址:https://www.cnblogs.com/amei0/p/8178550.html

10分钟了解分布式CAP、BASE理论

CAP理论 2000年7月,Eric Brewer教授提出CAP猜想:2年后,Seth Gilbert和Nancy Lynch从理论上证明了CAP:之后,CAP理论正式成为分布式计算领域的公认定理. CAP定律说的是在一个分布式计算机系统中,一致性,可用性和分区容错性这三种保证无法同时得到满足,最多满足两个. CAP:C :Consistency(一致性)A:(Availability)可用性P:(Partition Tolerance)分区容错性 让我们构造一个非常简单的分布式系统. 两台服务

分布式CAP与BASE理论

参考: CAP和BASE理论 https://juejin.im/post/5d720e86f265da03cc08de74 https://github.com/changmingxie/tcc-transaction <从Paxos到Zookeeper> 1. CAP理论 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想.2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP.之后,CAP理论正式成为分