Skip to content
作者:daily5am创建:-更新:-
字数:预计阅读: 分钟访问量:--

分布式事务解决方案

分布式事务是分布式系统中的核心问题,理解各种解决方案对于设计分布式系统至关重要。

核心问题

分布式事务的挑战

  1. 网络延迟:网络通信存在延迟
  2. 节点故障:节点可能随时故障
  3. 数据一致性:保证多个节点数据一致

分布式事务解决方案

1. 两阶段提交(2PC)

阶段一:准备阶段

  • 协调者发送prepare请求
  • 参与者执行事务,但不提交
  • 参与者返回准备结果

阶段二:提交阶段

  • 如果所有参与者都准备成功,发送commit
  • 否则发送rollback

缺点:

  • 同步阻塞
  • 单点故障
  • 数据不一致风险

2. 三阶段提交(3PC)

  • 增加超时机制
  • 增加CanCommit阶段
  • 减少阻塞时间

3. TCC模式

  • Try:尝试执行,预留资源
  • Confirm:确认执行,提交资源
  • Cancel:取消执行,释放资源

4. Saga模式

  • 长事务拆分为多个短事务
  • 每个短事务有补偿操作
  • 最终一致性

5. Seata

  • AT模式:自动补偿
  • TCC模式:手动补偿
  • Saga模式:长事务

常见面试题

  1. 2PC和3PC的区别?

    • 3PC增加超时机制
    • 3PC减少阻塞时间
    • 3PC增加CanCommit阶段
  2. 如何选择分布式事务方案?

    • 强一致性:使用2PC/3PC
    • 最终一致性:使用TCC/Saga
    • 简单场景:使用Seata
  3. 分布式事务的性能优化?

    • 减少事务范围
    • 使用异步处理
    • 使用最终一致性