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的补充。牺牲数据的强一致性,来保证数据的可用性,虽然存在中间装填,但数据最终一致。

欢迎关注订阅微信公众号,程序员的压哨绝杀,一起分享生活工作中的见闻趣事。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值