CAP理论与最终一致性

00:00
4 min Advanced 2026/6/14

CAP定理、BASE理论、一致性模型与分布式系统权衡。

1. CAP定理

1.1 定义

分布式系统最多同时满足以下三个属性中的两个

属性说明
Consistency(一致性)所有节点看到相同数据
Availability(可用性)每个请求都得到响应
Partition tolerance(分区容忍)网络分区时系统继续运行

1.2 三种组合

组合放弃示例
CP可用性ZooKeeper、HBase
AP一致性Cassandra、DynamoDB
CA分区容忍单机数据库(不存在于分布式)

1.3 现代理解

“In a distributed system, you can’t avoid network partitions, so the choice is really between CP and AP.” — Martin Kleppmann

实际中网络分区不可避免,选择是在分区发生时优先保证一致性还是可用性。

2. 一致性模型

2.1 一致性级别

级别说明示例
强一致性写入后立即可读关系数据库
顺序一致性所有节点看到相同顺序ZooKeeper
因果一致性因果关系事件有序因果时钟系统
最终一致性最终所有节点一致DNS、Dynamo
读己之写自己写入后自己可读社交媒体

2.2 最终一致性变体

变体保证
读己之写一致性写入者可立即读到
会话一致性同一会话内一致
调读一致性不会读到旧数据
调写一致性操作有序

3. BASE理论

3.1 BASE vs ACID

维度ACIDBASE
一致性强一致最终一致
可用性可能牺牲优先保证
隔离性隔离宽松隔离
适用场景金融交易互联网应用

3.2 BASE三要素

要素说明
Basically Available基本可用,允许降级响应
Soft State状态允许中间状态
Eventually Consistent最终一致,最终达到一致

4. 分布式共识

4.1 共识算法

算法类型容错适用场景
Paxos理论理论基础
Raft实用etcd、Consul
ZAB实用ZooKeeper

4.2 Raft算法

角色: Leader / Follower / Candidate

选举:
1. Follower超时 → 成为Candidate
2. 向其他节点请求投票
3. 获得多数票 → 成为Leader

日志复制:
1. 客户端请求 → Leader
2. Leader追加日志 → 复制到Follower
3. 多数确认 → 提交

5. 实践选择

场景一致性选择原因
金融交易强一致资金安全
社交动态最终一致可用优先
管理强一致超卖风险
购物最终一致用户体验优先
配置中心强一致配置不一致导致故障

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式