Jmeter Springboot Redisson分布式锁并发订单操作

2023-11-07

**Jmeter+Springboot+Redisson分布式锁并发订单操作(下单、取消单、完成单、加库存)**<br>
涉及知识点:<br>
   > java+springboot+mybatis开发<br>
   > redis分布式锁+Redisson客户端<br>
   > Jmeter各种骚操作:用户变量、随机取值、jdbc操作、if else操作、循环、控制器、beanshell断言等等<br> 
1. 环境工具:<br>
   idea、jmeter<br>
   jdk1.8、maven、mysql、redis<br>
   三台服务器:两个4C16G服务节点+一个台nginx(淘宝的tengine-2.3.0)节点<br>
2. 思路概要:<br>
   >(1) 主要提供四个接口:下单、取消、出库、添加库存,四种操作在操作库存表t_stock_demo行的时候都需要添加Redis的锁,使用:``Future<Boolean> res = fairLock.tryLockAsync(50, 10, TimeUnit.SECONDS);``<br>
   >(2) 另外取消和出库,因为是用Jmeter直接查询数据库获取可用的订单数量,为防止统一订单重复操作在RestSevice层使用订单号orderNo做了一层Redis分布式锁,订单已在操作直接返回结果。<br>
   >(3) 使用jmeter的jdbc操作+函数、随机数获取已确认的订单结合if控制器判断结果,进行取消和出库操作<br>
   >(4) 划重点:使用分布式锁和本地事物,一定要**先提交事物再释放锁、先提交事物再放锁、先提交事物再放锁**<br>
3. SQL、jmeter脚本、jar包启动脚本请到[doc](https://github.com/Xlinlin/SpringCloud-Demo/tree/master/SpringBoot-Stock-Demo/doc)目录查看。
4. 操作指南:
   >(1) git clone https://github.com/Xlinlin/SpringCloud-Demo   <br>
   >(2) cd SpringCloud-Demo/SpringBoot-Stock-Demo  <br>
   >(3) 配置数据mysql和redis配置,application.yml文件,(自行准备mysql、redis环境) <br>
   >(4) mvn install <br>
   >(5) 拷贝stock_demo.jar和doc/bootstrap.sh到 linux服务器(自行准备java环境)上 <br>
   >(6) 适当修改bootstrap.sh脚本目录,保持与springboot包在同一目录,直接执行脚本:``./bootstrap start`` <br>
   >(7) 查看进程、端口是否启动:``jps 或 ps -ef|grep stock_demo 或 lsof -i:7878``<br>
   >(8) 配好nginx跳转
   >(9) 下载[jmeter](http://jmeter.apache.org/download_jmeter.cgi) ,解压进入jmeter目录,双击:ApacheJMeter<br>
   >(10) 文件->打开->找到doc下的[.jmx](https://github.com/Xlinlin/SpringCloud-Demo/blob/master/SpringBoot-Stock-Demo/doc/stock_demo_jmeter.jmx)文件,大概的画面:<br>
   ![](https://github.com/Xlinlin/SpringCloud-Demo/blob/master/SpringBoot-Stock-Demo/doc/stock_demo_jmeter.jpg?raw=true)<br>
   >(11) 修改远程服务器地址信息为你的nginx服务<br>
   >(12) 修改你的数据地址,此处需要将mysql的驱动jar包引入jmeter/lib目录下<br>
   >(13) 线程、参数、请求调整好后,然后点击启动(Ctrl+R)<br>
   部分截图:
   >(14) 日志![](https://github.com/Xlinlin/SpringCloud-Demo/blob/master/SpringBoot-Stock-Demo/doc/sever_console_log.jpg?raw=true)
   >(15) 库存表![](https://github.com/Xlinlin/SpringCloud-Demo/blob/master/SpringBoot-Stock-Demo/doc/stock_query.jpg?raw=true)
   >(16) 订单表![](https://github.com/Xlinlin/SpringCloud-Demo/blob/master/SpringBoot-Stock-Demo/doc/order_query.jpg?raw=true)
   

[GitHub源码](https://github.com/Xlinlin/SpringCloud-Demo)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jmeter Springboot Redisson分布式锁并发订单操作 的相关文章

随机推荐

  • 【模板】重载运算符

    重载string 以日期类CDate为例 class CDate public int y m d CDate int y int m int d y y m m d d operator string string s stringstr
  • CCAnimation类 参考

    http www cocos2dchina com documentation interface c c animation html
  • UPLOAD labs 第三关

    看源码 is upload false msg null if isset POST submit if file exists UPLOAD PATH deny ext array asp aspx php jsp file name t
  • QT中的this指针什么意思?namespace又是什么意思?

    初学者对于qt中的this指针会摸不着头脑 下面我谈谈自己的理解 结论 this指针 指的就是qt designer里面ui界面 也就是xxx ui文件 举个例子 现在我有三个文件 分别是server h头文件 server cpp源文件
  • Spring 根据Bean注册的名称获取Bean对象

    根据Bean注册的名称获取Bean对象 一个通过Bean名称获取Bean的对象实例的一个类 现在复习下Spring 再此处记录下 package net shopxx util import org springframework bean
  • 二叉树层次遍历如何判断当前结点是哪层的?

    二叉树层次遍历就是按每层从左到右 一般是从左到右 若想从右到左也很简单 的次序遍历结点 下面是一个简单的例子 这棵二叉树层次遍历的结果是 1 2 3 4 5 实现层次遍历一般是用队列 思路还是比较简单 1 首先把根结点入队 2 若队列不为空
  • mac 完全卸载python

    这里主要是卸载pkg安装的python 第一步 删除框架 sudo rm rf Library Frameworks Python framework Versions 3 11 第二步 删除应用目录 sudo rm rf Applicat
  • 解决Module not found: Error: ‘element-plus/lib/theme-chalk/index.css‘,通过下载插件,使用的是vue ui项目仪表盘

    1 首先在package json中查看vue版本和element ui版本 2 找到element ui官网https element eleme cn zh CN component quickstart 点击element ui 3
  • STM32定时器-基本定时器

    目录 定时器分类 基本定时器功能框图讲解 基本定时器功能 时钟源 计数器时钟 计数器 自动重装载寄存器 定时时间的计算 定时器初始化结构体详解 实验 定时器分类 STM32F1 系列中 除了互联型的产品 共有 8 个定时器 分为基本定时器
  • 初识Electron开发桌面应用

    Electron是什么 Electron 基于 Chromium 和 Node js 让你可以使用 HTML CSS 和 JavaScript 构建跨平台 mac window linux 桌面应用 Electron开发环境的搭建 首先安装
  • 数据预测之BP神经网络具体应用以及matlab代码(转)

    1 具体应用实例 根据表2 预测序号15的跳高成绩 表2 国内男子跳高运动员各项素质指标 序号 跳高成绩 30行进跑 s 立定三级跳远 助跑摸高 助跑4 6步跳高 负重深蹲杠铃 杠铃半蹲系数 100 s 抓举 1 2 24 3 2 9 6
  • 优先队列(堆)

    设计一个程序模仿操作系统的进程管理问题 进 程服务按优先级高的先服务 同优先级的先到先服务的管理 原则 设文件task txt中存放了仿真进程服务请求 其中第 一列是进程任务号 第二列是进程的优先级 1 30 2 20 3 40 4 20
  • React 与Spring Json通信

    前端 post方法 对应post请求 param String url 请求的url地址 param Object params 请求时携带的参数 param Boolean json true json格式请求头 false FormDa
  • Nothing to be done for `install-exec-am' while compile zabbix

    编译zabbix报错 make 3 Leaving directory home sysadmin zabbix zabbix 1 8 src libs zbxjson make 3 Entering directory home sysa
  • 利用scrapy框架进行数据的爬取

    首先介绍一下什么是scrapy框架 爬虫中封装好的一个明星框架 代表性功能 高性能的持久化存储 异步的数据下载 高性能的数据解析 分布式 Scrapy是一个为了爬取网站数据 提取结构性数据而编写的应用框架 非常出名 非常强悍 其内部已经被集
  • 《UE4开发笔记》Tip 0 Rider的五个必备技巧

    在UE4的C 工程和源码开发中 过去常使用Visual Studio系列来作为IDE 但VS始终对UE4工程支持的并不友好 小番茄Visual Assist X系列插件的安装也是十分玄学 时不时就失灵 JetBrains推出了Rider F
  • Selenium WebDriver使用IE浏览器

    IEdriver插件下载地址 http www cr173 com soft 195732 html 1 配置系统环境变量 我的电脑 右键 属性 高级系统设置 环境变量 系统变量 path 注 先把IEDriverServer exe放在C
  • HTML <title> 标签

    实例 一个简单的 HTML 文档 带有尽可能少的必需的标签 The content of the document 定义和用法
  • Elasticsearch概述和DSL查询总结

    目录 Elasticsearch概述 1 什么是Elasticsearch 2 作用 3 特点 DSL Domain Specifit Language 特定领域语言 概念和作用 查询代码总结 最后附项目准备 1 创建搜索工程 maven工
  • Jmeter Springboot Redisson分布式锁并发订单操作

    Jmeter Springboot Redisson分布式锁并发订单操作 下单 取消单 完成单 加库存 br 涉及知识点 br gt java springboot mybatis开发 br gt redis分布式锁 Redisson客户端