本课程开发软件与项目初始代码可以通过云盘下载,答疑服务可以关注视频片头的二维码获取。
https://www.123912.com/s/A75eVv-27mod,提取码:yton
教学视频
在微服务项目中,经常会有某项业务需要调用多个微服务的情况出现。为了能让这些微服务的执行都纳入到同一个事务中,于是我们需要使用分布式事务,其中Seata是一个很不错的选择。Seata是阿里开源免费的中间件,深受微服务开发者的喜爱。由于Seata是基于JAVA语言开发的,所以你本地电脑必须有JAVA环境。
一、为什么要使用分布式事务?
在分布式或者微服务架构中,想要完成一个简单的业务功能,通常需要调用多个子系统或者服务。为了保证这些子系统和服务在同一个事务中,这时候就必须使用分布式事务。
例如在单体项目中,生成订单记录、扣减库存和消费代金券,这三个步骤可以被纳入到同一个事务之下。任何一个业务环节出错,SpringBoot项目就回滚整个事务。但是在分布式系统中,这个情况就很难实现。因为SpringBoot项目中的@Transactional
注解只对当前项目有效,管不了其他项目的数据库事务,所以每个子系统的事务没办法纳入到全局事务。
即便三个分布式子系统使用同一个数据库,@Transactional
注解也没办法把三个子系统的业务纳入到同一个事务之下。因此我们在分布式或者微服务架构中,必须要引入分布式事务机制。
二、Seata简介
Seata是蚂蚁金服和阿里巴巴共同开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata具有四种不同的事务解决方案,可以应对多种分布式业务场景。Seata的资料很丰富,遇到技术难题可以查阅相关中文资料。Seata分布式事务架构由三个核心构件共同完成,分别是TC、TM和RM,学习Seata之前需要先弄明白这三个组件的关系。
1. RM(资源管理器)
资源管理器是使用数据库的微服务子系统,例如订单子系统、库存子系统都属于RM。
2. TM(事务管理器)
在分布式架构中,谁发起了分布式事务谁就是事务管理器。例如电商BFF系统调用三个子系统的时候,发起了分布式事务(全局事务),让三个子系统的事务(分支事务)加入到分布式事务,所以BFF系统就是TM。
3. TC(事务协调器)
在Seata架构中,TC是个独立的中间件产品,它负责调度RM和TM,维护全局事务和分支事务的状态。
三、安装Seata中间件
课程网盘上面提供了Seata压缩文件,你下载到本地解压缩,路径中不能有中文或者空格。不建议大家到Seata官网下载最新版本的压缩包,因为有可能跟我们后续要创建的SpringBoot项目不兼容,切记!
如果你使用Windows系统,进入Seata的bin目录,双击seata-server.bat
批处理文件就可以启动Seata了。如果Seata程序运行失败,最大的嫌疑是你本地电脑没有配置JAVA_HOME环境变量。再者可能是本地JDK的版本太老的缘故(很多人还在用JDK1.8)。
如果你使用MacOS系统,在命令行中进入Seata的bin目录,执行下面的命令就可以启动Seata了。
./seata-server.sh
Windows上面关闭Seata很简单,关闭命令行窗口就可以了。MacOS上面需要先找到Seata进程,然后用Kill命令关闭Seata进程。
四、访问Web管理画面
打开浏览器访问本地电脑的7091
端口,能看到Seata管理画面。登录的用户名和密码都是seata
,将来我们在Web系统中能看到分布式事务的相关信息。