Seata:分布式事务解决方案

Seata:分布式事务解决方案


文章目录

  • Seata:分布式事务解决方案
    • 第一章:什么是分布式事务?
    • 第二章:Seata 的 AT 模式——像餐厅点餐流程
      • 场景类比:
      • AT 模式原理:
    • 第三章:TCC 模式——像租房的三步流程
    • 第四章:Seata 的三种模式对比
    • 第五章:Seata 实战避坑指南
      • 问题 1:事务不生效
      • 问题 2:脏数据残留
      • 问题 3:TCC 模式超时
    • 第六章:总结与预告


第一章:什么是分布式事务?

想象你在淘宝下单买了一台空调,这个动作背后涉及三个系统:

  1. 库存服务:扣减一台库存。
  2. 订单服务:生成订单记录。
  3. 支付服务:从你的账户扣款。

如果库存扣减成功,但支付失败,这时候该怎么办?分布式事务就像一场“多方会议”,必须保证所有参与者要么全部同意(提交),要么全部取消(回滚)。

Seata(Simple Extensible Autonomous Transaction Architecture)是阿里巴巴开源的分布式事务解决方案,专门解决这类跨服务的“数据一致性”难题。


第二章:Seata 的 AT 模式——像餐厅点餐流程

场景类比:

你去餐厅点了份牛排,服务员会先确认厨房有食材(预留资源),然后让你签字确认(提交事务)。如果厨房突然没牛排了,服务员会取消订单(回滚事务)。

AT 模式原理:

  1. 一阶段:执行本地事务,并生成回滚日志(像服务员记下你的订单)。
  2. 二阶段:根据全局事务状态,提交或回滚所有分支事务(像后厨开始做菜或取消订单)。

代码示例:用 AT 模式实现下单

// 订单服务:创建订单  
@GlobalTransactional // 声明全局事务(像服务员说“这桌我来负责”)  
public void createOrder(Order order) {
     
    // 1. 扣减库存(调用库存服务)  
    inventoryService.deduct(order.getProductId());  

    // 2. 生成订单(本地事务)  
    orderDao.insert(order)

你可能感兴趣的:(#,微服务,分布式)