分布式事务解决方案
分布式事务是分布式系统中的核心问题,理解各种解决方案对于设计分布式系统至关重要。
核心问题
分布式事务的挑战
- 网络延迟:网络通信存在延迟
- 节点故障:节点可能随时故障
- 数据一致性:保证多个节点数据一致
分布式事务解决方案
1. 两阶段提交(2PC)
阶段一:准备阶段
- 协调者发送prepare请求
- 参与者执行事务,但不提交
- 参与者返回准备结果
阶段二:提交阶段
- 如果所有参与者都准备成功,发送commit
- 否则发送rollback
缺点:
- 同步阻塞
- 单点故障
- 数据不一致风险
2. 三阶段提交(3PC)
- 增加超时机制
- 增加CanCommit阶段
- 减少阻塞时间
3. TCC模式
- Try:尝试执行,预留资源
- Confirm:确认执行,提交资源
- Cancel:取消执行,释放资源
4. Saga模式
- 长事务拆分为多个短事务
- 每个短事务有补偿操作
- 最终一致性
5. Seata
- AT模式:自动补偿
- TCC模式:手动补偿
- Saga模式:长事务
常见面试题
2PC和3PC的区别?
- 3PC增加超时机制
- 3PC减少阻塞时间
- 3PC增加CanCommit阶段
如何选择分布式事务方案?
- 强一致性:使用2PC/3PC
- 最终一致性:使用TCC/Saga
- 简单场景:使用Seata
分布式事务的性能优化?
- 减少事务范围
- 使用异步处理
- 使用最终一致性