一文看懂 ACID/CAP/BASE

事务的4个基本要素–ACID

原子性(Atomicity)

一个事务中的所有操作要么全部成功,要么全部失败;没有中间状态

一致性(Consistency)

如A向B转账100元,要保证A扣除100元,B增加100元

隔离性(Isolate)

同一时间对同一个资源只有1个事务在操作
比如A在从银行卡中取钱,在A操作完成之前,B不可以向这张卡转账;

持久性(Durability)

事务操作结果 要持久化到数据库中,不可以回滚


分布式系统3个核心需求–CAP定理

一致性(Consistency)

  • 这里的一致性与数据库ACID中的“一致性”类似,但略有不同:
  • ACID中的“一致性”指的是单个事务中的数据一致性;
  • 分布式系统的“一致性”指的是 所有(备份)节点在同一时刻数据是一样的
  • 对上层应用来说,对所有节点的访问到的数据是一样的

可用性(Availability)

  • 指服务正常可用,而且每一个操作都会在一定时间内返回结果
  • 不会出现响应超时或者操作失败的情况
  • 另一种说法:只要收到用户请求,就必须给予响应,这时候才叫可用。

分区容错性(Parititon Tolerance)

  • 大多数分布式系统存在多个子网络,每个子网络就叫做1个分区。分区容错的意思是:区间通信可能失败
  • 比如,一台服务器在中国,一台在美国,这就是2个区,他们可能无法通信,这时候就需要分区容错
  • 分布式系统都具备分区容错性

任何系统中只能满足CAP其中的2个,三者不可兼得

可以这样理解CAP

  • 分布式系统必然具备分区容错性,每个节点(副本)都是一个分区。这时候可用性(A)和一致性(C)是矛盾的:
  • 如果选择一致性,那么系统必须在所有节点数据一致之前锁住资源(禁止读写),待各节点数据一致后才可用,这叫CP
  • 如果选择可用性,那么节点之间数据可能不一致,从不同节点读取到的结果不一样,违背了一致性,这叫AP
  • 单点(无副本/分区)系统,必然满足一致性和可用性,即CA,但不具备分区容错性

BASE理论

BASE,是指Basically Available(基本可用),Soft state(软状态),Eventually
consistency(最终一致性)。

BASE理论是对CAP的一致性和可用性权衡的结果。

Basically Available(基本可用)

  • 分布式系统在发生故障时,允许损失部分可用性
  • 例如,
  • 性能上的损失:正常情况下响应时间为0.5s;当系统发生故障(如部分机房发生故障)时,响应时间增加到1-2s;
    * 功能上的损失:业务高峰时,为防止系统奔溃,会把用户请求引导到一个降级页面(显示“服务暂时不可用”等提示信息);

Soft state(软状态)

  • 也叫弱状态,与硬状态相对。即,允许数据存在中间状态
  • 也就是说,允许不同副本的数据同步存在一定的延时;

Eventually consistency(最终一致性)

  • 在一段时间后,所有副本节点的数据是一致的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员柒叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值