加载中...
分布式系统的基本约束:一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance)三者不能同时满足。由 Eric Brewer 于 2000 年 PODC 会议提出,2002 年获严格数学证明。

| 类型 | 分布式系统理论 |
| 提出者 | Eric Brewer,PODC 2000 年 Keynote |
| 正式证明 | Seth Gilbert & Nancy Lynch,ACM SIGACT News 2002 |
定理中三个字母常被误解。C(一致性)指线性一致性(Linearizability),所有节点同时看到相同数据,不是 ACID 里的数据完整性约束。A(可用性)指每个请求都能收到响应,没有无限超时,但不要求数据是最新的。P(分区容忍性)指网络分区时系统仍能运行。在真实网络中分区必然发生,P 不是选项而是现实,实际只在 CP 和 AP 之间选择。[1]
CAP 是个二元模型,但现实权衡更细腻。2010 年 Daniel Abadi 提出 PACELC:分区(P)时在可用性(A)和一致性(C)间选择;正常状态(E,else)时在延迟(L)和一致性(C)间权衡。DynamoDB 在分区时选 A,正常状态也倾向低延迟(PA/EL)。PACELC 比 CAP 更完整描述了分布式系统的设计空间。

| 类型 | 分布式系统理论 |
| 提出者 | Eric Brewer,PODC 2000 年 Keynote |
| 正式证明 | Seth Gilbert & Nancy Lynch,ACM SIGACT News 2002 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧