分布式事务解决方案学习
2PC(两阶段提交)
2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段P(Prepare phase),提交阶段C(commit phase),2是指两个阶段
- 准备阶段 : 事务管理器给每一个参与者发生Prepare信息,每个数据库参与者在本地执行事务,并写入日志,这时事务还没有提交
- 提交阶段: 如果事务管理器收到了参与者失败的或者超时消息时,就给每一个参与者发生(Rollback)信息,反正发生提交(commit)信息,参与者根据事务管理器的消息执行提交或者回滚操作
解决方案 seata
Seata 是阿里开源的一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。
图片来源于官网http://seata.io/zh-cn/
seata把一个分布式事务理解成一个包含若干分支事务和全局事务,全局事务的职责是协调其下管理的分支事务达成一致,要么一起成功提交,要么一起失败回滚
seata定义了3个组件来协调分布式事务的处理过程
-
TC (Transaction Coordinator) - 事务协调者
维护全局和分支事务的状态,驱动全局事务提交或回滚。 -
TM (Transaction Manager) - 事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务。 -
RM (Resource Manager) - 资源管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
比如现在有一个新用户注册送积分的seata的分布式事务过程