分布式系统相关定理
文章目录
CAP 定理
2000年提出
CAP定理是一个分布式系统特性的高度抽象,总结了各个特性之间的冲突。CAP定理指出,在一个异步网络环境中,对于一个分布式读写存储系统,只能满足以下三项中的两项,而不可能同时满足三项:
- 一致性 Consistency
- 客户端访问任一节点,返回的都已同一份最新的数据。这里的一致性指线性一致性。
- 可用性 Availability
- 每次请求都能获取非错误的响应,但不保证获取的数据是最新数据。
- 分区容错性 Partition Tolerance
- 节点之间由于网络分区导致消息丢失的情况下,系统仍能正常运行。
CAP定理的意义在于,帮助软件工程师在设计分布式系统时,施加基本的限制,不必浪费时间去构建一个完美的系统。软件工程师应该意识到这些特性需要进行trade off取舍
,选择适合自己的特性。
对于分布式系统来说,节点之间通过网络通信,网络分区故障是必然存在的,所以分区容错性是一个基本的要求。因此开发者通常将他们的系统分为两类:
- AP,选择可用性和分区容错性
- CP,选择一致性和分区容错性
CAP定理存在一些缺陷:
- 网络分区很少发生,在系统没发生网络分区时,不应该牺牲一致性或可用性
- 网络延迟是经常存在的,而CAP的经典解释忽略了网络延迟
PACELC 定理
2012年提出
PACELC定理指出,CAP定理忽略分布式系统中的网络延迟影响是一个重大疏忽,因为网络延迟一直存在,而网络分区不经常发生。
PACELC定理指出,分布式系统在网络分区P的情况下,必须在可用性A和分区容错性P之间做出选择;否则E,在没有网络分区的情况下,应该在延迟L和一致性C之间做出选择。
- 第一部分还是PA/PC
- 第二部分定义了新的类型:EL/EC
大部分系统往往属于PA/EL或PC/EC类型
- PA/EL: Cassandra,MongoDB
- PC/EC: MySQL cluster, BigTable/HBase
BASE 理论
1990末提出,提出者 Eric Brewer后来又提出了CAP定理
BASE是以下三个词的首字母
- Basically Available 基本可用
- Soft state 软状态
- Eventually Consistent 最终一致
为了高可用,舍弃强一致,选择一致性更弱的最终一致性。最终一致性是指,客户端更新某个数据时,由于网络分区或延迟,导致数据没有立即同步到所有副本,系统中存在旧数据。
此时系统允许继续读写数据,但在某个最终时刻,系统保证这个更新操作一定会同步到所有副本。
提出者也指出,BASE理论好记但不够精确,BASE也确实没有像CAP那样被广泛使用。