# seckill-system **Repository Path**: hndg/seckill-system ## Basic Information - **Project Name**: seckill-system - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-08 - **Last Updated**: 2026-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 秒杀系统 - SpringCloud微服务架构 ## 项目简介 基于SpringCloud + Redis + RocketMQ + MySQL的分布式秒杀系统,支持限流、降级、分布式锁等特性。 ## 技术栈 - **框架**: Spring Boot 3.2.0, Spring Cloud 2023.0.0 - **服务注册与发现**: Alibaba Nacos - **API网关**: Spring Cloud Gateway - **限流降级**: Alibaba Sentinel - **缓存**: Redis - **消息队列**: RocketMQ - **数据库**: MySQL 8.0 - **ORM**: MyBatis Plus - **连接池**: Druid - **前端**: HTML5 + Vanilla JavaScript ## 项目结构 ``` seckill-system/ ├── seckill-common/ # 公共模块 ├── seckill-gateway/ # 网关服务(端口8080) ├── seckill-product-service/ # 商品服务(端口8081) ├── seckill-order-service/ # 订单服务(端口8082) ├── frontend/ # HTML5前端 ├── sql/ # 数据库脚本 └── pom.xml # 父POM ``` ## 核心功能 ### 1. 商品服务 (Product Service) - 商品CRUD操作 - 库存管理(乐观锁 + Redis预扣) - 商品列表查询(活动商品) - 库存缓存 ### 2. 订单服务 (Order Service) - 秒杀下单 - 分布式锁(Redis Lua脚本) - 订单查询 - 订单状态管理 ### 3. 网关服务 (Gateway Service) - 路由转发 - 统一限流(Redis + Lua脚本) - 熔断降级 - 跨域处理 ### 4. 限流降级 - **接口限流**: 基于Sentinel的QPS限流 - **网关限流**: 基于Redis的分布式限流 - **熔断降级**: 服务异常自动降级 - **降级策略**: 返回友好提示 ### 5. 分布式特性 - **分布式锁**: Redis + Lua脚本实现 - **消息队列**: RocketMQ异步下单 - **缓存预热**: Redis库存预热 - **乐观锁**: 数据库乐观锁防止超卖 ## 快速开始 ### 1. 环境要求 - JDK 17+ - Maven 3.8+ - MySQL 8.0+ - Redis 6.0+ - RocketMQ 4.9+ - Nacos 2.0+ ### 2. 数据库初始化 ```bash # 创建数据库并导入数据 mysql -u root -p < sql/init.sql ``` ### 3. 启动依赖服务 ```bash # 启动Redis redis-server # 启动RocketMQ # Namesrv sh bin/mqnamesrv # Broker sh bin/mqbroker -n localhost:9876 # 启动Nacos sh bin/startup.sh -m standalone ``` ### 4. 编译项目 ```bash cd seckill-system mvn clean package -DskipTests ``` ### 5. 启动服务 ```bash # 启动网关服务 cd seckill-gateway mvn spring-boot:run # 启动商品服务 cd seckill-product-service mvn spring-boot:run # 启动订单服务 cd seckill-order-service mvn spring-boot:run ``` ### 6. 访问前端 打开浏览器访问: `frontend/index.html` 或直接双击 `frontend/index.html` 文件 ## API接口 ### 商品服务 - `GET /api/product/list` - 获取商品列表 - `GET /api/product/{productId}` - 获取商品详情 - `GET /api/product/{productId}/stock` - 获取商品库存 ### 订单服务 - `POST /api/order/seckill` - 秒杀下单 - `GET /api/order/{orderId}` - 获取订单详情 - `GET /api/order/user/{userId}` - 获取用户订单列表 - `PUT /api/order/{orderId}/status` - 更新订单状态 ## 性能优化 1. **库存预热**: 系统启动时将库存加载到Redis 2. **Redis预扣**: 下单前先在Redis中预扣库存 3. **异步下单**: RocketMQ异步处理订单 4. **数据库批量**: 批量更新数据库库存 5. **读写分离**: 主从数据库读写分离 ## 监控告警 1. **Sentinel Dashboard**: 实时监控限流降级 2. **Nacos**: 服务注册与配置中心 3. **Prometheus + Grafana**: 性能监控 4. **ELK**: 日志收集与分析 ## 安全防护 1. **接口防刷**: 限流 + 验证码 2. **防重复下单**: Redis去重 3. **防超卖**: 乐观锁 + 分布式锁 4. **SQL注入防护**: MyBatis Plus参数化查询 ## 部署说明 ### Docker部署 ```bash # 构建镜像 docker build -t seckill-system . # 运行容器 docker-compose up -d ``` ### Kubernetes部署 ```bash kubectl apply -f k8s/ ``` ## 故障排查 1. **库存不准确**: 检查Redis缓存和数据库同步 2. **订单创建失败**: 检查数据库连接和分布式锁 3. **限流异常**: 检查Sentinel配置和Redis连接 4. **服务不可用**: 检查熔断器状态和服务健康 ## 联系方式 - 技术支持: support@example.com - 项目地址: https://github.com/example/seckill-system