项目简介
本项目借助SpringMVC、Spring和MyBatis框架构建了一个高并发秒杀API。秒杀是常见的网络销售形式,商家推出低价商品吸引众多买家同时抢购,商品往往上架即售罄。此项目模拟秒杀场景,展示了高并发环境下处理秒杀业务的方法。
项目的主要特性和功能
后端框架
- SpringMVC:负责处理Web请求与响应。
- Spring:提供依赖注入和事务管理功能。
- MyBatis:用于数据库操作,支持自定义SQL查询和存储过程。
数据库设计
- MySQL:存储秒杀商品信息和秒杀成功记录。
- MyBatis:通过XML文件或注解配置映射关系,将接口与POJO对象映射到数据库记录。
高并发优化
- Redis缓存:缓存秒杀商品信息,减轻数据库压力。
- 存储过程:利用MySQL存储过程执行秒杀操作,降低网络延迟和GC影响。
前端页面
- Bootstrap:快速构建响应式前端页面。
- jQuery:处理前端交互逻辑。
安装使用步骤
环境准备
- 确保安装并配置好JDK 1.8。
- 安装并启动MySQL 5.7.24数据库。
- 安装并启动Redis服务。
- 确保安装并配置好Maven 3.6.0。
数据库初始化
- 创建数据库
seckill
。 - 执行以下SQL脚本创建表并插入初始数据: ```sql CREATE TABLE seckill ( seckill_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '库存商品ID', name VARCHAR(120) NOT NULL COMMENT '商品名称', number INT NOT NULL COMMENT '库存数量', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', start_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '秒杀开始时间', end_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '秒杀结束时间', PRIMARY KEY (seckill_id), KEY idx_start_time(start_time), KEY idx_end_time(end_time), KEY idx_create_time(create_time) ) ENGINE=INNODB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 COMMENT='秒杀库存表';
INSERT INTO seckill(name, number, start_time, end_time) VALUES ('1000元秒杀iphone6', 100, '2021-07-16 00:00:00', '2021-07-17 00:00:00'), ('800元秒杀ipad', 200, '2021-07-16 00:00:00', '2021-07-17 00:00:00'), ('6600元秒杀mac book pro', 300, '2021-07-16 00:00:00', '2021-07-17 00:00:00'), ('7000元秒杀iMac', 400, '2021-07-16 00:00:00', '2021-07-17 00:00:00');
CREATE TABLE success_killed ( seckill_id BIGINT NOT NULL COMMENT '秒杀商品ID', user_phone BIGINT NOT NULL COMMENT '用户手机号', state TINYINT NOT NULL DEFAULT -1 COMMENT '状态标识:-1:无效 0:成功 1:已付款 2:已发货', create_time TIMESTAMP NOT NULL COMMENT '创建时间', PRIMARY KEY (seckill_id, user_phone), KEY idx_create_time(create_time) ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='秒杀成功明细表'; ```
项目构建与运行
- 复制项目到本地。
- 使用Maven构建项目:
bash cd seckillDemo mvn clean install
- 启动项目:
- 使用IDE(如IntelliJ IDEA)导入项目并运行。
- 或者使用Maven插件启动:
bash mvn spring-boot:run
- 访问项目:
- 打开浏览器,访问
http://localhost:8080/seckill/list
查看秒杀商品列表。 - 点击商品进入详情页,进行秒杀操作。
- 打开浏览器,访问
压测工具
- 使用Apache JMeter进行压力测试,模拟高并发场景。
- 参考JMeter官方文档进行安装和配置。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】