vlambda博客
学习文章列表

【独家】深度揭秘振兴年货节线上秒杀系统背后的故事

【独家】深度揭秘振兴年货节线上秒杀系统背后的故事

    “振兴年货节,半价买年货”是近年来六安人民最喜闻乐见的盛事之一了,这与双十一商家涨价再打折不同的是真正的半价购物。远航云计算作为历届振兴年货节的系统供应商,根据往届的经验,结合今年的设计需求,为本届振兴年货节线上秒杀系统提供了强有力的技术保障。众所周知,年货券抢购实在太火爆了,很多人都反应抢不到,这到底是怎么回事呢,怎么才能抢到券呢?


今年做了哪些改进


    按照往年的火爆程度,预测今年的整体流量,我们采用了分布式架构下的负载均衡技术来保障系统稳定运行,系统拓扑图如下:

【独家】深度揭秘振兴年货节线上秒杀系统背后的故事


    看着很复杂,打个比方:隔壁老王总被误解,他打算搬家到外地去。起先呢,老王为了节省成本,只租了一辆货车,把所有家当装进去,准备上国道。后来老王发现这样很容易出事故,于是老王多叫了几辆货车,并把货物进行分类,易碎品放一辆车,重物放一辆车,衣帽鞋服放一辆车,杂物放一辆车,这就是分布式。几辆车开始同时上高速,但是沪陕高速这段路有点窄,很多地方只能同时容纳一辆车通行,很容易造成堵塞。于是老王让一辆车走沪陕高速,一辆车走济广高速,一辆车走国道,一辆车走京台高速,进行流量分发,保证车辆在每个路段都能畅通无阻,这就是负载均衡。


    这样做的好处是应用各司其职,无需相互依赖;其中任何一台服务器出现故障或流量到达瓶颈都不影响系统正常运行。


    数据库使用阿里云研发的POLARDB实现数据容灾、读写分离和主备同步。数据库设计是一个系统最重要的环节,数据的稳定可靠决定了系统的可用性。将数据库服务独立于应用服务器之外是最佳安全实践。在这次的秒杀系统里,我们配备了4台数据库服务器,做了数据同步处理。其中一台为主读写数据库,一台为备用读写数据库,另外两台为只读数据库,当并不发生数据交互时,所有数据通过只读数据库处理,产生数据交互时(写入数据),数据进入主数据库。当主数据库发生故障时,自动切换至备用数据库。



    继续打个比方:老王搬到新家之后发现水质不大好,他希望自己打个水井用水,但是他发现经常会出现他正想从井里抽水喝的时候王夫人要抽水洗菜,而有时候抽水泵坏掉了只能人工抽水。于是老王另外打了三口井,原先的井只用来喝,另外两口井用来洗菜洗碗洗澡冲马桶,剩下一口井备用,从此老王一家过上了幸福的生活。


    整个系统架构梳理好之后,我们做了一次压力测试,同时500人向服务器发送一万次请求,各应用服务器负载均在正常水平以内,甚至还绰绰有余。年货券正式售卖第一天最高峰每秒972人总共发起了38万次的请求,系统依旧稳定运行。


怎样才能抢到券


    很多人抱怨根本抢不到券,这是因为秒杀向来如此。如同当年的小米手机,甚至于火车票,多数情况确实是很难抢到的,但有没有特别的技巧呢?答案是肯定的。


    系统每天分三个时间段放出五千张券,分别是9点整2000张、14点整两千张、20点整1000张。应当在整点之前进入页面,等待抢购按钮自动变亮立即点击抢购。系统设置的是下单减库存,根据过去几天的数据,全部都是在第一秒内直接被抢完,所以掐时间进入或者倒计时结束后刷新页面的都没有机会了。


    但是总会有一部分人下单之后未支付,系统设定下单后三分钟内未支付,则订单失效,同时回滚库存,所以在整点之后的第三分钟进入系统会有很大机会能捡漏,甚至于第六分钟、第九分钟都有机会能抢到。


最后皋小姐偷偷告诉你一个小秘密

点击阅读原文即可查看

关于半价年货节的信息哟

千万不要错过啦~