栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 架构设计

一文看懂 ACID/CAP/BASE

架构设计 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一文看懂 ACID/CAP/BASE

目录
    • 事务的4个基本要素--ACID
      • 原子性(Atomicity)
      • 一致性(Consistency)
      • 隔离性(Isolate)
      • 持久性(Durability)
    • 分布式系统3个核心需求--CAP定理
      • 一致性(Consistency)
      • 可用性(Availability)
      • 分区容错性(Parititon Tolerance)
    • BASE理论
      • Basically Available(基本可用)
      • Soft state(软状态)
      • Eventually consistency(最终一致性)

事务的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(最终一致性)
  • 在一段时间后,所有副本节点的数据是一致的
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908563.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号