Files
chill_notes/数据库/CAP定理(CAP theorem).md
2026-04-21 20:40:56 +08:00

78 lines
1.5 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CAP 定理
> Brewer's Theorem — 分布式计算系统的基本原则
---
## 定理内容
一个分布式系统**不可能同时满足**以下三点:
| 特性 | 说明 |
|------|------|
| **一致性 (Consistency)** | 所有节点在同一时间具有相同的数据 |
| **可用性 (Availability)** | 保证每个请求都有响应(成功或失败) |
| **分区容忍 (Partition Tolerance)** | 系统中任意信息丢失或失败不影响系统继续运行 |
---
## CAP 三角
```
C
/\
/ \
/ \
/ P \
/________\
A
```
**核心**:分布式系统最多只能同时满足 **两个** 特性。
---
## 三类系统
### CA — 一致性 + 可用性
- 单点集群
- 不具备分区容错能力
- 例子:传统 RDBMSMySQL、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)