关于java:单体秒杀服务转dubbo框架分布式事务实现

38次阅读

共计 919 个字符,预计需要花费 3 分钟才能阅读完成。

单体秒杀服务转 dubbo 框架 + 分布式事务实现

计划和技术架构

计划:秒杀计划(

)+ 分布式事务解决方案(为了让领取、扣减库存和订单状态一致性解决方案,见下图)

目标:dubbo 微服务化 实现订单领取分布式事务,对立提交和回滚

技术架构:

docker + nacos 架构(舍去 zookeeper,nacos 更香)

docker 版本 2.7

springboot 版本 2.6.1

分布式事务(tcc -transaction 1.73)

github 地址:https://github.com/luozijing/…

我的项目体验地址:http://81.69.254.72:9082/logi…

dubbo 模块拆分

模块依据上图拆分成 admin(web controller 和前端页面入口) + 订单(秒杀订单 + 库存)+ 用户(领取、用户表)。

其中 order 和 users 模块都是分成两个子模块,api 和 provider 模块,api 负责提供 dubbo 的接口和实体类,providers 负责提供 api 的实现,以及相干外部逻辑。

其中还有一个 common 的公共模块,提供公共工具类,包含 redis 连贯、zokeeper 连贯等工具类等。

性能介绍

用户注册与登录

用户注册本人的手机号格局的账号 id,明码至多为 6 位,并且该账号会初始化 2000 的虚构账户,用户后续的订单领取。

注册后能够登录,显示秒杀界面,进行抉择商品秒杀,每类秒杀商品不超过一个。

测试账户 15712341234/1234567

秒杀与领取

抉择商品进行秒杀后,能够查看生成的订单,订单会锁定秒杀的库存,但不会真正扣减库存。

进行虚构领取,之后会真正扣减库存,批改订单状态,缩小虚构账户金额,具体能够查看页面库存的变动

线上部署

服务器:tx 云 2c4g 轻量服务器,1200G 流量,

操作系统用: 零碎的自带的 docker 的 CentOS7.6-Docker20

部署模块:

依据理论服务器配置,配置好 java 模块的内存大小,以及配置服务器 swap 内存,保障服务的稳固运行。nacos 配置了 512M,dubbo 模块根本没有业务配置了 128m,新生代都是一半。docker 一键化部署的配置在 github 中有,不过 dubbo 模块须要自行编译到服务器中启动。

正文完
 0