ITPub博客

首页 > 数据库 > 数据库开发技术 > Seata1.4.0 源码编译

Seata1.4.0 源码编译

原创 数据库开发技术 作者:Fox666 时间:2021-02-03 20:21:33 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爱分享;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
图灵Fox老师,曾任互联网公司架构师,精通Java技术体系,具有十多年中间件研发和大型互联网项目架构经验,喜欢分享中间件、消息队列、搜索引擎、分布式存储、微服务以及云原生等技术

注册时间:2020-12-01

  • 博文量
    30
  • 访问量
    24098