Seata:分布式事务解决方案

Seata:分布式事务解决方案



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

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

  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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

双囍菜菜

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值