CAP(Consistency 一致性,Availability 可用性,Partition tolerance 分区容错性) 是分布式系统最重要的理论之一:
在分布式系统中,C、A、P 无法同时满足,只能三者取其二。
P(分区容错性)是分布式系统默认前提
网络分区在分布式环境中是常态,因此设计时必须先满足 P,再在 C 与 A 间取舍。
当分布式系统中的节点之间发生网络分区(比如网络中断、延迟、丢包、节点失联等)时,系统仍能继续运行。
| 理论 | 全称 | 特点 | 一致性类型 | 典型系统 |
|---|---|---|---|---|
| ACID | Atomicity 原子性Consistency 一致性Isolation 隔离性Durability 持久性 | 追求强一致性 | 强一致性 | 单机数据库CP 系统 |
| BASE | Basically Available 基本可用 | |||
| Soft State 软状态Eventually Consistent 最终一致性 | 用弱一致性换可用性 | 最终一致性 | 互联网大规模分布式系统AP 系统 |
说明:
Eric Brewer 于 2000 年在 ACM PODC 会议提出:
分布式系统无法同时满足一致性(C)、可用性(A)、分区容错性(P)。
| 特性 | 定义 | 说明 |
|---|---|---|
| 一致性(Consistency) | 在同一时刻所有节点返回同样的数据 | 指 强一致性,与 ACID 的一致性含义不同 |
| 可用性(Availability) | 所有请求都能在规定时间内得到正确响应 | 要求系统始终在线 |
| 分区容错性(Partition tolerance) | 出现网络分区或节点失联时系统仍能继续运作 | 分布式系统必备前提 |