如何設計電商行業億級用戶秒殺系統

2020-12-06 奈學課程分享

電商行業在近十幾年中,經歷過大大小小的促銷活動和秒殺上百次,每次做秒殺瞬時訪問量會翻數十倍,甚至數百倍。對系統架構是巨大的考驗,期間也曾經歷過系統宕機,甚至整體雪崩。那麼我們怎麼設計秒殺系統,才能保證秒殺系統的高性能和穩定性,同時還要保證日常業務不受影響呢?

先看看秒殺場景特點。秒殺開始前幾分鐘,大量用戶開始進入秒殺商品詳情頁面,很多人開始頻繁刷新秒殺商品詳情頁,這時秒殺商品詳情頁訪問量會猛增。秒殺開始,大量用戶開始搶購,這時創建訂單,扣庫存壓力會顯著增大。實際上,秒殺場景基本都是秒殺參與人多,秒殺成功的人卻寥寥無幾,經常是幾十萬人或者更多人搶幾百個商品庫存。

那麼我們曾經是怎麼設計秒殺系統的呢?主要涉及以下幾個方面:

秒殺業務流程上的考慮:

由於參加秒殺的商品售賣價格非常低,基本都是「搶到即賺到」,成功下單後卻不付款的情況非常少。所以我們採用下單減庫存的方案,下單時扣減庫存,然後再進行支付。假如真有個別訂單不付款怎麼辦?沒關係,秒殺好活動最主要的目的是吸引流量,個別訂單不支付對秒殺活動本身影響不大。況且,沒支付剩下的庫存還可以做為普通商品繼續售賣。不過要注意對機器人和自動腳本的防禦,後面會詳細介紹。

頁面靜態化:

「秒殺開始前幾分鐘,大量用戶開始進入秒殺商品詳情頁面,很多人開始頻繁刷新秒殺商品詳情頁,這時秒殺商品詳情頁訪問量會猛增」。如果請求全部打到後端服務,那後端服務的壓力會非常大(後端服務要處理業務邏輯,而且還要訪問資料庫,吞吐量比較低)。

考慮到秒殺是運營同學提前安排的活動,要秒殺哪些商品、商品價格等信息在秒殺活動開始前已經確定下來,所以我們可以把秒殺商品詳情頁做成靜態頁面,把商品詳情、商品價格等參數、評論評價等信息全部放在這個靜態頁面裡,然後把這個靜態頁面上傳到CDN上預熱(CDN是內容分發網絡,可以簡單理解成網際網路上的巨大的緩存,用於存放靜態頁面、圖片、視頻等,可以顯著提高訪問速度),用CDN扛流量,這樣大量的商品詳情頁的訪問請求就不用訪問自己的網站(源站)。這樣既可以提高訪問速度,也沒有給網站增加壓力,同時也減少了網站帶寬壓力。

請求攔截:

前端頁面,相關按鈕點擊後置灰,防止重複提交

網關(zuul,nginx)層,為了避免前端惡意請求,比如一些攻擊腳本,在網關層要對下單等接口按userID限流,幾秒鐘只能訪問一次。考慮到秒殺場景參與人多,秒殺成功的人極少,我們可以把絕大部分搶購下單請求在網關層直接拒掉,按秒殺失敗處理。這樣就極大減少了後端服務的壓力。

假設秒殺庫存是200個,我們可以只放行200個請求到後端服務。要注意,為了儘量避免庫存被機器人和自動腳本搶走,200個請求不能在秒殺開始瞬間同時放行,可以分段放行,比如秒殺開始後隨機選取100ms內的5個請求放行(這100ms內的其他請求直接拒掉,按秒殺失敗處理),之後每隔100ms放行5個請求,4秒鐘可以放行完200個請求。分段放行,除了限制了機器人和自動腳本,把請求分散在各個時間段,還進一步緩解了後端服務的壓力。

分段放行總時間不能太長,假如每100ms放行1個請求,放行完所有200個請求需要20秒時間,這樣用戶就會明顯感知到下單早的人沒秒殺成功,下單晚的人反而秒殺成功了,用戶體驗會變差。

另外,秒殺過程網關壓力會比較大,網關可以做成集群,多節點分攤訪問壓力。

後端服務設計:

如果秒殺庫存只有200,經過網關攔截,再加上採用分段放行的方式,對於後端服務基本沒什麼壓力了,日常的後端服務就完全可以支撐秒殺活動了。不用再做更複雜的設計。不過,假如秒殺庫存有幾萬個,放行的下單請求就有幾萬個,為了用戶體驗放行總時間也不能太長,這時後端服務該怎麼設計呢?

這時主要壓力就在資料庫了,扣減庫存壓力,創建訂單壓力。

庫存可以放到Reids緩存中,來提高扣減庫存吞吐能力。對於熱點商品的庫存可以利用Redis分片存儲。

創建訂單可以走異步消息隊列。後端服務接到下單請求,直接放進消息隊列,監聽服務取出消息後,先將訂單信息寫入Redis,每隔100ms或者積攢100條訂單,批量寫入資料庫一次。前端頁面下單後定時向後端拉取訂單信息,獲取到訂單信息後跳轉到支付頁面。用這種批量異步寫入資料庫的方式大幅減少了資料庫寫入頻次,從而明顯降低了訂單資料庫寫入壓力。

隔離:

1,業務隔離。從業務上把秒殺和日常的售賣區分開來,把秒殺做為營銷活動,要參與秒殺的商品需要提前報名參加活動,這樣我們就能提前知道哪些商家哪些商品要參與秒殺,可以根據提報的商品提前生成靜態頁面並上傳到CDN預熱,提報的商品庫存也需要提前預熱,可以將商品庫存在活動開始前預熱到Redis,避免秒殺開始後大量的緩存穿透。

2,部署隔離。秒殺相關服務和日常服務要分組部署,不能因為秒殺出問題影響日常售賣業務。可以申請單獨的秒殺域名,從網絡入口層就開始分流。網關也單獨部署,秒殺走自己單獨的網關,從而避免日常網關受到影響。秒殺可以復用訂單,庫存,支付等日常服務,只是需要一些小的改造(比如下單流程走消息隊列,批量寫入訂單庫,以及在Redis中扣減庫存)。

3,數據隔離。為了避免秒殺活動影響到日常售賣業務,Redis緩存需要單獨部署,甚至資料庫也需要單獨部署!數據隔離後,秒殺剩餘的庫存怎麼辦?秒殺活動結束後,剩餘庫存可以歸還到日常庫存繼續做為普通商品售賣。數據隔離後,秒殺訂單和日常訂單不在相同的資料庫,之後的訂單查詢怎麼展示?可以在創建秒殺訂單後發消息到消息隊列,日常訂單服務採取拉的方式消費消息,這時日常訂單服務是主動方,可以採用線程池的方式,根據機器的性能來增加或縮小線程池的大小,控制拉取消息的速度,來控制訂單資料庫的寫入壓力。

網絡:

秒殺前要和網絡運營商、CDN服務商提前申請帶寬。

還有哪些細節要考慮:

1.如何避免超賣?如果在redis中扣減庫存,可以利用decr命令扣減庫存,decr是原子操作,在分布式環境下也不會有並發問題,decr扣減庫存後,判斷返回值,如果返回值小於0,扣減庫存失敗,秒殺也就失敗了;如果在資料庫中扣減庫存可以在where後面加上庫存大於0的條件,來避免庫存被減成負值。這樣就可以避免超賣情況發生了。

2.接口防刷,前面已經提到過,在網關層對下單等接口按userID限流。

3.網關層除了對userID做限流外,還要做整體限流。在實際訪問量超過預估訪問量時,整體限流可以起到保護作用,避免系統被壓垮。

4.防止重複下單,按userID限流已經起到了防止重複下單的作用。假如限制同一個用戶10分鐘能下一次單,一般情況下10分鐘內,商品早已經被搶光了,用戶也就沒有再次下單的機會了。

5.可以結合風控系統,在網關層把羊毛黨等有問題的用戶請求直接拒掉。

6.可以在網關層上面再加一層防火牆或者高防服務,來防禦DDos等分布式網絡攻擊。

相關焦點

  • 一次阿里面試,我被問到了如何設計秒殺系統
    一次阿里面試,我被問到了如何設計秒殺系統 秒殺活動是電商項目中常出現的活動。比如演唱會門票搶購,京東淘寶秒殺商品搶購。在搶購那一刻,會有大量用戶同時高並發的請求應用系統,可能會達到每秒幾萬、幾十萬的請求。如果系統無法處理這麼高的請求,那麼就會崩潰,從而導致系統不可用。
  • 京東6.18背後的秒殺系統是如何設計的?
    三款小米手機各11萬臺開賣,3分鐘就售光,每秒接近60萬個請求,而支撐如此瞬間爆發海量請求的系統便是秒殺系統了,而今天我們就給大家揭秘大促背後的秒殺系統如何進行設計~商品秒殺本質上也是一種運營活動,通過低廉的價格吸引大量用戶,打造品牌,為店鋪引流,所以秒殺商品的整個流程自然也包括商品信息展示、用戶查詢商品、用戶購買商品創建訂單、系統扣減庫存、系統更新訂單信息、
  • 如何設計電商系統商品中心?
    商品中心作為電商系統的核心模塊之一,承載著電商系統的核心基礎數據,是電商系統中比較複雜的模塊,商品中心的設計影響到後續的許多模塊,所以一個好的商品中心,需要多方面考慮,包括後續的可拓展性、前端營銷活動及業務需求等方面。整篇文章將從4個部分來開展:什麼是商品中心、商品中心的基礎名稱解釋、如何設計商品中心、總計。
  • 從考拉海購,看整個跨境電商行業的運轉邏輯
    ,阿里巴巴集團以 20 億美元全資收購網易旗下跨境電商平臺考拉。2013年6月,小紅書創建於上海;2014年6月,小紅書完成金沙江創投領投的數百萬美元的 A 輪融資;2015年6月,小紅書完成 GGV 領投的千萬美元級 B 輪融資;2016年3月,小紅書完成 騰訊投資領投的1億美元級 C輪融資;2018年6月,小紅書完成阿里巴巴領投的3美元級 D輪融資;
  • 眼鏡行業社交電商如何進行新用戶的引進及轉化?
    社交電商的風已經吹了很久,期間無數人加入社交電商,眼鏡行業裡也有很多商家開始實踐。大部分眼鏡企業或許已經進入了社交電商經營的中期,但經營者可能會遇到各種問題。比如運營到中期的眼鏡商家發現遇到了瓶頸,老用戶購買率低,新用戶難以獲取等問題。
  • 詳解考拉海購,看跨境電商行業
    編輯導語:考拉海購主打跨境電商行業,僅用五年的時間,考拉海購佔據跨境電商市場的超高份額,在2019年被阿里巴巴收購;考拉海購是怎麼做到發展如此之快?本文作者深入分析考拉海購,並了解跨境電商行業,我們一起來看一下。
  • 蘑菇街(MOGU.US)紀要:電商直播平臺如何看待行業未來發展
    美股 蘑菇街(MOGU.US)紀要:電商直播平臺如何看待行業未來發展 2020年1月16日 10:31:15
  • B2C電商系統產品架構:全局分析系統定義與職責
    筆者在七八年職業經歷中,主要是聚焦於電商系統上下遊進行工作,而筆者在本文中就將結合工作實踐與經驗認知,為大家分析電商系統的各種架構,並對各個系統註明主要定義和主要職責。
  • 極速拉新 攜3億用戶可否掀翻4億用戶抖音?
    易觀千帆的數據則顯示,在2020年2月快手的月活為4.76億,環比增長6.60%。 張毅在接受《商學院》記者採訪時表示,紅包戰對提升APP短期內的DAU及使用時長、使用頻率具有立竿見影的功效,但關鍵的核心在於後續如何留存用戶。 對於春節期間快手的用戶增量以及後續留存情況,快手方面拒絕了記者的採訪。
  • 眼鏡行業社交電商如何打造爆款單品?
    社交電商以「人」為中心,把以人為本發揮到了極致。它通過社交關係裡人與人之間的信任和商品的分享,產生內容共鳴,然後再進行精準傳播,這中間的核心是用戶在購買之前,就已經對眼鏡商家有了信任。社交電商早已迎來了屬於它的春天,各大商城開始推出他們的社交電商平臺,如網易推手、京東京喜等。
  • 馬雲又孵化出一電商巨頭:用戶超2億,GMV近千億,是下一個淘寶?
    而就在9月7日,阿里旗下的二手電商交易平臺閒魚發布了最新的業績情況:閒魚註冊會員超過2億,而從去年8月到今年7月底,閒魚GMV已近900億,很快就將突破1000億大關,閒魚已成為繼天貓、淘寶之後,下一個準萬億級市場。這是馬雲旗下孵化出來的又一電商巨頭,由於走C2C、C2B模式,和淘寶有點像,因此,可以理解為下一個淘寶。
  • 電商優惠券產品設計:整體框架分析
    編輯導讀:優惠券的作用對於電商網站來說是不可或缺的,它是保持電商活躍度和轉化率的手段,了解電商優惠券的整體框架設計有助於產品工作的順利展開。本文作者總結了一份詳細的設計攻略,其中有很多學習和參考的內容,希望對大家有所幫助。
  • 對話網紅電商服務平臺魔筷:如何做電商平臺「適配器」?
    在3G-4G時代,由傳統社交(微博)和電商(淘寶)平臺的流量主導第二波流量的局面正在改變,在4G末期短視頻(抖音,快手)和移動直播(淘寶直播)等內容生態崛起,流量結構再次改變。 在流量去中心化時代的趨勢推動下,用戶開始集聚在一些新的流量生態下,同時淘寶難以消化的供應鏈轉由抖音和快手消化。快手最先將電商化提上議程,2019年,當年快手電商完成交易額約596億。
  • 聊聊電商產品設計有哪些共性——商品模塊
    這裡多說一句,很多網際網路行業的業務邏輯和展現形式都來自於實體經濟多年的積累,如果想要做好某一行業的數位化產品,必須深耕這一行業。作為產品經理有那麼一點網際網路思維、會畫個原型、寫個文檔是不夠的。一、電商的分類說回電商,在現實生活中你能看到很多種商品交易場所,比如說大到大型的超市、賣場、商場。小到樓下的專賣店、街邊小攤,甚至你手機裡的微商。
  • 了解電商後臺系統,看這篇就夠了
    用戶在網上下單定個外賣,騎手負責從商家那裡取餐送到用戶家裡。這是到家服務。5. C2M簡單理解C2M就是,電商平臺通過分析消費者的需求,將信息傳遞給上遊製造商,從而製造出更加符合市場需求的產品,並且直達消費者手中。其實C2M模式在電商行業誕生已久,必要商城創始人早在2013年就已經提出這一概念,為什麼該模式在2019年才正式走紅呢?
  • 騰訊雲星星海伺服器助力貝貝網雙十一 系統性能提升20%
    為了確保用戶流暢體驗,大部分操作後臺需在毫秒級時長內完成處理,這些實時數據的獲得、存儲、分析、輸出都離不開背後計算力的支撐。近年來,貝貝網用戶和業務量呈指數級增長,隨著雲計算應用規模進一步擴大,電商的業務複雜場景對雲計算軟硬體技術協同以及雲原生技術能力要求逐步提升,傳統伺服器在性能、靈活性和規模擴張方面的瓶頸越發明顯,雲伺服器成為大勢所趨的必選項。那麼問題來了,怎麼選?
  • 【飛鴿創服】直擊直播電商行業:浙江下月率先推進直播電商規範標準
    【飛鴿創服】了解到,今年一季度全國電商直播超過400萬場,而據中國網際網路信息中心(CNNIC)發布第45次《中國網際網路發展狀況統計報告》數據顯示,截至2020年3月,我國網絡直播用戶規模達5.60億,較2018年底增長1.63億,佔網民整體的62.0%。
  • 中國企業直播行業B端用戶超過120萬家,目睹綜合競爭力位居行業前列
    企業直播行業B端用戶超過120萬家,行業深耕多年玩家逐漸成熟企業直播正成為企業結構性升級的重要環節,iiMedia Research(艾媒諮詢)數據顯示,預計2020年中國企業直播行業B端用戶超過120萬家,艾媒諮詢分析師認為,在數位化轉型和私域流量構建需求推動下,未來使用企業直播服務的企業用戶將顯著增長
  • 訪談|網紅電商服務平臺魔筷:場景電商化下,如何做電商平臺「適配器...
    在3G-4G時代,由傳統社交(微博)和電商(淘寶)平臺的流量主導第二波流量的局面正在改變,在4G末期短視頻(抖音,快手)和移動直播(淘寶直播)等內容生態崛起,流量結構再次改變。在流量去中心化時代的趨勢推動下,用戶開始集聚在一些新的流量生態下,同時淘寶難以消化的供應鏈轉由抖音和快手消化。快手最先將電商化提上議程,2019年,當年快手電商完成交易額約596億。
  • 考拉海購產品分析報告:跨境電商行業的運轉邏輯
    2014 年 11 月,小紅書完成 GGV 領投的千萬美元級 B 輪融資;2014年 12 月,小紅書正式上線電商平臺「福利社」,從社區升級電商,完成商業閉環;2014 年 12 月,小紅書發布全球大賞,獲獎榜單被日韓免稅店及海外商家廣泛使用,成為出境購物的風向標。