秒杀系统设计思路

秒杀:顾名思义,短时间内有大量的请求到达系统,而库存一般很少。

例如:网站低价活动秒杀,12306过年车票,短时间内需要大量读写有限的数据。

这就需要在系统的各个层级上面做出改变

1.客户端浏览器拦截

    一般当网页提交出现卡顿时,用户的下意识是多次点击按钮,这样就平白的多了几倍的无效请求量

    方案:使用js控制,点击后就不再发送请求了或点击后按钮置灰(仅仅这一步就可以在秒杀系统中,减少一半以上的压力)

2.站点地址前端拦截

    一般用户(99%)通过以上方案就可以解决,但是懂一些技术的就可以直接通过查看请求地址,直接用for循环大量请求http地址,所以需要在站定层面上加上判断,同一个请求来源,一定时间内只能向后台请求一次,其余均返回同一页面

3.服务层请求拦截

    假设黑客攻击呢?大量不同来源的请求(或真是或伪造),如果是写操作,使用队列,每次只允许一定数量,成功后再进行下一批,如果是读,直接使用cache.

4.数据层排队

    此时真正到达数据层的请求,一般来说就不算太大了,库存有限,放进来那么多请求也是无用,徒增请求压力


原则:尽量把请求拦截在系统上游

都多写少多用缓存


当然了,对一些商品类型唯一,数量明确的情况,可以直接提前把数据查出来放入缓存中也是一个不错的方案。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值