CAP理论和BASE理论及ACID理论的关系

Posted 程序员的压哨绝杀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAP理论和BASE理论及ACID理论的关系相关的知识,希望对你有一定的参考价值。

上一篇文章说了,CAP理论,是指在一个互相连接且共享数据的分布式系统中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availability)、分区容错性(Partition tolerance)三者中的两个,三者不可兼得。

ACID

其实大家都注意到了,CAP理论和ACID里一样,都有一个一致性。好了,那么这两个一致性到底有什么关系呢?答案就是没有关系!

为什么没有关系呢?我们首先来看一下ACID是什么吧。

ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性(copy on 百度百科)。

1.原子性(Atomicity)

一个事务中的所有操作,要么全部完成,要么全部都不完成,不存在中间状态。这个很好理解,事务执行过程中如果发生错误,会回滚到事务开始前的状态。也就是整个事务内所有的操作为一个原子操作。

2.一致性(Consistency)

事务开始前和结束后,数据库的完成性没有被破坏。

3.隔离性(Isolation)

数据库可以同时并发多个事务对数据库进行读写操作,隔离性会根据不同的隔离级别,防止多个事务并发执行时数据的不一致的影响。隔离级别包括,读未提交、读已提交,可重复度,串行化。隔离级别越高,一致性越高,并发性越低。

4.持久性(Durability)

事务结束后,对数据的修改是永久的。

说了很多,重点是可以看到,ACID里的一致性指的是事务执行前后,数据库完整性,而CAP的一致性,指的是分布式节点的数据的一致性。背景不同,无从可比。

BASE

BASE是基本可用Basically Available)、软状态Soft state)和最终一致性Eventually consistent)三个英文的缩写。BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结, 是基于CAP定理逐步演化而来的。BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。那么具体看一下BASE中的三要素:

1.基本可用Basically Available

当分布式系统出现故障时,允许损失部分可用性,保证核心模块的可用性。这个很好理解,当出现故障时,首先考虑的肯定是核心模块,但也不是说要牺牲掉其他模块,只是在极端情况下对服务做的降级。

2.软状态Soft state

软状态指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。例如mysql的主从同步就是存在延时的,只要上游可以接受这种延时,就没有问题。

3.最终一致性Eventually consistent

系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。针对不同的业务,数据达到一致状态的容忍时间也是不同的。我注册之后,可以几秒钟就需要登陆,需要数据一致,但是发表一篇文章,几分钟之后达到一致性也不会有影响。

BASE理论其实就是对CAP理论的延伸和补充,主要是对AP的补充。牺牲数据的强一致性,来保证数据的可用性,虽然存在中间装填,但数据最终一致。


以上是关于CAP理论和BASE理论及ACID理论的关系的主要内容,如果未能解决你的问题,请参考以下文章

CAP演化之BASE理论

ZooKeeper和CAP理论及一致性

CAP理论及Zookeeper和Eureka对比

CAP向左,CAP向右,ACID和BASE理论

Redis分布式理论(基础篇系列二)

谈谈ACID以及CAP/BASE理论