欢迎访问Spring Cloud中国社区

《重新定义Spring Cloud实战》由Spring Cloud中国社区倾力打造,基于Spring Cloud的Finchley.RELEASE版本,本书内容宽度足够广、深度足够深,而且立足于生产实践,直接从生产实践出发,包含大量生产实践的配置。欢迎加微信Software_King进群答疑,国内谁在使用Spring Cloud?欢迎登记

Spring Cloud的分布式事务框架压测第一轮

xujin · 9月前 · 17657 ·

前言

分布式事务对微服务开发者而言是既想努力避免又无法完全回避的蛋疼问题。通过使用分布式事务处理框架可以很大程度上解决分布式事务所带来的事务性能、可靠性问题,以及引入的编码复杂性。本文由海信HICS技术团队压测提供,目前国内主要的开源分布式事务框架框架包括:

框架名称 GitHub地址 star数量
社区开源项目dts https://github.com/venusteam/dts 111
tcc-transaction https://github.com/changmingxie/tcc-transaction 2192
Hmily https://github.com/yu199195/hmily 1196
ByteTCC https://github.com/liuyangming/ByteTCC 1137
myth https://github.com/yu199195/myth 894
EasyTransaction https://github.com/QNJR-GROUP/EasyTransaction 805
tx-lcn https://github.com/codingapi/tx-lcn/ 802

我们响应springcloud社区的号召,计划对上框架的非功能对比测试,希望对大家日后的选型有所帮助。
本文是此测试的第一轮,本轮对不使用消息中间件的分布式事务处理模式进行了测试(包括TCC、广义上的2PC,3PC等),测试框架包括:

测试硬件环境

应用服务器规格均为(2核4G,实例规格ecs.c5.large)

mysql数据库规格为(RDS配置为2核4G,实例规格rds.mysql.s2.large,MySQL5.7高可用版)

ECS主机与RDS均在同一内网环境下

测试业务场景

本测试场景涉及三个服务:

  • 订单服务
  • 支付服务
  • 库存服务

用户请求订单服务创建订单,订单服务作为事务发起者,发起分布式事务,订单服务分别请求库存服务与支付服务完成相应操作,从而完成一个分布式事务。

服务间调用关系图

服务中涉及数据库操作

订单服务
  • 新增订单信息
  • 新增订单明细信息
  • 新增/更新商品统计信息
  • 查询商品信息
  • 查询商品品类信息
  • 查询更新商品统计信息
支付服务
  • 新增支付信息
  • 新增支付优惠信息
  • 新增/更新支付统计信息
  • 查询支付统计信息
库存服务
  • 新增库存变动信息
  • 更新库存信息
  • 查询库存信息

测试说明

  • 针对上面的框架进行性能测试,对于性能较好的框架会