CAP、BASE和ACID

当我们讨论数据一致性时,容易想到CAP、BASE和ACID,那么它们分别是什么呢?有什么区别和联系吗?

1. CAP

CAP定理又被称为布鲁尔定理,是分布式计算领域一个公认的定理。

C — Consistency(一致性)

它的英文解释为:A read is guranteed to return the most recent write for a given client.

可以理解为,对于某个客户端来说,保证读操作能够返回最新的写操作的结果。

A — Availability(可用性)

英文解释:A non-failing node will return a reasonable response within a reasonable amount of time(no error or timeout).

翻译过来就是,非故障节点在合理的时间内返回合理的响应(非错误和超时响应)。

P — Partition Tolerance(分区容忍性)

英文解释:The system will continue to function when network partitions occur.

当网络出现分区后,系统能够继续履行职责。

在一个分布式系统中,当涉及读写操作时,只能保证一致性、可用性和分区容忍性三者中的两个。因为网络本身并非100%可靠,因此分布式环境中,P要素(分区容忍)是必须要被选择的。因此分布式系统只能是CP或者AP架构。

2. BASE

BASE是Basically Available(基本可用)、Soft State(软状态)和Eventual Consistency(最终一致性)三个单词的缩写,其核心思想是无法做到强一致性(CAP的一致性即为强一致性),但可以通过适合的方式达到最终一致性。

B — Basically Available(基本可用)

分布式系统在出现故障时,允许损失部分可用性,保证核心可用。

S — Soft State(软状态)

允许系统存在中间状态,而该中间状态不会影响系统整体可用性。这里说的中间状态可以理解为CAP理论中的数据不一致。

E — Eventual Consistency(最终一致性)

系统中所有的数据副本经过一定时间后,最终能够达到一致的状态。

BASE理论本质上是是对CAP的延伸和补充。因为CAP是忽略了延时的,但在实际的分布式应用中,延时是不可避免的。对于CP系统来说,完美的CP场景是不存在的,就算几毫秒的数据传输延迟,在这几毫秒的时间间隔内,系统是不符合CP要求的;而对于AP系统来说,一致性不是被彻底放弃,而是在系统发生网络分区期间,短暂放弃一致性。这就是BASE理论延伸的地方,分区期间放弃一致性,但分区故障恢复后,系统可以达到最终一致性。

3. ACID

ACID相对于CAP和BASE来说,关联性就相对弱了一些,CAP和BASE都是针对分布式系统架构提出的理论,而ACID是为了保证数据库管理系统中事务的正确性而提出来的一个理论。ACID是该理论中包含的4个约束的缩写,它们分别是:

A — Atomicity(原子性)

一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在某个中间状态。如果事务在执行过程中发生了错误,则回滚到执行之前的状态。

C — Consistency(一致性)

事务开始之前和事务结束之后,数据库完整性不被破坏。

I — Isolation(隔离性)

数据库允许多个并发事务对数据进行读写和修改的操作。隔离性可以防止多个事务并发时由于交叉执行导致的数据不一致性。事务隔离包括读未提交(Read uncommitted)、读提交(Read commited)、可重复读(Repeatable read)以及串行化(Serializable)四个级别。

D — Durability(持久性)

事务处理结束后,对数据的修改是永久的,即使系统故障也不能丢失。

综上:ACID的应用场景是数据库事务,而CAP和BASE关注的是分布式系统中数据的读写。

 

参考资料:李运华《从零开始学架构》

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值