首页 > 数据库 > 数据库开发技术 > Seata1.4.0 源码编译
什么是Seata?
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。AT模式是阿里首推的模式,阿里云上有商用版本的GTS(Global Transaction service 全局事务服务)
Seata的三大角色
在 Seata 的架构中,一共有三个角色:
TC (Transaction Coordinator) - 事务协调者
维护全局和分支事务的状态,驱动全局事务提交或回滚。
TM (Transaction Manager) - 事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务。
RM (Resource Manager) - 资源管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
其中,TC 为单独部署的 Server 服务端,TM 和 RM 为嵌入到应用中的 Client 客户端。
在 Seata 中,一个分布式事务的生命周期如下:

1.TM 请求 TC 开启一个全局事务。TC 会生成一个 XID 作为该全局事务的编号。XID,会在微服务的调用链路中传播,保证将多个微服务的子事务关联在一起。
2.RM 请求 TC 将本地事务注册为全局事务的分支事务,通过全局事务的 XID 进行关联。
3.TM 请求 TC 告诉 XID 对应的全局事务是进行提交还是回滚。
4.TC 驱动 RM 们将 XID 对应的自己的本地事务进行提交还是回滚。
源码拉取
源码:https://github.com/seata/seata.git
官方Demo: https://github.com/seata/seata-samples.git
源码编译
seata编译版本:checkout tag v1.4.0
源码编译问题:
seata源码导入到idea中第一次启动server端的时候,编译会报错如下:

问题原因:缺少protobuf编译的java文件
解决方案:idea安装protobuf support插件,重启idea。
插件下载地址:https://github.com/ksprojects/protobuf-jetbrains-plugin
注意idea版本不能高于插件版本

通过protobuf:compile编译seata-serializer包

执行之后就会生成java代码

配置db存储模式
修改resources下的file.conf,修改store.mode="db",修改store.db相关配置

启动Seata TC Server服务
先启动nacos server服务,然后找到server模块下io.seata.server.Server.java,执行main方法启动

原文作者:Fox爱分享;如有侵权,请联系管理员删除。