分布式系统一致性理论
CAP定理
- 一致性:所有节点同时看到相同数据
- 可用性:每个请求都能响应
- 分区容错:网络分区时系统继续运行
三者只能满足其二,通常选择AP或CP。
BASE理论
是CAP的折中方案,适合高可用场景。
一致性模型
强一致性
- 线性一致性:操作按全局顺序
- 顺序一致性:单机进程顺序
- 因果一致性:因果操作有序
实现:Raft、Zab、Paxos协议
弱一致性
- 最终一致性:保证达到一致
- 读己之写:用户能读到自己的写
- 会话一致性:会话内单调读写
实现:Gossip协议、向量时钟
分布式共识算法
Raft
- Leader选举:超时触发选举
- 日志复制:Leader同步日志到Follower
- 安全性:选举限制、日志匹配
Paxos
- Prepare/Promise:提案编号
- Accept/Accepted:多数派接受
- 难理解,工程实现少
ZAB
ZooKeeper专用,类似Raft但支持广播。
分布式事务
2PC
协调者-参与者两阶段提交,阻塞且单点故障。
3PC
增加CanCommit阶段,降低阻塞概率但仍不完美。
Saga
长事务拆分短事务,补偿操作回滚。
本地消息表
业务DB存消息,定时任务扫描发送。
时钟同步
- NTP:网络时间协议,毫秒级偏差
- 逻辑时钟:Lamport Timestamp
- 向量时钟:捕捉事件因果关系
实践建议
- CP系统:Raft选主,强一致性
- AP系统:Gossip传播,最终一致
- 幂等设计:重复请求不影响结果
- 优先异步:解耦提升可用性