秒杀系统如何构建?秒杀应该考虑哪些问题?

开课吧开课吧科科2021-03-23 15:31

秒杀系统相信很多人见过,比如京东或者淘宝的秒杀,小米手机的秒杀。

那么做秒杀系统应该考虑哪些问题?如何能够实现我们得需求呢?本期我们就来探讨一下这个问题。

一、秒杀应该考虑哪些问题

1、超卖问题

分析秒杀的业务场景,最重要的有一点就是超卖问题,假如备货只有100个,但是最终超卖了200,一般来讲秒杀系统的价格都比较低,如果超卖将严重影响公司的财产利益,因此首当其冲的就是解决商品的超卖问题。

2、高并发

秒杀具有时间短、并发量大的特点,秒杀持续时间只有几分钟,而一般公司都为了制造轰动效应,会以极低的价格来吸引用户,因此参与抢购的用户会非常的多。

短时间内会有大量请求涌进来,后端如何防止并发过高造成缓存击穿或者失效,击垮数据库都是需要考虑的问题。

3、接口防刷

现在的秒杀大多都会出来针对秒杀对应的软件,这类软件会模拟不断向后台服务器发起请求,一秒几百次都是很常见的,如何防止这类软件的重复无效请求,防止不断发起的请求也是需要我们针对性考虑的

4、秒杀url

对于普通用户来讲,看到的只是一个比较简单的秒杀页面,在未达到规定时间,秒杀按钮是灰色的,一旦到达规定时间,灰色按钮变成可点击状态。这部分是针对小白用户的

如果是稍微有点电脑功底的用户,会通过F12看浏览器的network看到秒杀的url,通过特定软件去请求也可以实现秒杀。

或者提前知道秒杀url的人,一请求就直接实现秒杀了。这个问题我们需要考虑解决。

5、数据库设计

秒杀有把我们服务器击垮的风险,如果让它与我们的其他业务使用在同一个数据库中,耦合在一起,就很有可能牵连和影响其他的业务。

如何防止这类问题发生,就算秒杀发生了宕机、服务器卡死问题,也应该让他尽量不影响线上正常进行的业务。

6、大量请求问题

按照1.2的考虑,就算使用缓存还是不足以应对短时间的高并发的流量的冲击。如何承载这样巨大的访问量,同时提供稳定低时延的服务保证,是需要面对的一大挑战。

我们来算一笔账,假如使用的是redis缓存,单台redis服务器可承受的QPS大概是4W左右,如果一个秒杀吸引的用户量足够多的话,单QPS可能达到几十万,单体redis还是不足以支撑如此巨大的请求量。缓存会被击穿,直接渗透到DB,从而击垮mysql,后台会将会大量报错。

今天《Hello,World公开课》开设了“如何设计一个秒杀系统”的课程,课程内容包括:1、秒杀的全局系统架构设计2、三种秒杀方案优劣势对比3、秒杀的超预期热点流量应对方案。

课程由知名互联网公司技术专家,团队架构负责人 Jessen老师授课, Jessen老师精通Java架构,高并发、具有丰富的一线互联网实战经验。

秒杀系统该课程限时免费,点击图片,赶快学习起来吧!

有用
分享