技术栈: SpringBoot、RabbitMQ、Redis、MybatisPlus
● 实现登陆系统和秒杀功能模块的分布式session和业务逻辑。
● 使用页面缓存、对象缓存、页面静态化对系统进行优化。
● 通过内存标记和预减库存减少对Redis和数据库的访问。
● 使用RabbitMQ对订单的请求进行入队,实现异步下单。
● 对接口地址进行隐藏,同时利用图片验证码和秒杀请求频率对接口进行限流。
优化后使用Jmeter进行压测: 优化前QPS为800QPS,优化后QPS为1900QPS
- 项目框架搭建
- SpringBoot环境搭建
- 集成Thymeleaf,RespBean
- MyBatis
- 分布式会话
- 用户登录
- 设计数据库
- 明文密码二次MD5加密
- 参数校验+全局异常处理
- 共享Session
- SpringSession
- Redis
- 用户登录
- 功能开发
- 商品列表
- 商品详情
- 秒杀
- 订单详情
- 系统压测
- JMeter
- 自定义变量模拟多用户
- JMeter命令行的使用
- 正式压测
- 商品列表
- 秒杀
- 页面优化
- 页面缓存+URL缓存+对象缓存
- 页面静态化,前后端分离
- 静态资源优化
- CDN优化
- 接口优化
- Redis预减库存减少数据库的访问
- 内存标记减少Redis的访问
- RabbitMQ异步下单
- SpringBoot整合RabbitMQ
- 交换机
- 安全优化
- 秒杀接口地址隐藏
- 算术验证码
- 接口防刷
- 主流的秒杀方案
技术 | 版本 | 说明 |
---|---|---|
Spring Boot | 2.6.4 | |
MySQL | 8 | |
MyBatis Plus | 3.5.1 | |
Swagger2 | 2.9.2 | Swagger-models2.9.2版本报错,使用的是1.5.22 |
Kinfe4j | 2.0.9 | 感觉比Swagger UI漂亮的一个工具,访问地址是ip:端口/doc.html |
Spring Boot Redis |
登录页面:http://localhost:8080/login/toLogin
接口文档页面:http://localhost:8080/doc.html#/home
代码生成器:https://gitee.com/guizhizhe/code-generator.git
sqldoc:创建表语句和回滚压测数据
sftware:是从B站用户@登就等觉得 下载的一些视频中程序的安装包(我没有使用,我是用的是docker里面)
document:是从B站用户@登就等觉得 下载的系统说明文档,如果根据视频看的话,可以看文档里面,里面的代码是根据视频进度编写的,但是不要复制,pdf会有问题建议手打。
- 代码运行时一定要用localhost,原因可以看下CookieUtil类
- 代码生成时没有加去掉表头,导致代码和视频中不一样,命名也有的不一样,