### SpringBoot+MyBatis+Redis+RabbitMQ实现秒杀系统!
#### 启动和运行
执行sql脚本
修改为你的配置文件信息(例如redis端口号等)
#### 主要功能描述
##### 1、明文密码使用两次MD5进行处理
由前端使用MD5与固定的salt将表单中的密码加密,再传入后端服务器
后端服务器接收到后,再将其和随机生成的salt进行二次加密
将最后生成的加密密码和salt存入数据库中
- 第一次作用:防止用户名明文密码在网络中进行传输,增加安全性
- 第二次作用:防止数据库信息被盗窃,防止通过MD5反推出密码,双重保险
##### 2、使用Redis实现分布式Session
[分布式Session实现基本思路](http://www.hobosocool.top/2020/07/19/分布式session/)
众所周知,Session的出现就是为了记录用户状态的
使用redis模仿session的实现
> 当用户在客户端发送请求登陆时,后端进行校验通过后使用UUID生成随机的token作为用户的唯一标识符,将其当作Key,用户信息当作Value存入redis中。
>
> 再将其添加至Cookie中保存在用户的浏览器上,当下次用户进行请求时,会附带上Cookie中的token信息,我们拿到此token去Redis中进行查询,返回用户信息。完成会话操作
##### 3、使用JSR303自定义参数校验
使用JSR303自定义校验器,实现对用户账号、密码的验证,使得验证逻辑从业务代码中脱离出来
##### 4、封装Jedis、封装缓存Key
将Jedis方法进行封装,使用模板方法模式封装缓存key
达到复用的状态,增强代码的灵活性
##### 5、Redis缓存设计
- 页面缓存:使用ThymeleafViewResolver手动渲染html页面,并存入redis中,加快访问速度
- 对象缓存:将用户信息、商品信息、订单信息等存入redis中
- Redis预减库存减少对数据库的访问
- 内存标记减少对Redis的访问
##### 6、RabbitMQ实现异步下单、通知
- RabbitMQ队列缓冲,异步下单,增强用户体验
- 异步通知,整合email,发送秒杀成功邮件
- 客户端使用js轮询检查是否秒杀成功
##### 7、秒杀接口地址隐藏
> 地址提前暴露秒由什么问题出现?
>
> - 如果秒杀接口地址提前暴露,容易被人提前下单购买
> - 或者使用机器人轮询发送秒杀请求,机器人一般比正常人手速更快
>
> 如何解决?
>
> - 使用**动态url**,加密算法加密随机的字符串生成url,然后通过前端代码获取url后台校验才能通过。
##### 8、数学公式验证码
> 随机生成数学公式验证码,验证正确才可进行秒杀操作
>
> 好处
>
> - 防止恶意机器人和爬虫
> - 分散用户的请求
##### 9、接口防刷(限流)
自定义注解AccessLimit,定义拦截器实现对接口的访问控制
例如: 表示在10s内,接口超过10次以上则返回服务繁忙提示,访问该接口需要登录
```java
@AccessLimit(seconds = 20, maxCount = 10, needLogin = false)
@GetMapping(value = "/goods/detail/{goodsId}")
@ResponseBody
public ResultDTO goodsDetail(User user, @PathVariable("goodsId") long goodsId) {...}
```
### QPS记录
| | 5000 * 10s |
| ------------------------ | ---------- |
| do_seckill | QPS:390 |
| redis优化版本 do_seckill | QPS:850 |
| 异步下单版本 do_seckill | QPS:1390 |
---
#### 在linux下进行测压
```bash
apache-jmeter-5.3/bin/jmeter.sh -n -t miaosha_test.jmx -l result.jtl
```
没有合适的资源?快使用搜索试试~ 我知道了~
基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统.zip
共131个文件
java:71个
js:12个
html:9个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 25 浏览量
2023-10-16
13:11:19
上传
评论
收藏 7.32MB ZIP 举报
温馨提示
基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统.zip (131个子文件)
mvnw.cmd 6KB
bootstrap.css 143KB
bootstrap.min.css 118KB
bootstrap-theme.css 26KB
bootstrap-theme.min.css 23KB
layer.css 14KB
layer.css 5KB
loginRegister.css 298B
glyphicons-halflings-regular.eot 20KB
loading-0.gif 6KB
loading-2.gif 2KB
loading-1.gif 701B
.gitignore 395B
goods_detail.htm 9KB
order_detail.htm 4KB
register.html 3KB
login.html 3KB
top_bar.html 3KB
goods_detail.html 3KB
bind_email.html 2KB
order_detail.html 2KB
goods_list.html 1KB
import_bar.html 982B
seckill_fail.html 388B
maven-wrapper.jar 50KB
RedisUtil.java 14KB
SeckillController.java 7KB
UserService.java 6KB
LogAspect.java 6KB
MavenWrapperDownloader.java 5KB
GoodsController.java 5KB
SeckillService.java 4KB
RedisService.java 4KB
UserUtil.java 4KB
MQReceiver.java 3KB
AccessInterceptor.java 3KB
MQConfig.java 3KB
VerifyCodeUtil.java 3KB
RegisterController.java 3KB
DruidConfig.java 2KB
EmailService.java 2KB
OrderService.java 2KB
EmailController.java 2KB
MQSender.java 2KB
SpringBootSeckillApplicationTests.java 2KB
OrderController.java 2KB
LoginController.java 2KB
SeckillStockSchedule.java 2KB
CodeMsgEnum.java 2KB
RedisConfig.java 2KB
BeanUtil.java 2KB
GoodsService.java 1KB
GlobleExceptionHandler.java 1KB
GoodsMapper.java 1KB
ListTest.java 1KB
OrderMapper.java 1KB
WebConfig.java 1KB
UserArgumentResolver.java 1KB
DBUtil.java 1KB
EmailUtil.java 1KB
ResultDTO.java 1KB
MD5Util.java 1KB
UserProvider.java 1000B
UserMapper.java 997B
AopLog.java 984B
PortController.java 939B
CustomLog.java 938B
IsMobileValidator.java 892B
SpringBootSeckillApplication.java 845B
BasePrefix.java 782B
RedisTest.java 758B
IsMobile.java 756B
AccessLimit.java 676B
GoodsKey.java 654B
SeckillKey.java 569B
UserKey.java 553B
User.java 542B
ValidatorUtil.java 510B
OrderInfo.java 475B
OrderDetailDTO.java 462B
UserDTO.java 458B
AccessKey.java 457B
GoodsDetailDTO.java 451B
OperationType.java 406B
SecKillOrderKey.java 401B
OperationUnit.java 389B
UserContext.java 377B
GlobleException.java 370B
GoodsExtend.java 347B
Goods.java 337B
SeckillMessageDTO.java 331B
SeckillEmailDTO.java 297B
SeckillGoods.java 295B
SeckillOrder.java 237B
UUIDUtil.java 232B
KeyPrefix.java 163B
bg1.jpg 406KB
bj2.jpg 215KB
jquery.min.js 82KB
bootstrap.js 68KB
共 131 条
- 1
- 2
资源评论
- jxj672024-01-10资源内容总结的很到位,内容详实,很受用,学到了~
辣椒种子
- 粉丝: 3310
- 资源: 5724
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 上市公司-人工智能的采纳程度面板数据(2003-2021年).xlsx
- 第5章spring-mvc请求映射处理
- 2023-04-06-项目笔记 - 第一百十六阶段 - 4.4.2.114全局变量的作用域-114 -2024.04.27
- app-release.apk.1
- soap json 等系列化方式
- c++的五子棋代码,在vs6.0上完美运行
- 基于Javaee的影视创作论坛的设计与实现.rar
- Python导出Mysql数据字典(部分表或全表)
- Java工具类实现输入一个路径,强创建路径、并且鉴权目标路径是否具备修改权限,用于增强程序的健壮性与稳定性,快速开发!
- 资源【STM32+HAL】三轴按键PS2摇杆
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功