Plantre Plantre
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

plantre

一个后端开发者
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机组成原理

  • 操作系统

  • 计算机网络

  • 设计模式

  • Java

  • Spring

  • SpringCloud

  • MySQL

  • Redis

  • 分布式

    • 理论等

      • 分布式锁
      • 从道法术器层面看分布式锁
      • 基于数据库的分布式锁
      • 基于Redis的分布式锁
      • 基于ZooKeeper的分布式锁
      • 从道法术器层面看分布式事务
      • 调用第三方怎么保证事务的四个特性
      • 最终一致和强一致性的区别
      • 本系统扣库存生成计费单,向第三方系统推送计费单,这两个场景分别用什么一致性
      • 单体改微服务,除了分布式锁,除了分布式事务,还要注意哪些问题
    • 分布式算法

    • 分布式事务

    • 分布式锁

    • SpringCloud

  • Zookeeper

  • Dubbo

  • Kafka

  • 数据结构

  • 算法

  • OJ

  • 从道家哲学看计算机?
  • 后端
  • 分布式
  • 理论等
plantre
2025-05-08

从道法术器层面看分布式事务

从“道法术器”四层体系解析分布式事务


一、道:基本原理与核心理念

  1. 事务本质与矛盾
    分布式事务的核心目标是解决跨服务、跨资源的 原子性 问题,但其实现受制于 CAP定理。分布式系统需在一致性(C)、可用性(A)、分区容错性(P)之间权衡,通常选择 最终一致性(BASE理论),通过“基本可用、软状态、最终一致”平衡性能与数据完整性。

  2. 核心矛盾
    • 性能与一致性:强一致性(如2PC)依赖全局锁和同步阻塞,牺牲吞吐量;最终一致性(如消息队列)通过异步化提升性能,但需容忍短暂不一致。

    • 侵入性与复杂度:无侵入方案(如Seata AT)依赖数据库特性(如MVCC),灵活性受限;手动补偿方案(如TCC)需业务改造,但支持精细化控制。


二、法:策略与模型选择

  1. 刚性事务模型
    • XA协议(2PC/3PC):基于数据库原生XA接口,通过两阶段提交实现强一致性,但存在单点故障和性能问题。

    ◦ 2PC:分准备(Prepare)和提交(Commit)阶段,参与者锁定资源直至事务结束。

    ◦ 3PC:引入预提交(CanCommit)和超时机制,减少阻塞但复杂度高,实际应用较少。

  2. 柔性事务模型
    • TCC:业务层手动实现Try(资源预留)、Confirm(提交)、Cancel(回滚),适用于高并发短事务(如秒杀)。

    • Saga:将长事务拆分为多个本地事务,失败时逆向补偿,适合跨服务流程(如订单履约)。

    • AT(自动补偿型):通过SQL解析自动生成回滚日志(undo_log),实现业务无侵入的最终一致性,适用于高并发短事务(如库存扣减)。

    • 可靠消息:通过消息队列(如RocketMQ事务消息)实现异步最终一致,需处理幂等性和消息重试。


三、术:方法论与实现技术

  1. 关键协议与机制
    • 全局锁:XA模式依赖数据库行锁,AT模式通过全局锁表(global_table)避免脏写。

    • 幂等性:通过唯一事务ID或业务键(如订单号)确保操作可重复执行,防止消息重复消费。

    • 状态机编排:Saga模式通过JSON/DSL定义事务流程,每个节点对应服务调用及补偿逻辑。

  2. 容错与恢复
    • 事务日志:记录操作快照(如Seata的undo_log)和状态,支持故障恢复。

    • 异步重试:消息队列结合死信队列(DLQ)和定时任务,确保消息最终投递。


四、器:工具与框架

  1. 开源框架
    • Seata:支持AT、TCC、Saga、XA四模式,通过TC(事务协调器)统一管理全局事务,适合复杂业务场景。

    • RocketMQ:事务消息机制保障本地事务与消息发送的原子性,支持异步最终一致。

    • ByteTCC:基于TCC模式,通过注解实现声明式事务管理,兼容Dubbo和Spring Cloud。

  2. 数据库支持
    • XA协议实现:MySQL、Oracle等通过XA接口支持两阶段提交。

    • 非关系型扩展:Redis通过Lua脚本模拟事务,但仅支持简单原子操作。


总结与选型建议

  1. 道法结合:优先通过业务设计规避分布式事务(如服务合并),减少技术复杂度。

  2. 术器协同:
    • 高一致性场景:金融转账选XA或TCC;

    • 高并发场景:电商库存扣减选AT或可靠消息;

    • 长流程场景:物流履约选Saga。

  3. 监控兜底:建立离线对账系统(T+1核对)和告警机制,弥补最终一致性的潜在漏洞。

通过“道法术器”的层次化设计,可系统性解决分布式事务挑战,在一致性、性能、复杂度之间找到最优平衡。

编辑 (opens new window)
上次更新: 2025/06/10, 09:18:05
基于ZooKeeper的分布式锁
调用第三方怎么保证事务的四个特性

← 基于ZooKeeper的分布式锁 调用第三方怎么保证事务的四个特性→

最近更新
01
集成loki
07-04
02
TCP的ESTABLISHED是什么意思
06-24
03
安装1panel
06-24
更多文章>
Theme by Vdoing | Copyright © 2025-2025 plantre | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式