前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【分布式事务】GitHub上分布式事务框架压测性能对比

【分布式事务】GitHub上分布式事务框架压测性能对比

作者头像
全栈程序员站长
发布2022-11-01 15:42:07
3940
发布2022-11-01 15:42:07
举报
文章被收录于专栏:全栈程序员必看

一、前言

随着项目逐步以微服务开发为趋势,逐渐呈现一个服务对应一个数据库。从中产生了分布式事务的问题:一个操作先后调用不同的服务,要保证服务间的事务一致性,这就是分布式事务解决的问题。

本次调研,根据github上star排名进行调研,主要调研了hmily和bytetcc两种分布式事务框架。

二、选型原则

本次调研主要是根据CAP和BASE理论进行,主要要保证数据的可用性、分区容错性、最终一致性。

三、调研框架介绍

hmily介绍

Hmily是由碧桂园工程师开发,高性能异步分布式事务TCC框架。

Github地址:https://github.com/yu199195/hmily

特点: 1、 采用disruptor框架进行事务日志的异步读写,与RPC框架的性能毫无差别。 2、 RPC框架支持 : dubbo,motan,springcloud。 3、 支持嵌套事务(Nested transaction support). 4、 采用disruptor框架进行事务日志的异步读写,与RPC框架的性能毫无差别。 5、 支持SpringBoot-starter 项目启动,使用简单。 6、 本地事务存储支持 : redis,mongodb,zookeeper,file,mysql。 7、 事务日志序列化支持 :java,hessian,kryo,protostuff。 8、 采用Aspect AOP 切面思想与Spring无缝集成,天然支持集群。 9、 内置经典的分布式事务场景demo工程,并有swagger-ui可视化界面可以快速体验。 10、 异步confirm 和 cancel,保证数据一致性 11、 使用Guava Cache

Bytetcc介绍

Bytetcc是由北京新奥集团工程师开发,是一个兼容JTA规范的基于TCC机制的分布式事务管理器。目前开发到了第五版,稳定版本为第四版,本次调研为第四版(0.4.x)。

GitHub地址:https://github.com/liuyangming/ByteTCC

特点: 1、支持Spring容器的声明式事务管理; 2、支持普通事务、TCC事务、saga事务等事务机制; 3、支持多数据源、跨应用、跨服务器等分布式事务场景; 4、支持长事务; 5、支持dubbo服务框架; 6、支持spring cloud;

四、压测机器情况说明

压测机

  • Windows 10 企业版
  • 16GB
  • Jmeter

服务器

服务器cpu

服务器内存

服务器网络

压测机cpu

服务器cpu配置

服务器内存配置

rds的cpu情况,可能多个

redis的cpu情况,可能多个

4

16

公司内网

4

4核

4G

4

没有使用

五、压测报告

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

hmily压测报告

正常执行

接口

总数

平均响应时间

中间数

90%

95%

99%

最小响应时间

最大响应时间

错误率

吞吐量

每秒接受消息

每秒发送发送消息

线程数

Pay

500000

225

215

347

394

513

13

1374

0

438.7

51.41

87.82

100

测试结果分析:测试结果发现,吞吐量比较高,但是hmily存在优化的地方,当前版本异步执行confirm和cancel的速度比较慢,且在高并发情况下存在数据不一致问题:

例如: 一共执行10w条数据,目标结果:库存-10w , 账户-10w。但是最终执行结果:库存和账户的剩余量不一样。不能保证数据的最终一致性。

Cpu:

在这里插入图片描述
在这里插入图片描述

DB cpu:

在这里插入图片描述
在这里插入图片描述
带回滚操作执行

接口

总数

平均响应时间

中间数

90%

95%

99%

最小响应时间

最大响应时间

错误率

吞吐量

每秒接受消息

每秒发送发送消息

线程数

Pay

200000

1573

1384

2703

3246

5815

48

11596

0

62.2

32.02

12.45

100

Cpu:

在这里插入图片描述
在这里插入图片描述

DB cpu:

在这里插入图片描述
在这里插入图片描述

Bytetcc 压测报告

正常执行

接口

总数

平均响应时间

中间数

90%

95%

99%

最小响应时间

最大响应时间

错误率

吞吐量

每秒接受消息

每秒发送发送消息

线程数

Pay

500000

1197

1180

1534

1652

1900

85

2953

0

106.9

14.43

16.71

100

测试结果分析:吞吐量比较低,可以保证数据的最终一致性。比较稳定。

Cpu:

在这里插入图片描述
在这里插入图片描述

DB cpu:

在这里插入图片描述
在这里插入图片描述
带回滚操作执行

接口

总数

平均响应时间

中间数

90%

95%

99%

最小响应时间

最大响应时间

错误率

吞吐量

每秒接受消息

每秒发送发送消息

线程数

Pay

60000

4006

3556

4491

4973

21972

100

10012

0

48.6

9.1

9.64

100

Cpu:

在这里插入图片描述
在这里插入图片描述

DB cpu:

在这里插入图片描述
在这里插入图片描述

六、小结

小编只是通过Jmeter对两个比较火的分布式事务框架进行了压测,其中的业务逻辑是一样的,性能也是有不同的。

测试的代码地址:

hmily:https://github.com/AresKingCarry/hmilyDemo Bytetcc:https://github.com/AresKingCarry/ByteTccDemo

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/200819.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、选型原则
  • 三、调研框架介绍
    • hmily介绍
      • Bytetcc介绍
      • 四、压测机器情况说明
        • 压测机
          • 服务器
          • 五、压测报告
            • hmily压测报告
              • 正常执行
              • 带回滚操作执行
            • Bytetcc 压测报告
              • 正常执行
              • 带回滚操作执行
          • 六、小结
          相关产品与服务
          分布式事务 DTF
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档