秒杀系统设计思路

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xsf1840/article/details/79978346

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

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

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

1.客户端浏览器拦截

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

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

2.站点地址前端拦截

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

3.服务层请求拦截

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

4.数据层排队

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


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

都多写少多用缓存


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



阅读更多

没有更多推荐了,返回首页