9.2.1 一致性

2025-06-16 12:43:41 更新

CAP理论作为一种理论依据,在不同应用中,对—致性有不同的要求。

CAP理论:对于一个分布式系统,一致性(Consistency)、可用性(Availablity)和分区容忍性(Partition tolerance)三个特点最多只能三选二。

1

一致性

系统在执行了某些操作后仍处在一个一致的状态

所有的结点在同一时刻有相同的数据

2

可用性

对数据的所有操作都应有成功的返回。高可用性则是在系统升级(软件或硬件)或在网络系统中某些结点发生故障时仍可以正常返回。

任何请求不管成功或失败都有响应

3

分区容忍性

前提:网络发生故障时。在网络连接上,一些结点出现故障,使得原本连通的网络变成了多个分区,此时允许系统继续工作




在数据库系统中,事务的ACID属性保证了数据库的一致性。但是对于大型分布式系统来说,是和高性能不兼容的。

举例:网上买书时会锁住数据库直到买书行为彻底完成(否则库存数可能不一致)。买书完成的瞬间,所有人都能看到库存减少1本(两个人不能同时买书)。

出于系统性能的需求,Amazon也许会用Cache系统,剩余库存数也许是几秒甚至几个小时前的快照,而不非实时库存数,舍弃了一致性。


弱一致性理论BASE (Basically Available, Soft-state, Eventual consistency)

Basically Available

基本可用


Soft state

软状态

可以理解为“无连接”的

Eventual consistency

最终一致性

并不需要每个事务都一致,只需要最终整个系统(时间和系统的要求有关)看到的数据是一致的

Amazon平台卖书过程中,每个用户看到的库存数不一样,但最终卖完后库存数都为0


CAP理论三选二

组合

说明

CP(—致性和分区容忍性)

考虑ACID理论

AP(可用性和分区容忍性)

考虑BASE系统

CA (—致性和可用性)

网络发生分区时,将不能进行完整操作


ACID理论和BASE比较

ACID

BASE

强一致性

弱一致性

隔离性

优先考虑一致性

关注“操作提交”

尽力服务

允许事务嵌套

结果对精确度要求不高

可用性

更简单、更快捷

比较“保守”

比较“激进”

难于演变

易于演变