秒殺是電商平臺最常用的促銷活動涣易,例如京東淘寶等主流電商平臺把秒殺篷角、搶購作為一個功能入口存在焊刹,定期秒殺。其產(chǎn)品定位在于通過低價促銷吸引對價格敏感的用戶恳蹲,起到引流促活虐块,且?guī)愉N售。
如下是京東嘉蕾、淘寶的秒殺頁面贺奠。
那么一個秒殺系統(tǒng)如何搭建?前后端功能如何配合错忱,都說“前端一小步儡率,后端一大步”,對于C端來說以清,價格儿普、商品吸引人,我能到特定時間去搶購掷倔、付款就可以了眉孩,那么后端如何做相應(yīng)的功能支撐呢,下面我具體的闡述一下。
一浪汪、秒殺架構(gòu)
從此架構(gòu)看出巴柿,一個秒殺完整的系統(tǒng)搭建,后端需要有商家報名參與入口死遭、秒殺活動的設(shè)置广恢、后臺秒殺活動、訂單管理
二殃姓、 商家報名流程
平臺可以給商家提供這樣的功能入口袁波,一旦商家有意愿做秒殺活動,可以發(fā)起由平臺審核蜗侈,審核通過即可上架
- 商家是否滿足要求:是否對參與商家設(shè)置門檻篷牌,比如經(jīng)營較好,店鋪綜合評分較高的店鋪方可參與
- 提報商品是否滿足:比如此商品設(shè)置價格合理踏幻,是否是違規(guī)商品等
這里我只簡單論述枷颊,具體需根據(jù)每個企業(yè)特性進(jìn)行考量
三、秒殺活動設(shè)置
- 活動信息:包括秒殺時間该面、渠道夭苗、秒殺模板(不會做圖的商家可提供模板套用)
- 活動限制條件:每個用戶的限制購買次數(shù)、購買數(shù)量等
- 活動商品:設(shè)置活動商品價格隔缀、庫存题造、時間段等
四、秒殺搶購
對于C端用戶參與秒殺猾瘸,要考慮用戶的需求點(diǎn)
- 首先肯定是價格商品吸引用戶
- 其次活動預(yù)熱是否充分界赔,可設(shè)置提醒、同時活動開始時候庫存是否充足牵触,是否超過限購數(shù)量淮悼,售完是否可以原價購買等
下面是我自己整理的秒殺流程,僅供借鑒
五揽思、技術(shù)層面實(shí)現(xiàn)
這部分也是參考一些大神的博客得出的一些技術(shù)層面的心得袜腥,可能不是很恰當(dāng),希望大家指正
1. 前端高并發(fā)
前端常用的方法是【擴(kuò)容】【靜態(tài)化】【限流】
擴(kuò)容:加機(jī)器钉汗,這是最簡單的方法羹令,通過增加前端池的整體承載量來抗峰值。
舉個通俗的例子:比如我想運(yùn)送100棵樹木损痰,我準(zhǔn)備兩輛卡車特恬,一輛運(yùn)50,計(jì)算公式就是2輛X50棵/輛X1小時=100棵/小時徐钠,那如果我需要搬運(yùn)更多的樹木,我可以通過增加車輛役首、也可以增加每輛車的運(yùn)輸量尝丐、或者縮短運(yùn)輸時間显拜。這就是擴(kuò)容的概念
靜態(tài)化:將活動頁面上的所有可以靜態(tài)的元素全部靜態(tài)化,并盡量減少動態(tài)元素爹袁。通過CDN來抗峰值远荠。
限流:一般都會采用IP級別的限流,即針對某一個IP失息,限制單位時間內(nèi)發(fā)起請求數(shù)量譬淳。或者活動入口的時候增加游戲或者問題環(huán)節(jié)進(jìn)行消峰操作盹兢。
有損服務(wù):最后一招邻梆,在接近前端池承載能力的水位上限的時候,隨機(jī)拒絕部分請求來保護(hù)活動整體的可用性绎秒。
2. 后端如何解決
方案:本地標(biāo)記 + redis預(yù)處理 + RabbitMQ異步下單 + 客戶端輪詢
實(shí)現(xiàn):
- 在秒殺階段使用本地標(biāo)記對用戶秒殺過的商品做標(biāo)記浦妄,若被標(biāo)記過直接返回重復(fù)秒殺,未被標(biāo)記才查詢redis见芹,通過本地標(biāo)記來減少對redis的訪問
- 搶購開始前剂娄,將商品和庫存數(shù)據(jù)同步到redis中,所有的搶購操作都在redis中進(jìn)行處理玄呛,通過Redis預(yù)減少庫存減少數(shù)據(jù)庫訪問
3阅懦、為了保護(hù)系統(tǒng)不受高流量的沖擊而導(dǎo)致系統(tǒng)崩潰的問題,使用RabbitMQ用異步隊(duì)列處理下單徘铝,實(shí)際做了一層緩沖保護(hù)耳胎,做了一個窗口模型,窗口模型會實(shí)時的刷新用戶秒殺的狀態(tài)庭砍。
4场晶、client端用js輪詢一個接口,用來獲取處理狀態(tài)
關(guān)于技術(shù)層面引用的的文章鏈接:
https://blog.csdn.net/moakun/article/details/80547135
https://blog.csdn.net/weixin_30894583/article/details/97935776
六怠缸、總結(jié)
以上是自己對于設(shè)計(jì)秒殺系統(tǒng)的思路诗轻,不喜勿噴,如果大家有更多的思路希望和我多多交流揭北,不斷補(bǔ)充