在了解了Seata 的使用和基本原理后,尝试进行了一把简单的压测,看看在高并发情况下是否有其他问题。
个人电脑:
组件:
全局事务的路径为,用户服务扣除余额=》订单服务添加一个订单=》库存服务扣除库存。
并发总数设置为1W次,并发请求数每次增加10。
在该并发量下,成功下单1W,也没有什么异常,检查数据,也没有数据不一致的问题。
在该并发量下也没有什么异常,但是偶尔某个响应时间明显长了很多。
聚合报告:
前面开始的线程:
最后的线程:
订单数:
从上可以看到,当并发请求数达到30时,吞吐量仍然在20/S 左右,并且响应时间很长,存在异常,有一个订单失败。猜测响应时间过长的原因在于全局锁的竞争等待。
在该请求并发情况下,吞吐量明显下降,异常率也飙升,失败了1000多个订单。但数据任然保持了一致性。
在库存服务中,抛出异常,测试在全局回滚的状态下,是否有并发问题。
数据无异常,全部回滚成功:
数据无异常,全部回滚成功:
数据无异常,全部回滚成功,吞吐量在50/S。
为了对比性,最后去掉分布式事务注解,测试下本地事务吞吐量。
可以看到吞吐量在80/S,比分布式事务场景下还是高了不少。
在高并发下,能保持全局事务数据一致性,没有发现脏数据。
在高并发下,吞吐量大概在20/S,性能一般,所以能不使用分布式事务就不要使用。
在并发请求数超过20 时,会爆发异常,100 并发数下,异常率为18%。
随着并发增加,响应时间也会增加很多,主要原因在于,分布式事务需要全局锁。
本文发布于:2024-01-31 23:50:20,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170671622632287.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |