文章中如果有图看不到,可以点这里去 csdn 看看。从那边导过来的,文章太多,没法一篇篇修改好。

分布式系统【七、分布式事务与最终一致性】

分布式事务与最终一致性

系列专题第七篇 · 分布式系统基础指南


一、引言

在大型分布式系统中,跨节点事务一致性面临 网络延迟、节点故障、服务拆分 等问题。
严格遵循 ACID 的 2PC/3PC 在工程上往往成本过高,阻塞严重。

因此,现代分布式系统提出 最终一致性(Eventual Consistency)BASE 理论,在保证业务可用性的同时,允许短时间内的数据不一致,通过补偿或重试机制最终达到一致。


二、BASE 理论

BASE 是 ACID 的替代方案,适用于分布式高可用场景:

字母含义描述
BBasically Available系统可用,但不保证强一致
ASoft state系统状态可随时间而变化
SEEventual consistency最终一致,允许短暂不一致

特点:

  • 可用性优先,牺牲短时强一致性。
  • 适合电商、支付、社交等大规模分布式系统。

三、消息队列与最终一致性

消息队列(MQ)是实现分布式事务最终一致性的重要工具:

  1. 事务消息模式

    • 生产者在本地事务提交后发送消息。
    • 消费者收到消息执行对应操作,保证最终一致。
  2. 可靠消息投递策略

    • At-Least-Once:可能重复,需要幂等处理。
    • Exactly-Once:通过事务或幂等保证唯一执行。
ProducerMessageQueueConsumerExecute Local TransactionSend Transactional MessageDeliver MessageExecute Business OperationACKProducerMessageQueueConsumer

四、Saga 模型

Saga 是一种分布式长事务管理模式,将大事务拆分成多个子事务,每个子事务有正向操作和补偿操作

  • 步骤执行顺序

    1. 执行第一步子事务
    2. 执行第二步子事务
  • 失败补偿

    • 若第 N 步失败,按逆序执行前 N-1 步的补偿操作回滚。
Saga CoordinatorServiceAServiceBServiceCStep1OKStep2FailCompensate Step1Saga CoordinatorServiceAServiceBServiceC

优点:

  • 无阻塞
  • 异步执行
  • 易于扩展

缺点:

  • 业务必须设计补偿逻辑
  • 事务隔离性弱

五、TCC 模型(Try-Confirm-Cancel)

TCC 是一种面向业务的补偿事务模式,分三个阶段:

  1. Try:检查并锁定资源
  2. Confirm:提交事务
  3. Cancel:回滚资源
TCC CoordinatorServiceAServiceBTryTryOKOKConfirmConfirmTCC CoordinatorServiceAServiceB

特点:

  • 保证强业务一致性
  • 可控性强
  • 编码复杂度高

六、工程实践对比

模型特点优缺点典型应用
2PC强一致性阻塞严重,单点问题分布式数据库事务
3PC弱阻塞实现复杂理论研究
Saga异步补偿无阻塞,业务可控电商订单、支付流程
TCC强业务一致性编码复杂,资源锁金融转账、高价值交易
MQ + BASE最终一致性可扩展,高可用大规模消息系统

七、结合 Raft / Paxos / ZAB

在现代微服务架构中,最终一致性往往结合 分布式一致性协议

  • 协调者或事务日志使用 Raft/Paxos/ZAB 保证高可用。
  • 消息队列或 Saga/TCC 实现业务级分布式事务。
  • 这种组合保证了系统高可用 + 业务一致性 + 可扩展性

八、总结

  1. 分布式事务面临网络与节点故障挑战,传统 ACID 很难在高可用场景实现。
  2. BASE 理论 + MQ / Saga / TCC 是现代分布式事务的主流方案。
  3. Raft/Paxos/ZAB 协议可以为分布式事务提供协调者高可用性和日志一致性支持。
  4. 工程上需要根据 业务特性、系统规模、可用性需求 做权衡选择。

📌 通过第七篇,你可以完整理解 从严格 ACID(2PC/3PC)到最终一致性(Saga/TCC/BASE) 的演进路线,并结合 Raft/Paxos/ZAB 形成完整分布式事务设计思路。

posted @ 2025-09-03 14:28  NeoLshu  阅读(5)  评论(0)    收藏  举报  来源