你好,我是志东,欢迎和我一起从零打造秒杀系统。
说起秒杀系统啊,我相信你一定听过,甚至亲身参与过秒杀活动。作为技术人,你应该也好奇和思考过秒杀系统背后的实现方案,或者你在面试的时候被问到过,毕竟说它是高频考点一点不夸张。
因此,可能你已经搜索过秒杀系统的实现,对其有了一定的了解。但我们常说理论和实践是有距离的,知道一些基本的设计理念,其实远不能完成体系化学习的目标。“纸上得来终觉浅,绝知此事要躬行”,我相信头部电商百万用户同时秒杀的实战经验,会是个不错的加持,可以帮助你深刻理解技术难点。
所以,我来了!作为曾经的头部电商平台的秒杀系统负责人,我经常会和同事、朋友们讨论秒杀系统,当然在设计过程中,我们也确实遇到了很多问题。那么作为整个专栏的开篇,我想先就学习秒杀系统的共性问题做一个解答,期望和你对齐目标,然后我们一起向终点发起挑战!欢迎加入思考。
问题一:为什么需要秒杀系统?秒杀系统最大的优势是什么?
通俗点讲,电商平台的本质是在线上撮合买卖双方的购销需求,达成交易。虽然是线上交易,但也遵守朴素的经济学原理,供求关系决定了商品的经济活动。当供求平衡时,买方和卖方处于对等关系,双方是相对稳定、和谐的;当供大于求时,这时候市场成了买方市场,买方处于主动地位;当供不应求时,这时候市场是卖方市场,卖方处于有利的主导地位。
买卖双方的关系不同,决定了电商平台会采用哪种营销方式。当供大于求,一般会采用各种促销让利的方式,吸引消费者购买,常见的促销方式有单品满减、总价优惠、赠品、会员优惠等;当供不应求,就需要有计划地设置营销活动、用户参与门槛以及限购规则,尽可能的让商家利益最大化,同时惠及更广泛的消费者。
当供需出现极度不平衡时,不管是线下还是线上,都会出现抢购的情况。上面这张照片,是1992年深圳市首次发行股票时群众抢购的情况,“利”字驱动,抢到即是赚到,万人空巷。同样,在线上,当1499元平价茅台上架时,当抢到口罩意味着守护更多一份健康时,流量激增,更是盛况空前。因此,回答为什么需要秒杀系统,其实很简单,那就是商品的极度供不应求。
那么秒杀系统又有哪些优势呢?对于这些极度供不应求的爆品,合理地设置活动,适时地释放库存,可以持续为电商平台带来稳定的热度和流量,可观的VIP会员费,以及技术口碑的认同。当然,通过秒杀系统,电商平台也可以对参与用户进行筛选,杜绝黄牛和刷子,让爆品惠及更广,更公平。
问题二:京东、阿里巴巴等头部电商平台都把建设秒杀系统放在了什么地位?
在头部电商平台,除了售卖我们前面讨论的爆品外,更多售卖的是普通商品,这两类商品特点鲜明,爆品具有流量激增的特点,而普通商品流量则比较均衡。
这里我想请你思考一下:如果这两类商品不加区别,直接在电商平台上一块进行交易,会有什么问题?
没错,灾难性的后果,容易引发平台P0级重大事故。究其原因,主要就在于秒杀流量是突发式的,而且流量规模很难提前准确预估,如果混合在一起,势必会对普通商品的交易造成比较大的冲击。
因此,对京东、阿里而言,即使需要投入新的资源,也是需要单独搭建一套秒杀系统的,它将作为交易体系非常重要的一个核心系统。
可见,秒杀在京东、阿里具有非常重要的地位,它是非常重要的营销手段之一。每年的618和双11两次大促,京东都会投入大量的人力资源和机器资源来进行备战,在备战过程中,都会将其作为一个独立专项进行推进,从专项架构梳理、流量预估、全链路压测,到专项预案演练等,再到集团技术VP的专项汇报,都体现了秒杀在大厂中不可或缺的地位。
而在平常,由于爆品运营的日常化,秒杀系统每天都在承担着重要的使命,同理对技术团队来说,每天都需要像大促那样做好秒杀的稳定保障工作。
问题三:秒杀系统对于电商技术从业者意味着什么?为什么要学习秒杀系统?
秒杀系统是电商技术从业者绕不开的一个话题,大到京东、阿里这样的头部电商,小到新兴的社区团购公司,都需要通过秒杀促销活动进行拉新留存,或持续引流保持热度。因此对于从事电商行业的同学来说,设计和开发秒杀系统就是一门必修课。
退一步说,即便是电商领域范围广、内容多、分工细,当前你的工作范围并不涉及秒杀系统,你也可以花些时间来系统学习一下。
一方面,这门课程里介绍的一些高可用、高性能、高并发的设计思路遵循普适的原则,在设计其他电商系统时你可以举一反三;另一方面,据我了解,大部分的电商面试场景都会考核秒杀系统的设计能力,而从我自身这么多年作为面试官的经验来看,很多候选人或多或少能描述出一些秒杀的设计思路,比如有些同学知道怎么进行库存控制,有些知道隔离,有些知道限流等等,但是能够系统地讲出怎么设计一个秒杀系统,这样的候选人少之又少。
讨论完这几个问题,你是不是已经开始好奇这门秒杀课会有什么不一样的地方?毕竟电商发展到今天,秒杀系统已经不是个新鲜的话题了。那么闲话少叙,我们一起看看课程设计。
首先,我们说说课程亮点。为了让你对秒杀系统有一个全面的认知,这门课程我会手把手带你搭建一个秒杀系统,从基础的设计原则讲起,到高阶的设计技巧实战都会涉及,你看到的、学到的将是一个可扛百万流量的秒杀实战项目。
这里我十分鼓励你跟着课程一步步验证,就像我开始说的,没有什么是比你亲手实践一遍收获更大的。这里附上GitHub地址:https://github.com/sanyecao-seckill,以及所使用的编程语言:Nignx服务有Lua语言,后端服务都是Java。
所以说,这门课的受众目标也会较为广泛,它既适用于没有太多经验的初级工程师学习和参考,也可以让相对经验丰富的高级电商从业者查漏补缺,完善学习体系。
接下来,我们看看具体内容,共分为六个部分。
前期准备:这部分我会从秒杀的业务挑战开始讲起,带你看看电商平台的秒杀玩法,总结设计原则;接着我会带着你做秒杀的技术选型,安装基础环境。
系统动工:这部分的内容比较基础,我会对秒杀系统进行业务解构,开始着手搭建秒杀的项目工程,梳理秒杀的业务流程,分析系统提供的接口,填充秒杀的业务实现,最终完成一个最简秒杀系统。
稳定压倒一切:这部分聚焦在“稳”上,在最简秒杀系统的基础上,我将带着你进行高可用建设,重点讲解秒杀的隔离、流控、削峰、限流、降级、热点和容灾。
准确无误:这部分聚焦在“准”上,我们将通过防刷和风控,学习如何保证商品不卖给黄牛和刷子,以确保秒杀的公平性;接着会介绍秒杀的库存和限购设计,以确保商品不超卖,符合限购规则。
雷令风行:这部分聚焦在“快”上,我将带着你一起进行系统优化,从而让我们的秒杀系统响应更快,用户体验更好。
尾声:最后就是总结部分,梳理整个实战项目的关键点;另外我将结合自身经验,带给你在头部电商的秒杀玩法中,除了上述技术内容外的业务协同思考。
值得一提的是,每节课我都会布置一道思考题,你要做好准备哦,我们可以一起互动解决。
那么分享到这里,你可能还不认识我,这里做个自我介绍。
我叫佘志东,本科和硕士均毕业于华中科技大学。参加工作后,到目前为止,我的职业生涯可以分为两个阶段。第一个阶段是通讯行业,主要服务于朗讯、思科、华为等头部通讯公司,从Java工程师成长为软件架构师,是早期思科视频云平台的设计者和核心开发者。
从2015年开始,我进入了互联网行业,先后服务过唯品会、京东等知名互联网公司,任职资深架构师,擅长高并发分布式软件架构与开发,也是京东交易平台上海团队负责人,曾负责过京豆、预售、秒杀等核心系统。
每年的618和双11,京东大促看交易,交易大促看预售开门红,历经了三年内预售流量和订单增长十几倍的系统稳定性的巨大挑战。2020年初,在疫情背景下,我带领团队日夜奋战,为全民抢购口罩项目保驾护航,所负责的秒杀系统成功扛住了三百万人同时秒杀的巨大压力。
作为一个常年奋战在一线的架构师,我为我参与过的项目感到自豪,也希望能在这里将这份收获与沉淀传递给你!
随着技术变革,秒杀系统、电商行业乃至整个互联网还会迎来诸多挑战,时代会对技术人提出更高的要求。所以,在当下,我们更应该时刻保持好奇心,保持求知欲,保持激情。“学海无涯苦作舟”,让我们一起苦中作乐,通过学习持续武装自己!
最后,希望这门课能让你在动手实践中,对秒杀系统有一个新的感悟。更多疑惑与思考,或是在实践中遇到了哪些困难,都欢迎你在留言区中提出,我们共同探讨。