写点什么

seata 入门介绍与 seata-service 部署与验证(一)

  • 2021 年 12 月 29 日
  • 本文字数:1473 字

    阅读完需:约 5 分钟

作者:ptti

来源:恒生LIGHT云社区


目的:在本地部署一个 SEATA 测试环境,为后续学习做准备。


一、seata 概述


Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。


我们可以简单的将这 4 种事务根据柔性程度进行排序:



随着事务从刚性到柔性变化,有以下几个核心的关注点会发生变化;


l 越来越支持高并发场景;


l 越来越高的改造成本;


l 越来越长的事务支持;


l 越来越弱的一致性约束;


目前使用的流行度 情况是:AT > TCC,而且因为 AT 模式号称业务无侵入,所以后续简单入门采用 AT 模式,方便快速学习。


在 Seata 的架构中,一共有三个角色


TC (Transaction Coordinator) - 事务协调者,维护全局和分支事务的状态,驱动全局事务提交或回滚。


TM (Transaction Manager) - 事务管理器,定义全局事务的范围:开始全局事务、提交或回滚全局事务。


RM (Resource Manager) - 资源管理器,管理分支事务处理的资源,与 TC 交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。


其中,TC 为单独部署的 Server 服务端,TM 和 RM 为嵌入到应用中的 Client 客户端。


本文主要讲解 Server 服务端的部署


二、部署 TC Service


TCService 有多种部署模式,本文使用 mysql 存储事务信息,zk 作为注册中心配置中心。


前期准备:mysql,zk,seata 软件包


1、 数据库初始化,创建数据库 seata,初始化三张数据库表:


global_table,用于存储全局事务信息


branch_table,用于存储分支事务信息


lock_table,用于存储锁信息


过程这里就不赘述了。


2、 修改 seata 配置文件数据存储模式,安装包下 conf/file.conf 文件



3、 修改 seata 配置文件 conf/registry.conf 使用 zookeeper 作为注册中心



4、 启动 seata server


双击 seata 安装包下 bin/seata-server.bat,启动 seata 服务。可以看到控制台打印出 Server started, listen port:8091,表示服务启动了,监听 8091 端口。


三、使用微服务应用验证分布式事务


1、下载官方 demo,地址如下:https://github.com/seata/seata-samples.git


2、初始化微服务数据库,每个微服务都要有一直 undo_log 表,用于存储前置镜像后置镜像的数据信息,主要用于分支事务回滚操作。


3、使用 idea 打开示例,dubbo 的 demo,包含三个 Dubbo 服务,调用关系如下:



4、修改代码配置信息如下图



主要修改 registry.conf 注册中心使用 zk,用于服务注册发现 TC 服务,


修改 jdbc 配置每个微服务的数据库,


修改微服务之间进行 rpc 通信的注册中心也是使用 zookeeper。


5、开始启动服务


启动 DubboAccountServiceStarter


启动 DubboStorageServiceStarter


启动 DubboOrderServiceStarter


6、测试代码



可以看到 seata AT 模式只需要在分布式事务发起方法上添加一个注解 @GlobalTransactional


就可以完成分布式事务的开发,达到业务的无侵入性,学习成本几乎为零


我们可以通过简单修改代码测试两种情况:


分布式事务正常提交,分布式事务异常回滚,分别观察分支事务的 undolog 表与业务表中的数据。同时可以观察一下 seata-service 中表中的数据。


四、后续


上面的逻辑看起来比较简单,用于快速上手是个不错的选择。网络上可以找到大量的文章/博客对相关分布式事务的模式进行细致的分析与阐述,相关同学可以自行学习。Seata 在具体使用过程中还是会有很多问题的,希望能够一起探讨学习。




想向技术大佬们多多取经?开发中遇到的问题何处探讨?如何获取金融科技海量资源?


恒生LIGHT云社区,由恒生电子搭建的金融科技专业社区平台,分享实用技术干货、资源数据、金融科技行业趋势,拥抱所有金融开发者。


扫描下方小程序二维码,加入我们!



发布于: 刚刚
用户头像

还未添加个人签名 2018.11.07 加入

还未添加个人简介

评论

发布
暂无评论
seata入门介绍与seata-service部署与验证(一)