清除数据
This commit is contained in:
30
CLAUDE.md
30
CLAUDE.md
@@ -4,7 +4,8 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
|
||||
## 项目概述
|
||||
|
||||
FlashSaleSystem 是一个基于 Spring Boot 2.7.6 和 Redis 集群构建的社区生鲜团购系统。系统采用分布式架构设计,通过 Redis 集群实现高并发处理,使用 Lua 脚本保证原子性操作,采用分布式锁防止超卖。
|
||||
CommunityFreshGroupBuySystem 是一个基于 Spring Boot 2.7.6 和 Redis 集群构建的社区生鲜团购系统。系统采用分布式架构设计,通过
|
||||
Redis 集群实现高并发处理,使用 Lua 脚本保证原子性操作,采用分布式锁防止超卖。
|
||||
|
||||
## 核心架构
|
||||
|
||||
@@ -54,8 +55,8 @@ mvn spring-boot:run -Dspring.profiles.active=dev # 开发环境
|
||||
mvn spring-boot:run -Dspring.profiles.active=cluster # 集群环境
|
||||
|
||||
# 运行JAR包
|
||||
java -jar target/FlashSaleSystem-0.0.1-SNAPSHOT.jar
|
||||
java -jar target/FlashSaleSystem-0.0.1-SNAPSHOT.jar --spring.profiles.active=cluster
|
||||
java -jar target/CommunityFreshGroupBuySystem-0.0.1-SNAPSHOT.jar
|
||||
java -jar target/CommunityFreshGroupBuySystem-0.0.1-SNAPSHOT.jar --spring.profiles.active=cluster
|
||||
```
|
||||
|
||||
### 数据库初始化
|
||||
@@ -84,13 +85,14 @@ mysql -u root -p flash_sale_db < src/main/resources/sql/test-data.sql
|
||||
- **String**: 分布式锁、会话存储、库存计数
|
||||
- **Hash**: 用户信息、商品信息、购物车数据
|
||||
- **List**: 订单队列、消息队列
|
||||
- **Set**: 秒杀成功用户集合
|
||||
- **Set**: 限时活动成功用户集合
|
||||
- **ZSet**: 商品排行榜、热门活动
|
||||
|
||||
### Key前缀规范
|
||||
- `flashsale:` - 秒杀活动数据
|
||||
|
||||
- `flashsale:` - 限时活动数据
|
||||
- `flashsale_stock:` - 实时库存信息
|
||||
- `flashsale_lock:` - 秒杀分布式锁
|
||||
- `flashsale_lock:` - 限时活动分布式锁
|
||||
- `flashsale_success:` - 成功用户集合
|
||||
- `user:` - 用户信息缓存
|
||||
- `product:` - 商品信息缓存
|
||||
@@ -106,16 +108,17 @@ mysql -u root -p flash_sale_db < src/main/resources/sql/test-data.sql
|
||||
|
||||
## 核心业务流程
|
||||
|
||||
### 秒杀流程
|
||||
### 限时活动流程
|
||||
1. **库存预热**: 活动前30分钟通过 `FlashSaleService.preloadStock()` 预加载库存到Redis
|
||||
2. **限流检查**: `RateLimitService.checkFlashSaleRateLimit()` 检查用户请求频率(10次/分钟)
|
||||
3. **分布式锁**: `RedissonLockService.tryLock()` 获取分布式锁,防止并发超卖
|
||||
4. **库存扣减**: 执行 `flashsale.lua` 脚本原子性扣减库存
|
||||
5. **订单创建**: 数据库创建订单,Redis记录成功用户
|
||||
6. **消息发布**: 通过Pub/Sub发布秒杀结果通知
|
||||
6. **消息发布**: 通过Pub/Sub发布限时活动结果通知
|
||||
|
||||
### 关键服务类
|
||||
- **FlashSaleService**: 秒杀核心逻辑,包含库存预热、分布式锁、Lua脚本执行
|
||||
|
||||
- **FlashSaleService**: 限时活动核心逻辑,包含库存预热、分布式锁、Lua脚本执行
|
||||
- **RedisService**: Redis基础操作封装,支持各种数据类型和TTL设置
|
||||
- **RedissonLockService**: Redisson分布式锁实现,支持自动续期
|
||||
- **RateLimitService**: 基于Redis的滑动窗口限流
|
||||
@@ -135,7 +138,7 @@ mysql -u root -p flash_sale_db < src/main/resources/sql/test-data.sql
|
||||
spring.redis.host: localhost # 单节点配置
|
||||
spring.redis.cluster.nodes: ... # 集群配置(取消注释启用)
|
||||
|
||||
# 秒杀业务配置
|
||||
# 限时活动业务配置
|
||||
flashsale.seckill.rate-limit.max-requests-per-minute: 10 # 限流
|
||||
flashsale.seckill.max-quantity-per-user: 1 # 每人限购
|
||||
flashsale.seckill.stock-preload.advance-minutes: 30 # 预热时间
|
||||
@@ -143,7 +146,7 @@ flashsale.seckill.stock-preload.advance-minutes: 30 # 预热时间
|
||||
# 缓存过期时间
|
||||
flashsale.cache.user-expire-minutes: 30 # 用户信息
|
||||
flashsale.cache.product-expire-minutes: 60 # 商品信息
|
||||
flashsale.cache.flashsale-expire-minutes: 10 # 秒杀活动
|
||||
flashsale.cache.flashsale-expire-minutes: 10 # 限时活动
|
||||
```
|
||||
|
||||
## 性能优化策略
|
||||
@@ -163,7 +166,8 @@ flashsale.cache.flashsale-expire-minutes: 10 # 秒杀活动
|
||||
- **Prometheus监控**: http://localhost:8080/actuator/prometheus
|
||||
|
||||
### 日志配置
|
||||
- **日志文件**: logs/flash-sale-system.log
|
||||
|
||||
- **日志文件**: logs/community-fresh-group-buy-system.log
|
||||
- **日志级别**: DEBUG (com.org.flashsalesystem, Redis, SQL)
|
||||
|
||||
## 测试策略
|
||||
@@ -175,7 +179,7 @@ flashsale.cache.flashsale-expire-minutes: 10 # 秒杀活动
|
||||
|
||||
### 性能测试
|
||||
- 推荐工具: JMeter, Gatling
|
||||
- 测试场景: 高并发秒杀、库存扣减准确性、分布式锁效果
|
||||
- 测试场景: 高并发限时活动、库存扣减准确性、分布式锁效果
|
||||
|
||||
## 安全考虑
|
||||
|
||||
|
||||
Reference in New Issue
Block a user