分布式系统是由多个独立计算机节点组成的系统,这些节点通过网络通信,共同完成特定的任务。分布式系统是为了解决单机系统在性能、可用性、可扩展性方面的限制而出现的。
分布式系统的特征:
| 问题 | 描述 | 解决方案 |
|---|---|---|
| 通信 | 节点间如何高效、可靠地通信 | RPC、消息队列 |
| 一致性 | 多节点数据如何保持一致 | 分布式事务、一致性协议 |
| 可用性 | 系统在部分故障时是否可用 | 副本、故障转移 |
| 分区容错 | 网络分区时系统如何应对 | CAP、BASE 理论 |
graph TB
A[CAP 理论] --> B[Consistency 一致性]
A --> C[Availability 可用性]
A --> D[Partition Tolerance 分区容错]
B --> E[所有节点数据同一时间完全一致]
C --> F[每次请求都能获取到响应]
D --> G[系统在网络分区时仍能运行]
H[分布式系统] --> I[AP: 可用性 + 分区容错]
H --> J[CP: 一致性 + 分区容错]
H --> K[CA: 一致性 + 可用性]
CAP 三要素详解:
| 要素 | 说明 | 示例 |
|---|---|---|
| 一致性 | 所有节点在同一时间看到的数据相同 | 主从复制同步 |
| 可用性 | 每次请求都能获取到响应(不保证数据是最新的) | 缓存系统 |
| 分区容错 | 系统在网络分区时仍能运行 | 分布式数据库 |
CAP 不可能三角:分布式系统最多只能同时满足其中两个特性,必须在一致性和可用性之间做权衡。
CAP 组合选择:
| 组合 | 特点 | 适用场景 |
|---|---|---|
| CP | 保证一致性,牺牲可用性 | 金融系统、支付系统 |
| AP | 保证可用性,牺牲一致性 | 社交网络、内容分发 |
| CA | 不考虑分区容错(单机系统) | 传统关系型数据库 |
BASE 是对 CAP 中 AP 策略的延伸,强调的是最终一致性。