來源:北大青鳥總部 2023年02月24日 13:30
如今的購物節(jié)“套路”有很多,從預(yù)熱階段、專場階段,到高潮階段、返場階段,每個階段都有每個階段的玩法,優(yōu)惠券、紅包、滿減、限時秒殺,讓你心甘情愿的掏出錢包還樂樂呵呵。
而這其中最具吸引力的便是“限時秒殺”了,因為參加限時秒殺的商品,價格非常的便宜,在上架之前商家和平臺都會進行大量的宣傳,并且只在某個時間點上架,由于上述三個特征有大量的用戶定點來參加限時秒殺活動,這導(dǎo)致瞬間系統(tǒng)并發(fā)量會增加。
還記得2013年的小米秒殺活動嗎?三款小米手機各11萬臺開賣,3分鐘就售光,每秒接近60萬個請求,而支撐如此瞬間爆發(fā)海量請求的系統(tǒng)便是秒殺系統(tǒng)了,而今天我們就給大家揭秘大促背后的秒殺系統(tǒng)如何進行設(shè)計~
商品秒殺本質(zhì)上也是一種運營活動,通過低廉的價格吸引大量用戶,打造品牌,為店鋪引流,所以秒殺商品的整個流程自然也包括商品信息展示、用戶查詢商品、用戶購買商品創(chuàng)建訂單、系統(tǒng)扣減庫存、系統(tǒng)更新訂單信息、用戶付款、商家發(fā)貨了。
我們需要把秒殺系統(tǒng)當(dāng)成一套獨立的電子商務(wù)系統(tǒng)進行設(shè)計,設(shè)計內(nèi)容包含業(yè)務(wù)系統(tǒng)、網(wǎng)絡(luò)帶寬、運維部署等部分。
秒殺系統(tǒng)的業(yè)務(wù)規(guī)則是到了秒殺時間才能對商品進行下單購買,在該時間點之前只能瀏覽商品信息,不能下單。而因為秒殺商品,比如小米手機、iPhone、空調(diào)、春運火車票等商品都屬于很難搶購,所以必定有黃牛、搶票軟件等不斷的去發(fā)起請求,甚至?xí)懈呤滞ㄟ^寫自動化腳本獲取商品。
所以在秒殺系統(tǒng)的前端設(shè)計和后端設(shè)計都需要把這些點考慮進來。
從前端設(shè)計來說,秒殺商品購買的按鈕只有等到秒殺時才可以點擊,在秒殺到來的那一刻之前,必定有用戶不斷的刷新頁面,這一幕想必小伙伴們一定很熟悉吧,618、雙11、春運放票之前不斷的用手機、電腦刷新頁面。
每次刷新都會給服務(wù)器端帶來負(fù)載壓力,因此將該頁面設(shè)計成靜態(tài)頁面,緩存在CDN、用戶瀏覽器、反向代理服務(wù)器上。對于購買按鈕的點擊與否通過js腳本來動態(tài)控制。
從后端設(shè)計來說,秒殺活動一開始,必定涌來大量的請求,需要通過限流、消息隊列等手段保障服務(wù)可正常運行。
首先通過服務(wù)的集群部署,使用負(fù)載均衡工具(如Nginx)將用戶請求分發(fā)到不同的機器上,能一定程度緩解服務(wù)器壓力。
其次通過使用MQ消息中間件將用戶請求全放在隊列里,通過設(shè)置隊列的最大閾值(即商品的最大庫存數(shù))可以保障用戶都能正常請求服務(wù),消息隊列把商品系統(tǒng)和庫存系統(tǒng)分為了兩部分,使得下單、減庫存操作互相不強制依賴從而保障了用戶的使用體驗。
最后將成功進入消息隊列的請求封裝成事務(wù)提交給數(shù)據(jù)庫,由數(shù)據(jù)庫進行處理即可。
從網(wǎng)絡(luò)設(shè)計上來說,因為商品的html頁面包含了商品描述、商品圖片等信息,再加上css、js腳本等資源,大概有幾百K(我們假設(shè)600K),如果同時10000人參與一個商品的搶購,需要的網(wǎng)絡(luò)帶寬大約是6G(600K*10000),而這些帶寬的增加是因為秒殺活動帶來的,平時使用不了這么多,比較好的方式就是和運營商臨時租借。
從服務(wù)部署來說,因為秒殺活動時間短、高并發(fā)的特點,為了避免對整個網(wǎng)站造成沖擊、帶來癱瘓,一般采用獨立部署,使其與網(wǎng)站單獨隔離。
從參與者公平的角度來說,因為秒殺活動物美價廉量少,除了用戶自己在搶之外,還有大量的搶票軟件、黃牛在進行搶購,為了保障活動的公平性,我們可在瀏覽器和服務(wù)端進行設(shè)計。
在瀏覽器端,通過JS腳本限制用戶在N秒內(nèi)只能提交一次請求,點擊了查詢或購買按鈕之后,不能再次點擊。在服務(wù)器端,對于同一個ID,限制訪問的頻率,N秒內(nèi)到達(dá)后端的請求只返回同一頁面,同一個商品的查詢,N秒內(nèi)到達(dá)的只返回同一個頁面。通過技術(shù)手段的限制,即使是高手也不能囤積大量的貨物。
以前,我們都是作為參與者參加商品的秒殺活動,在618、雙十一這樣的大促里貢獻(xiàn)訂單額,而現(xiàn)在,特別是在今天介紹了秒殺系統(tǒng)的設(shè)計后,我們更應(yīng)該以技術(shù)人的角度去看全民狂歡節(jié),每一次訂單額的上升背后都是技術(shù)上又一次突破啊。雙十一即將到來,我們且期待著此次的訂單額又是多少億的突破以及背后的又一次技術(shù)升級吧~