淘寶商品秒殺的架構在設計過程中需要考慮到哪些問題?

朝陽日暮


大家都知道,只要我們討論到電商平臺,那自然少不了商品秒殺的話題,而且如果去電商類互聯網公司面試,那面試官肯定也會問你如何實現商品秒殺系統的架構設計。可能有很多人不屑一顧,商品再怎麼秒殺,不就是一群人搶數量有限的商品嗎?有什麼難的?

其實我要說的是,對於小型電商平臺而言實現商品秒殺感覺的確很簡單,但對於像淘寶這類的電商巨頭平臺而言,商品秒殺系統的設計真的很不簡單,要考慮的事項太多。

秒殺系統的本質及常見問題

所謂商品秒殺,說得通俗點就是一大群人在短時間內去搶購為數不多的商品。聽上去很簡單,但是對於流量較大的電商平臺而言,商品秒殺系統如果設計得不好,會出很大問題的,比如:

1、對網站現有業務會造成衝擊

秒殺活動是一種營銷手段,這會導致在某一刻會吸引很多人來搶購,併發量過大會對現有業務造成衝擊,甚至可能導致網站癱瘓。所以像之前的小米發佈新品,很多人連登錄都登錄不上就是這個原因。

2、服務器帶寬洪峰

商品秒殺頁一般都會設計得比較個性,所以圖片資源也較多,在高併發場景下會導致服務器流量突增,所以要考慮服務器的帶寬是否足夠。

3、服務器及數據庫負載過高

相信大家都參加過秒殺活動,回顧一下,我們是不是在秒殺活動開始前習慣性的一直刷新頁面??很多用戶都是這樣,一直刷新頁面,這樣就變相的增加服務器及數據庫的負載。

4、防止機器提交下單請求

這一點尤為重要,就像一些刷票軟件一樣,有人為了能秒殺到商品會利用機器進行秒殺,機器發出的請求比人為發出請求總是要快一步的。

5、成功秒殺了,但商品數量卻不夠

如果是這種情況,那估計就會受到投訴了,明明提示我秒殺成功了,但商品數量卻顯示0,這種邏輯錯誤不能犯。

秒殺系統該如何設計?

其實秒殺系統的核心問題是全局性和原子性操作,另外還要考慮到高併發帶來的衝擊。結合我的開發經驗,給出一些設計方案供大家參考:

1、秒殺系統設計的思路

一定要用到隊列(可以理解為“排隊”機制),當秒殺活動開始後,所有的請求往這個隊列裡放,另外這個隊列長度是有限制的(隊列長度就是商品數量),當隊列數達到後,活動頁面就提示活動結束,然後隊列裡的請求再去進行下一步處理。

2、秒殺系統獨立部署

為避免秒殺活動給現有業務帶來衝擊,我們建議秒殺系統單獨部署(獨立域名+服務器)這樣即使秒殺系統癱瘓了也不會影響現有電商業務的運行。

3、活動頁靜態化 + CDN加速

為減小系統負載、加快頁面打開速度,我們建議活動頁面要靜態化處理(這樣比動態頁面性能要好),再走CDN加速,這樣能保證多數用戶訪問活動頁的速度都是很快的,不會卡頓。

4、下單頁URL動態生成

為防止機器下單和提前下單,下單頁的URL要動態生成,不能固定不變的。

5、服務降級

在雙11期間,我們會發現淘寶及支付寶很多不重要的功能都是禁用的,這就是服務降級。服務降級是指停止一些不重要的服務,將資源讓給秒殺系統,以提高其負載能力。


以上就是我的觀點,對於這個問題大家是怎麼看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年互聯網從業經驗,歡迎關注我瞭解更多科技知識!


分享到:


相關文章: