網(wǎng)購(gòu)秒殺系統(tǒng)架構(gòu)設(shè)計(jì)
場(chǎng)景描述:
秒殺是電商系統(tǒng)常見的一種營(yíng)銷手段:將熱賣的庫(kù)存量少的商品(通常只有一件)以極低的價(jià)格,在特定的時(shí)間點(diǎn)開始出售。比如幾百塊錢的蘋果手機(jī),幾百塊錢錢的電腦等。 因?yàn)樯唐穬r(jià)格誘人且數(shù)量有限,如同線下饑餓營(yíng)銷一樣的道理,很多用戶會(huì)選擇在秒殺活動(dòng)開始前涌入網(wǎng)站, 等到秒殺活動(dòng)開始的一瞬間,點(diǎn)下購(gòu)買按鈕(在此之前購(gòu)買按鈕不可以點(diǎn)擊)。這些商品因?yàn)樵诨顒?dòng)開始的一秒內(nèi)就被賣光了,所以被稱作秒殺。
秒殺雖然對(duì)銷售提升有很多好處,也能給消費(fèi)者帶來(lái)利益,但是對(duì)電商系統(tǒng)架構(gòu)技術(shù)有不小的壓力,秒殺活動(dòng)帶來(lái)的并發(fā)訪問(wèn)用戶卻是平時(shí)的數(shù)百倍甚至上千倍。秒殺時(shí)的最高并發(fā)訪問(wèn)量往往需要更多的服務(wù)資源進(jìn)行支撐,但平日系統(tǒng)又沒(méi)有這么大的人流量,如果采用以往的單體架構(gòu)或者沒(méi)有對(duì)服務(wù)和鏈路進(jìn)行合理的分區(qū)處理就需要浪費(fèi)很多的資源,而這些資源其實(shí)在絕大部分時(shí)候都是用不著的,魁鯨科技開發(fā)的電商定制系統(tǒng)一般都會(huì)必須設(shè)計(jì)部署專門的秒殺系統(tǒng)結(jié)合彈性云計(jì)算進(jìn)行專門應(yīng)對(duì)。
常見方法:
1.秒殺系統(tǒng)獨(dú)立部署
為了避免因?yàn)槊霘⒒顒?dòng)的高并發(fā)訪問(wèn)而拖垮整個(gè)系統(tǒng),可將秒殺系統(tǒng)獨(dú)立開發(fā)部署這樣即使秒殺系統(tǒng)崩潰了,也不會(huì)對(duì)整個(gè)造成任何影響。同時(shí)這樣架構(gòu)也有利于資源節(jié)省、彈性伸縮。
2.緩存和異步隊(duì)列
利用Redis、MQ等技術(shù)對(duì)前端打過(guò)來(lái)的流量進(jìn)行緩沖處理
3.彈性計(jì)算
阿里云、騰訊云、華為云都支持彈性計(jì)算和部署方式,結(jié)合目前容器技術(shù)可以根據(jù)壓力彈性的上線/下線
4.動(dòng)態(tài)生成隨機(jī)下單頁(yè)面
URL 為了避免用戶直接訪問(wèn)下單頁(yè)面 URL,需要將該 URL 動(dòng)態(tài)化,即使秒殺系統(tǒng)的開發(fā)者也無(wú)法在秒殺開始前訪問(wèn)下單頁(yè)面的URL。
同時(shí)在前端頁(yè)面進(jìn)行防刷點(diǎn)擊的處理,后端亦可以進(jìn)行冪等處理。
