1.阿里分布式事务框架GTS开源了一个免费社区版Seata
(1)Seata项目地址:https://github.com/seata/seata-samples
(2)Seata:(Simple Extensible Autonomous Transaction Architecture)
<1>简易可扩展的自治式分布式事务管理框架,其前身是fescar
<2>阿里巴巴GTS的开源版实现,它的特点是高性能且易于使用
<3>旨在实现简单并快速的事务提交与回滚
(3)Seata机制
<1>分布式事务是一个全局事务(Global Transaction)
<2>由一批分支事务(Branch Transation)组成,通常分支事务只是本地事务
<3>Seata中有三大基本组件:
3.1.Transaction Coordinator(TC):
3.1.1.管理全局的分支事务的状态,用于全局性事务的提交和回滚
3.2.Transaction Manager(TM):
3.2.1.事务管理器,用于开启全局事务、提交或者回滚全局事务
3.2.2.是全局事务的开启者
3.3.Resource Manager(RM):
3.3.1.资源管理器,用于分支事务上的资源管理
3.3.2.向TC注册分支事务,上报分支事务的状态
3.3.3.接受TC的命令来提交或者回滚分支事务
<4>Seata管理分布式事务的典型生命周期:
4.1.TM要求TC开始新的全局事务,TC生成表示全局事务的XID
4.2.XID 通过微服务的调用链传播
4.3.RM在TC中将本地事务注册为XID的相应全局事务的分支
4.4.TM要求TC提交或回滚XID的相应全局事务
4.5.TC驱动XID的相应全局事务下的所有分支事务,完成分支提交或回滚
2.阿里分布式事务框架演进历史
(1)TXC:Taobao Transaction Constructor
<1>阿里巴巴中间件团队自2014年起启动该项目
<2>以满足应用程序架构从单一服务变为微服务所导致的分布式事务问题
(2)GTS:Global Transaction Service
<1>2016年TXC作为阿里中间件的产品,更名为GTS发布
(3)FESCAR:2019年开始基于 TXC/GTS 开源 FESCAR
(4)Seata:2019年4月,更名为Seata,并调整开源计划
3.分布式事务框架Seata在SpringCloud环境下的应用实践
(1)安装Seata依赖环境
<1>首先去Fescar官方的Github上下载源码:
1.1.https://github.com/seata/seata-samples
<2>MySQL安装
2.1.MySQL完成创建后,接下来创建Demo中依赖的库表
2.2.MySQL连接信息的修改
2.2.1.修改pom.xml中mysql-connector的版本信息
2.2.2.原始的是5.1.37,根据连接的MySQL的版本修改此处的版本信息
2.3.修改jdbc.properties的连接信息
2.3.1.将用户名密码和库改为上面创建的即可,fescar_demo改为fescar
<3>服务的启动:启动fescar-server
3.1.下载fescar-server相关的安装包
3.2.https://github.com/alibaba/fescar/releases
3.3.解压缩后,启动server数据
(2)启动分布式服务调用
<1>启动DubboAccountServiceStarter,在IDE中启动即可
1.1.启动中要加入-Djava.net.preferIPv4Stack=true参数
<2>启动DubboOrderServiceStarter
<3>启动DubboStorageServiceStarter
<4>启动DubboBusinessTester
(3)至此,Seata的本地Demo环境的全部搭建完毕
4.Seata解决总结
(1)seata中有两种分布式事务实现方案,AT及TCC
(2)AT模式主要关注多 DB 访问的数据一致性,当然也包括多服务下的多 DB 数据访问一致性问题
(3)TCC模式主要关注业务拆分,在按照业务横向扩展资源时,解决微服务间调用的一致性问题