电商秒杀系统设计思路

所谓秒杀系统,众所周知秒杀的特点就是瞬间的访问流量很高,如果这些访问流量直接打到数据库的话,以数据库的瓶颈肯定会崩溃,所以关键是如何拦截无效的流量,这里分两大块,前端页面,后台服务器。

一、前端

1. 限流,点击提交按钮后通过js按钮置灰,显示为正在处理中,能处理结束或若干秒后,才允许用户点击
2. 页面静态化,将商品详情页面做成静态页面,不经过后台的处理,直接返回
3. CDN加速分流,将页面和相关静态资源放在CDN上,用户刷新页面直接返回,不必经过服务器
4.秒杀开始前不让用户进入秒杀页面,在开始后,使用动态URL,例如携带随机数的URL,让用户通过按钮点击进入页面

二、服务器这一块,

1.秒杀系统必须单独部署,不能对其他业务系统有影响

2.秒杀商品相关的数据可以考虑提前放到缓存里面,缓存可以考虑使用多级缓存,尽可能将并发流量挡在缓存这一层

3.我们可以将秒杀商品的库存提前预热,可以提前把商品库存写入Redis,扣减库存可以使用redis的原子操作

4.然后在秒杀接口做限流处理,降级,秒杀并发高到一定程度时可以断开某些接口查询,如推荐商品等和秒杀不相干的接口,减少服务器返回时间,熔断,某些接口大于某个流量活并发峰值直接返回失败,或者返回相应的提示,做到快速响应

5.防刷单处理,过滤出来一部分恶意攻击的流量

6.还可以用消息中间件将下单流程异步化,下单只要保证库存足够,正常下单,然后再异步的推送通知到相关的下游系统,这样大大的硝峰流量

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值