# CAP 定理 > Brewer's Theorem — 分布式计算系统的基本原则 --- ## 定理内容 一个分布式系统**不可能同时满足**以下三点: | 特性 | 说明 | |------|------| | **一致性 (Consistency)** | 所有节点在同一时间具有相同的数据 | | **可用性 (Availability)** | 保证每个请求都有响应(成功或失败) | | **分区容忍 (Partition Tolerance)** | 系统中任意信息丢失或失败不影响系统继续运行 | --- ## CAP 三角 ``` C /\ / \ / \ / P \ /________\ A ``` **核心**:分布式系统最多只能同时满足 **两个** 特性。 --- ## 三类系统 ### CA — 一致性 + 可用性 - 单点集群 - 不具备分区容错能力 - 例子:传统 RDBMS(MySQL、PostgreSQL) ### CP — 一致性 + 分区容忍 - 牺牲可用性 - 网络分区时可能不可用 - 例子:MongoDB、HBase、Redis ### AP — 可用性 + 分区容忍 - 牺牲一致性 - 分区期间保持可用,数据可能不一致 - 例子:Cassandra、DynamoDB --- ## 选择指南 | 场景 | 选择 | |------|------| | 金融交易、银行系统 | CP(强一致性) | | 社交媒体、新闻 Feed | AP(高可用) | | 需要强一致的传统业务 | MySQL/PostgreSQL | --- ## NoSQL 数据库分类 | 类型 | 数据库 | |------|--------| | **CA** | 传统关系型数据库 | | **CP** | MongoDB、HBase、Redis | | **AP** | Cassandra、DynamoDB、CouchDB | --- > 参考:[NoSQL 简介 - 菜鸟教程](http://www.runoob.com/mongodb/nosql.html)