Seata的技术调研
引子
本文不剖析业内分布式组件,只剖析seata这一组件的技术调研。看看是否存在接入价值。
一、概述
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。也是目前最具影响力的分布式事务组件。
本文从核心原理、性能测试两大模块来剖析seata。
根据Seata官网介绍历史如下:
Alibaba(阿里巴巴)
- TXC: 淘宝事务组件。阿里巴巴中间件团队从2014年开始启动该项目,以应对应用架构从单点到微服务的变化带来的分布式事务问题。
- GTS: 全局事务服务。 TXC作为阿里云中间件产品,自2016年起更名为GTS。
- Fescar:Fast & EaSy Commit And Rollback,从2019年开始启动基于TXC/GTS的开源项目Fescar,以便在未来与社区密切合作。
Ant Financial(蚂蚁金服)
XTS: 拓展事务服务。蚂蚁金服中间件团队从2007年开始开发分布式事务中间件,该中间件在蚂蚁金服得到广泛应用,解决了跨数据库和跨服务的数据一致性问题。
DTX: 分布式事务扩展。自2013年起,XTS在蚂蚁金服上线,命名为DTX。
Seata Community(Seata社区)
- Seata :简单的可扩展自动事务架构(Seata=Simple Extensible Autonomous Transaction Architecture)。蚂蚁金服加入Fescar,使其成为一个更加中立、开放的分布式事务社区,Fescar更名为Seata。
二、核心原理
2.1 四种事务模式
| 模式 | 概述 | 优点 | 缺陷 | 适用场景 |
|---|---|---|---|---|
| XA | 二阶段提交的数据库驱动实现,套壳。 |
|
|
|
| AT | seata自封装UNDO_LOG实现 |
|
|
|
| TCC | 二阶段提交的应用层实现。 |
|
|
|
| SAGA | 逆向按顺序回滚(借鉴SAGAS论文思路实现),其实就是业内泛补偿方案的一种实现。 |
|
|
|
三、性能测试
共用一个业务场景,同一个测试方案。从请求损耗、并发吞吐2个重要指标进行测试。
3.1 测试方案
- 本次采用Apache的开源测试工具Jmeter。
- 本次测试模拟用户购买商品的业务逻辑,由4个微服务提供支持,具体服务调用如下图。

3.2 请求损耗
本次测试目标是针对Seata的AT、TCC、Saga、XA事务模式下正常的请求,验证在不同事务模式下请求的耗损情况。
测试指标
- 获取各事务模式下请求的耗损情况;
测试结果
注:脚本采用单线程跑,采集样本数不够大,可能会影响数据的可靠性,如果有条件可以十倍样本数。

3.2 并发吞吐
本次测试是针对Seata的AT、TCC、Saga、XA事务模式下进行分段压力测试(模拟百万账户/商品的随机下单场景),验证在不同并发下,不同事务模式的性能影响情况。
为确保下单数据足够分散,模拟产生了超过100万的账户和商品,并随机组合下单;
测试指标
- 获取在不同事务模式下单机部署情况下最大TPS值;
- 在分段并发下,各事务模式的吞吐量变化;
测试结果
吞吐量:

如上图所示,在并发较高的情况下,相比于不使用Seata事务,TCC和Saga事务模式服务的吞吐能力较为接近。而XA事务模式在并发线程超过120之后,吞吐能力急剧下降,当超过并发线程超过140,大量的事务挂起超时,服务已经接近不可用。AT事务模式介于XA与TCC/Saga之间,但整体表现比较稳定。
TPS:

如上图所示,各种事务模式下最大的TPS对比,其中,Saga和TCC事务模式的最大TPS与不使用Seata时较为接近。
四、结论
结合4种模式的对比和性能测试,发现Saga和TCC比较优秀。由于Saga对事物的拆分更细,操作起来耗时更多,请求损耗较大,更适合长事务场景。TCC很明确的拆分为二阶段,整体时间较为可控。但由于Saga官网还提供了事务监控后台,有时候需要人工接入时,可以很方便的操作。
=======================================
本文测试数据来源于同事李总,特此感谢!
Seata的技术调研的更多相关文章
- 多屏广告技术调研 & 广告基础介绍
之前做的多屏广告产品调研,并简单介绍了一些基础广告知识.见ppt:多屏广告技术调研
- 逐步把Nginx及Redis引入项目组之负载均衡技术调研初版总结
本篇以一个Nginx服务.两个Tomcat服务.一个Redis搭建一个负载均衡环境,由于就一台电脑暂以随机分配client请求策略开展,详细工作中推荐以IP地址来实现client请求的动态负载策略.省 ...
- 关于Windows Phone平台音乐播放的的技术调研
希望看到这篇文章的开发者能提供你们的想法,让我们一起来探讨一款wp平台上面一款能流畅播放.能流畅拖拽进入条.只发一次请求就可以缓存的最好的播放器.希望大家能对我下面遇到的问题作出回答. 现在出了Win ...
- webp图片技术调研最终结论(完全真实数据可自行分析)
关于webp图片格式调研及测试 资料收集 什么是 WebP? WebP(发音 weppy),是一种支持有损压缩和无损压缩的图片文件格式,派生自图像编码格式 VP8.根据 Google 的测试,无损压缩 ...
- app开发技术调研
l 面向消费者与公众的应用系统,主要分为3种主流的渠道: 1. web应用 2. 基于腾讯微信开放api构建的微信app 3. 移动端app ll 在移动端app方面,通过调研,现主流的 ...
- Android 虚拟多开系列一——技术调研
参考链接:http://weishu.me Github源码链接: 国内Xposed框架源码链接 VirtualAp ...
- 指尖前端重构(React)技术调研分析
摘要:重构前的技术文档调研与分析,包括技术选型为什么选择react,应用过程中的注意事项等. 一.为什么选择React React是当前前端应用最广泛的框架.三大SPA框架 Angular.React ...
- 技术调研,IDEA 插件怎么开发「脚手架、低代码可视化编排、接口生成测试」?
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 不踩些坑,根本不是成熟的码农! 你觉得肯德基全家桶是什么?一家人一起吃的桶吗,就那么 ...
- 【技术调研】最强Node-RED初探总结
在某个项目中需要调研下node-red的功能,我大概花了三天时间研究了相关的官方文档,写了几个Demo总结了下node-red相关的功能.如需转载,请注明出处 https://www.cnblogs. ...
- MySQL数据库分片技术调研
将这段时间了解的MySQL分片技术和主从复制只是整理清楚画了思维导图记录一下,希望能给需要的人一些帮助 P.S.:个人整理,可能会有错误之处,还望指出~ 要解决的问题 1.海量数据的操作超出单表.单库 ...
随机推荐
- 4.6 Windows驱动开发:内核遍历进程VAD结构体
在上一篇文章<内核中实现Dump进程转储>中我们实现了ARK工具的转存功能,本篇文章继续以内存为出发点介绍VAD结构,该结构的全程是Virtual Address Descriptor即虚 ...
- 4.2 Inline Hook 挂钩技术
InlineHook 是一种计算机安全编程技术,其原理是在计算机程序执行期间进行拦截.修改.增强现有函数功能.它使用钩子函数(也可以称为回调函数)来截获程序执行的各种事件,并在事件发生前或后进行自定义 ...
- 在K8S中,Pod亲和性概念是什么?
在Kubernetes(简称K8S)中,Pod亲和性和反亲和性(Affinity and Anti-Affinity)是集群调度策略的重要组成部分,它们用于控制Pod如何与节点或其他Pod相对应地放置 ...
- Linux下修改MySQL可以远程访问
所有操作均在MySQL命令行下执行,进入MySQL命令行:mysql -uroot -p #允许root账户远程登录 update mysql.user set host='%' where user ...
- sed文本处理工具常见用法
sed的全称是stream editor, 表示它是一个流编译器.可以处理文本内容和终端命令的流标准输出,对文本做查找,替换,插入,删除操作. 它是把文件中的内容逐行copy到缓冲区,然后在缓冲区中进 ...
- P7907 [Ynoi2005] rmscne题解
题目链接:rmscne 神仙经典数据结构难题.看到求区间种类数有关的东西,需要下意识的反应到经典老题 HH的项链,这里可以学习我这篇 题解.具体学习下扫描线怎么做这类东西的. 看看本题,首先处理区间查 ...
- Redis的Java客户端-Jedis
Redis的Java客户端-Jedis 在Redis官网中提供了各种语言的客户端,地址:https://redis.io/docs/clients/ 其中Java客户端也包含很多: 标记为的就是推荐使 ...
- 国产数据库TiDB初体验:简单易用,快速上手
最近开始关注国产数据库的发展,为了能从技术人员的角度来实际体验国产中目前最流行的TiDB数据库,从今天起,在官方公布的课程开始正面了解TiDB的设计理念. 看了2小时的入门课程介绍,总体来说,还是有不 ...
- 如何在Delphi TImageList 中使用 透明 png 图标
Query: "Embarcadero Delphi ImageList does not show transparent PNG icons correctly. How to fix ...
- STC8A/STC8H通用的最小系统板
STC8(包括之前的STC15)因为自带晶振, 所以最小电路需要的外围元件几乎为0 -- 手册上画的两个电容不加也没问题, 直接加上5V电源就能跑. 这样只需要用排针把管脚都引出就行了. 唯一不方便的 ...