學(xué)AI,好工作 就找北大青鳥(niǎo)
關(guān)注小青 聽(tīng)課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

購(gòu)物節(jié)的秒殺系統(tǒng)如何設(shè)計(jì)?

來(lái)源:北大青鳥(niǎo)總部 2023年02月24日 13:30

摘要: 還記得2013年的小米秒殺活動(dòng)嗎?三款小米手機(jī)各11萬(wàn)臺(tái)開(kāi)賣(mài),3分鐘就售光,每秒接近60萬(wàn)個(gè)請(qǐng)求,而支撐如此瞬間爆發(fā)海量請(qǐng)求的系統(tǒng)便是秒殺系統(tǒng)了,而今天我們就給大家揭秘大促背后的秒殺系統(tǒng)如何進(jìn)行設(shè)計(jì)~

如今的購(gòu)物節(jié)“套路”有很多,從預(yù)熱階段、專場(chǎng)階段,到高潮階段、返場(chǎng)階段,每個(gè)階段都有每個(gè)階段的玩法,優(yōu)惠券、紅包、滿減、限時(shí)秒殺,讓你心甘情愿的掏出錢(qián)包還樂(lè)樂(lè)呵呵。



而這其中最具吸引力的便是“限時(shí)秒殺”了,因?yàn)閰⒓酉迺r(shí)秒殺的商品,價(jià)格非常的便宜,在上架之前商家和平臺(tái)都會(huì)進(jìn)行大量的宣傳,并且只在某個(gè)時(shí)間點(diǎn)上架,由于上述三個(gè)特征有大量的用戶定點(diǎn)來(lái)參加限時(shí)秒殺活動(dòng),這導(dǎo)致瞬間系統(tǒng)并發(fā)量會(huì)增加。

還記得2013年的小米秒殺活動(dòng)嗎?三款小米手機(jī)各11萬(wàn)臺(tái)開(kāi)賣(mài),3分鐘就售光,每秒接近60萬(wàn)個(gè)請(qǐng)求,而支撐如此瞬間爆發(fā)海量請(qǐng)求的系統(tǒng)便是秒殺系統(tǒng)了,而今天我們就給大家揭秘大促背后的秒殺系統(tǒng)如何進(jìn)行設(shè)計(jì)~

商品秒殺本質(zhì)上也是一種運(yùn)營(yíng)活動(dòng),通過(guò)低廉的價(jià)格吸引大量用戶,打造品牌,為店鋪引流,所以秒殺商品的整個(gè)流程自然也包括商品信息展示、用戶查詢商品、用戶購(gòu)買(mǎi)商品創(chuàng)建訂單、系統(tǒng)扣減庫(kù)存、系統(tǒng)更新訂單信息、用戶付款、商家發(fā)貨了。

我們需要把秒殺系統(tǒng)當(dāng)成一套獨(dú)立的電子商務(wù)系統(tǒng)進(jìn)行設(shè)計(jì),設(shè)計(jì)內(nèi)容包含業(yè)務(wù)系統(tǒng)、網(wǎng)絡(luò)帶寬、運(yùn)維部署等部分。

秒殺系統(tǒng)的業(yè)務(wù)規(guī)則是到了秒殺時(shí)間才能對(duì)商品進(jìn)行下單購(gòu)買(mǎi),在該時(shí)間點(diǎn)之前只能瀏覽商品信息,不能下單。而因?yàn)槊霘⑸唐?,比如小米手機(jī)、iPhone、空調(diào)、春運(yùn)火車(chē)票等商品都屬于很難搶購(gòu),所以必定有黃牛、搶票軟件等不斷的去發(fā)起請(qǐng)求,甚至?xí)懈呤滞ㄟ^(guò)寫(xiě)自動(dòng)化腳本獲取商品。

所以在秒殺系統(tǒng)的前端設(shè)計(jì)和后端設(shè)計(jì)都需要把這些點(diǎn)考慮進(jìn)來(lái)。

從前端設(shè)計(jì)來(lái)說(shuō),秒殺商品購(gòu)買(mǎi)的按鈕只有等到秒殺時(shí)才可以點(diǎn)擊,在秒殺到來(lái)的那一刻之前,必定有用戶不斷的刷新頁(yè)面,這一幕想必小伙伴們一定很熟悉吧,618、雙11、春運(yùn)放票之前不斷的用手機(jī)、電腦刷新頁(yè)面。

每次刷新都會(huì)給服務(wù)器端帶來(lái)負(fù)載壓力,因此將該頁(yè)面設(shè)計(jì)成靜態(tài)頁(yè)面,緩存在CDN、用戶瀏覽器、反向代理服務(wù)器上。對(duì)于購(gòu)買(mǎi)按鈕的點(diǎn)擊與否通過(guò)js腳本來(lái)動(dòng)態(tài)控制。

從后端設(shè)計(jì)來(lái)說(shuō),秒殺活動(dòng)一開(kāi)始,必定涌來(lái)大量的請(qǐng)求,需要通過(guò)限流、消息隊(duì)列等手段保障服務(wù)可正常運(yùn)行。

首先通過(guò)服務(wù)的集群部署,使用負(fù)載均衡工具(如Nginx)將用戶請(qǐng)求分發(fā)到不同的機(jī)器上,能一定程度緩解服務(wù)器壓力。

其次通過(guò)使用MQ消息中間件將用戶請(qǐng)求全放在隊(duì)列里,通過(guò)設(shè)置隊(duì)列的最大閾值(即商品的最大庫(kù)存數(shù))可以保障用戶都能正常請(qǐng)求服務(wù),消息隊(duì)列把商品系統(tǒng)和庫(kù)存系統(tǒng)分為了兩部分,使得下單、減庫(kù)存操作互相不強(qiáng)制依賴從而保障了用戶的使用體驗(yàn)。

最后將成功進(jìn)入消息隊(duì)列的請(qǐng)求封裝成事務(wù)提交給數(shù)據(jù)庫(kù),由數(shù)據(jù)庫(kù)進(jìn)行處理即可。

從網(wǎng)絡(luò)設(shè)計(jì)上來(lái)說(shuō),因?yàn)樯唐返膆tml頁(yè)面包含了商品描述、商品圖片等信息,再加上css、js腳本等資源,大概有幾百K(我們假設(shè)600K),如果同時(shí)10000人參與一個(gè)商品的搶購(gòu),需要的網(wǎng)絡(luò)帶寬大約是6G(600K*10000),而這些帶寬的增加是因?yàn)槊霘⒒顒?dòng)帶來(lái)的,平時(shí)使用不了這么多,比較好的方式就是和運(yùn)營(yíng)商臨時(shí)租借。

從服務(wù)部署來(lái)說(shuō),因?yàn)槊霘⒒顒?dòng)時(shí)間短、高并發(fā)的特點(diǎn),為了避免對(duì)整個(gè)網(wǎng)站造成沖擊、帶來(lái)癱瘓,一般采用獨(dú)立部署,使其與網(wǎng)站單獨(dú)隔離。

從參與者公平的角度來(lái)說(shuō),因?yàn)槊霘⒒顒?dòng)物美價(jià)廉量少,除了用戶自己在搶之外,還有大量的搶票軟件、黃牛在進(jìn)行搶購(gòu),為了保障活動(dòng)的公平性,我們可在瀏覽器和服務(wù)端進(jìn)行設(shè)計(jì)。

在瀏覽器端,通過(guò)JS腳本限制用戶在N秒內(nèi)只能提交一次請(qǐng)求,點(diǎn)擊了查詢或購(gòu)買(mǎi)按鈕之后,不能再次點(diǎn)擊。在服務(wù)器端,對(duì)于同一個(gè)ID,限制訪問(wèn)的頻率,N秒內(nèi)到達(dá)后端的請(qǐng)求只返回同一頁(yè)面,同一個(gè)商品的查詢,N秒內(nèi)到達(dá)的只返回同一個(gè)頁(yè)面。通過(guò)技術(shù)手段的限制,即使是高手也不能囤積大量的貨物。



以前,我們都是作為參與者參加商品的秒殺活動(dòng),在618、雙十一這樣的大促里貢獻(xiàn)訂單額,而現(xiàn)在,特別是在今天介紹了秒殺系統(tǒng)的設(shè)計(jì)后,我們更應(yīng)該以技術(shù)人的角度去看全民狂歡節(jié),每一次訂單額的上升背后都是技術(shù)上又一次突破啊。雙十一即將到來(lái),我們且期待著此次的訂單額又是多少億的突破以及背后的又一次技術(shù)升級(jí)吧~


標(biāo)簽: javascript
熱門(mén)班型時(shí)間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計(jì)全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開(kāi)發(fā)全能班 爆滿開(kāi)班
網(wǎng)絡(luò)安全運(yùn)營(yíng)班 爆滿開(kāi)班
報(bào)名優(yōu)惠
免費(fèi)試聽(tīng)
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門(mén)話題 站內(nèi)鏈接