【分布式事务】Seata 组件介绍

1.分布式事务解决方案之两阶段提交协议

2PC,即两阶段提交协议(Two-Phase Commit),是分布式系统中保证事务原子性的一种经典算法

2PC的设计目的是确保分布式事务能够在所有参与者上都成功提交,或者在所有参与者上都回滚,从而保证数据的一致性。这个协议分为两个阶段:

  • 准备阶段(Prepare Phase):在这个阶段,事务管理器会询问所有的事务参与者是否准备好提交事务。每个参与者都会尝试预执行事务,并保留必要的资源,然后向事务管理器报告是否可以提交。
  • 提交阶段(Commit Phase):如果所有参与者都报告可以提交,事务管理器就会发出正式提交的指令,参与者完成事务的真正提交。如果有任何一个参与者报告无法提交,事务管理器将指示所有参与者回滚事务。

举例:假设你在一个电商网站上购买了一件商品,这个操作涉及到了订单系统、库存系统 2 个不同的服务。这 2 个服务需要协同工作来共同完成这个购买操作。在这个场景中,如果任何一个服务出现问题,比如库存不足或者订单超时,那么整个购买操作就应该被回滚,否则就会出现数据不一致的问题。

  1. 准备阶段:事务管理器向所有参与者发送 Prepare 消息,每个数据库参与者在本地执行事务,并写好本地的 Undo/Redo 日志,此时事务没有提交。(日志在二阶段进行使用:Undo 用于回滚,Redo 用于提交)
  2. 提交阶段:如果事务管理器收到了参与者的执行失败或者超时消息时,直接给每个参与者发送回滚(Rollback)消息;否则,发送提交(Commit)消息;参与者根据事务管理器的指令执行提交或回滚操作,并释放事务处理过程中使用的资源。

成功:
在这里插入图片描述
失败:
在这里插入图片描述

2.Seata 简介(两阶段提交协议的演变)

官网地址:https://seata.apache.org/zh-cn/docs/user/quickstart/

3.Seata 术语

官网地址:https://seata.apache.org/zh-cn/docs/user/quickstart/
要了解 Seata,首先我们要了解一下 Seata 中几个代表了分布式事务处理中的关键角色及概念:

  • TC (Transaction Coordinator):事务协调者,负责维护全局和分支事务的状态,并驱动全局事务的提交或回滚。
  • TM (Transaction Manager):事务管理器(发起者,同时也是 RM 的一种),定义全局事务的范围,负责开始全局事务以及提交或回滚全局事务。
  • RM (Resource Manager):资源管理器(每个参与事务的微服务),管理分支事务处理的资源,与TC进行通信以注册分支事务和报告分支事务的状态,并负责驱动分支事务的提交或回滚。在Seata中,分支事务通常指的是本地事务,而分布式事务则是由多个分支事务共同组成的全局事务。

示例图
用户购买商品的业务逻辑。整个业务逻辑由 3 个微服务提供支持:

  • 仓储服务:对给定的商品扣除仓储数量。
  • 订单服务:根据采购需求创建订单。
  • 帐户服务:从用户帐户中扣除余额。
    在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值