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

【分布式事务】GitHub上分布式事务框架压测性能对比一、前言      随着项目逐步以微服务开发为趋势,逐渐呈现一个服务对应一个数据库。从中产生了分布式事务的问题:一个操作先后调用不同的服务,要保证服务间的事务一致性,这就是分布式事务解决的问题。     &am

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

一、前言

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

      本次调研,根据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.net/200819.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 直流电压前馈控制数字逆变电源设计与实现

    直流电压前馈控制数字逆变电源设计与实现引言逆变电源一般采用瞬时反馈控制技术来提高逆变电源的动态响应速度,减少输出电压的谐波含量,改善输出电压波形的质量。常见的逆变电源控制技术,有重复控制、谐波补偿控制、无差拍控制、电压瞬时值控制和带电流内环的电压瞬时值控制等类型[1~4]。其中,带电流内环电压瞬时值环路的双环控制方法因实现简单,系统动态性能优越和对负载的适应性强等优点,而逐渐成为高性能逆变电源的发展方向之一[4]。但传统控制方法是基于逆变电源直流侧输入电压为无脉动直流电压的假定,而实际逆变电源,存在因电网电压波动或负载突变而导致直流侧电压波

    2022年6月11日
    35
  • @transactional的使用_@transactional注解默认的回滚方式

    @transactional的使用_@transactional注解默认的回滚方式@Transactional是声明式事务管理编程中使用的注解1.添加位置1)接口实现类或接口实现方法上,而不是接口类中。2)访问权限:public的方法才起作用。@Transactional注解应该只被应用到public方法上,这是由SpringAOP的本质决定的。系统设计:将标签放置在需要进行事务管理的方法上,而不是放在所有接口实现类上:只读的接口就不需要事务管…

    2022年9月30日
    3
  • python多因素方差分析_双因素方差分析例题

    python多因素方差分析_双因素方差分析例题在实际应用中,一个实验的指标往往受到多个因素的影响。例如饮料的销量有可能受到销售地区或者饮料颜色的影响。在方差分析中,若把饮料的颜色看做影响销量的因素A,把销售地区看做影响因素B。同时对因素A和因素B进行分析,就称为双因素方差分析。a b ca1 b1 20a1 b2 22a1 b3 24a1 b4 16a1 b5 26a2 b1 12a2 b2 10a2 b3 14a2 b…

    2022年10月7日
    6
  • @Valid注解_@validated注解

    @Valid注解_@validated注解@Valid注解通常用于对象属性字段的规则检测,具体啥意思,下面让我娓娓道来:下面我们以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出@Valid注解用法详解。那么,首先,我们会有一个员工对象Employee,如下:/***员工对象**@authorsunnyzyq*@since2019/12/13*/publiccl…

    2022年9月29日
    5
  • CRC在线计算器,很好用「建议收藏」

    CRC在线计算器,很好用「建议收藏」http://www.ip33.com/crc.html

    2025年6月2日
    1
  • 视频教程-Java大数据培训视频全套教程-SVN教程(33)-Java[通俗易懂]

    视频教程-Java大数据培训视频全套教程-SVN教程(33)-Java[通俗易懂]Java大数据培训视频全套教程-SVN教程(33)”马克-to-win”是…

    2025年6月17日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号