CAP理论的核心结论是:在分布式系统中,一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)三者不可同时满足,只能选择其中两个。
来源1
CAP理论是由Eric Brewer在2000年提出,后来经过证明成为分布式计算领域的基石。它告诉我们,在一个分布式网络中,如果网络发生分区(Partition),系统就必须在一致性(Consistency)和可用性(Availability)之间做出选择。简单说,就是网络一断开,你要么保证所有节点数据一致,要么保证用户都能读写成功,但不可能两者兼得。
来源2
Consistency(一致性):所有读操作必须返回最新的写操作结果。简单比喻,就是大家看同一个账本,每个人翻开都看到相同的最新余额。Availability(可用性):每个请求都能得到响应,不管成功失败。Partition Tolerance(分区容忍性):网络分区时系统照常运行。现实中,分区不可避免,所以分布式系统基本在CP或AP之间选。
来源3
拿购物系统举例:双11高峰,网络分区了。如果选CP,一致性优先,可能部分用户买不到货(因为要等数据同步);如果选AP,可用性优先,用户能下单,但可能超卖(数据暂时不一致)。运维时要根据业务选型,比如银行选CP,电商选AP。
来源4
在运维实践中,理解CAP帮你选对工具:MongoDB偏CP,Cassandra偏AP,ZooKeeper强一致。遇到问题时,别纠结全都要,先问业务忍不忍不一致或短暂不可用,就能快速定位架构短板。
来源5
CAP不是绝对的,现代系统通过最终一致性、quorum等机制缓解矛盾。比如Dynamo用版本向量解决冲突。运维进阶,就是从CAP出发,调优这些参数,让系统在分区时损失最小。
FAQ
Q: CAP理论适用于所有分布式系统吗?
A: 基本适用,但单机系统或弱网络环境可能不严格遵循,主要针对有分区风险的网络分布式系统。
Q: 如何在运维中应用CAP?
A: 分析业务需求,选CP(强一致场景如金融)或AP(高可用如社交),配置数据库参数如写/读quorum。
Q: 有没有超越CAP的理论?
A: PACELC扩展了CAP,考虑分区外本地情况,但CAP仍是基础入门点。