博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用SpringCloud Alibaba搭建属于自己的微服务(三十五)~基础搭建~alibaba seata介绍
阅读量:4203 次
发布时间:2019-05-26

本文共 1448 字,大约阅读时间需要 4 分钟。

一.概述

在上个章节中我们已经完成了这个商城的核心功能,下单.下单接口涉及了4个微服务,那么就一定存在分布式事务的问题,在分布式事务框架完善以前,企业里面处理分布式带来的事务问题时,一般都是人肉反向sql的方式去处理,我们这里引入alibaba seata给我们提供分布式事务的功能.

二.介绍

1.alibaba seata官网:.

2.seata是什么?

在这里插入图片描述

3.seata的事务模式.

模式 含义
AT模式 AT 模式是一种无侵入的分布式事务解决方案。在 AT 模式下,用户只需关注自己的“业务 SQL”,用户的 “业务 SQL” 作为一阶段,Seata 框架会自动生成事务的二阶段提交和回滚操作。
TCC模式 所谓 TCC 模式,是指支持把 自定义 的分支事务纳入到全局事务的管理中。
Saga 模式 Saga模式是SEATA提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发实现。
XA模式 开发中

4.seata的组成.

seata我们一般来说由1+3组成

(1).全局唯一的事务tid
(2).事务协调器,维持全局事务的运行状态,负责协调并驱动全局事务的提交或者回滚,也叫TC(transcation coordinator),一般都指seata服务端.
(3).控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议,也叫TM(transcation manager),一般来说加了开启全局事务注解的一方就是TM.
(4).控制分支事务,负责分支注册,状态汇报,并接收状态协调器的指令,驱动分支(本地)事务,也叫RM(resource manager).

举例:比如我们上一个章节开发的下订单接口,如果引入seata做分布式事务,server-order服务就是TM,server-goods、server-pay、server-user都是RM.

5.seata事务执行流程图

在这里插入图片描述

6.seata事务处理流程

(1).tm向tc申请一个全局事务,全局事务创建成功并生成一个全局唯一的xid
(2).xid在微服务调用链路的上下文中传播
(3).rm向tc注册分支事务,将其纳入xid对应全局事务的管辖
(4).tm向tc发起针对xid的全局提交或回滚协议
(5).tc调度xid下管辖的全部分支事务完成提交或回滚请求

7.seata的AT模式的两阶段提交

(1).一阶段

a:解析sql语义,找到业务sql更新的业务数据,在业务数据更新前,将其保存为"before image".

b:执行业务sql更新业务数据,在业务数据更新之后.
c:将其保存为after image,最后生成行锁
d:以上三步操作在一个数据库事务内完成,这样保证了一阶段操作的原子性.

(2).二阶段

a:提交

因为业务sql已经提交至数据库,seata只需要将一阶段保存的快照数据和行锁删掉,完成数据清理即可.
b:回滚
seata需要回滚一阶段已经执行的业务sql,还原业务数据,回滚方式便是用"before image"还原业务数据,但是在还原前要首先校验脏写,对比"数据库当前业务数据"和after image,如果两份数据完全一致就说明没有脏写,可以还原业务数据,如果不一致就说明有脏写,出现脏写就需要转人工处理.

您的点赞、收藏、转发和关注是我持续创作的动力!

转载地址:http://uutli.baihongyu.com/

你可能感兴趣的文章