Skip to content

Commit 746ff6c

Browse files
committed
更新秒杀架构
1 parent a56bb98 commit 746ff6c

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.idea

MD/秒杀架构.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
## 架构
66
* 前端模块(页面静态化、CDN、客户端缓存)
7-
* 排队模块(队列实现
8-
* 服务模块(redis页面缓存、对象缓存、业务逻辑
9-
* 防刷模块(验证码、限流
7+
* 排队模块(Redis、队列实现异步下单
8+
* 服务模块(事务处理业务逻辑、避免并发问题
9+
* 防刷模块(验证码、限IP
1010

1111
## 模块解析
1212
按功能来分会有以下几个模块
@@ -17,11 +17,12 @@
1717
3. 静态资源优化,CSS/JS/图片压缩,提升用户体验
1818

1919
### 排队模块
20-
1. 提供用户轮询查询功能,将热点对象保存在Redis中
21-
2. 在Redis中预减库存,随后发送消息给RabbitMQ,每个商品对应一个队列保证排队顺序,使用队列是为了降低到达服务器的瞬时流量
20+
1. 对Redis中的抢购对象预减库存,立即返回排队中,随后立即发送消息给RabbitMQ,这样大大降低到达服务器的瞬时流量
21+
2. 提供用户查询实时抢购状态功能,将抢购对象保存在Redis中来提供
2222

2323
### 服务模块
24-
1. 业务逻辑,使用事务控制下订单,减库存操作
24+
1. RabbitMQ的消费逻辑、业务逻辑,使用事务控制下订单,减库存操作
25+
2. 避免同一用户同时下多个订单,在订单表中加上用户ID与商品ID的唯一索引;避免卖超问题,在更新数量的sql上需要加上>0条件
2526

2627
### 防刷模块
2728
1. 针对恶意用户写脚本去刷,在Redis中保存用户IP与商品ID进行限制

0 commit comments

Comments
 (0)