一、CAP历史
2000年7月加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。 2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。 之后,CAP理论正式成为分布式计算领域的公认定理。
二、CAP理论定义
一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和 分区容错性(Partition tolerance)这三项中的两项。
三、CAP概念
1、一致性(Consistency)
一致性指“all nodes see the same data at the same time”,即更新操作成功并返回客户端完成后, 所有节点在同一时间的数据完全一致。
2、可用性(Availability)
可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。
3、分区容错性(Partition tolerance)
分区容错性指 “the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外 提供满足可用性服务。
三、CAP选择权衡
目前市面上的系统大致关注AP、CP。由于网络天生就具有分区容错性特性,所以只能在AP、CP这两个方向中选择。
选择 | 关注点 | 说明 |
CA | 一致性 | 此类不存在,应为网络天生就是分区容错性特征 |
AP | 可用性 | 放弃一致性(这里说的一致性是强一致性),追求分区容错性和可用性,这是很多分布式系统设计时的选择,例如很多NoSQL系统就是如此 |
CP | 一致性 | 放弃可用性,追求一致性和分区容错性,基本不会选择,网络问题会直接让整个系统不可用 |
若有收获,就点个赞吧