天天看點

阿裡最後一面,高并發下如何設計一個秒殺系統?

近年來,随着“雙十一”購物節和抖音等直播平台帶貨的熱潮,大批促銷活動湧現,「秒殺」這個詞也越來越頻繁地出現在我們的生活裡。

除了那些頭部的電商公司,某寶、某東,還有各種街、某說、某會、某品等,甚至是一些老牌的傳統企業,比如蘇甯、國美等,也跟着做起了秒殺活動。

秒殺系統可以稱得上網際網路公司的标配了。前段時間,我一個去阿裡面試的朋友,最後一面就被問到了,高并發下如何設計一個秒殺系統?

另外,在 GitHub star 上,一個關于「秒殺系統設計與實作」的項目也已經有了 13.3k的星星和 3.1k 的 fork。

阿裡最後一面,高并發下如何設計一個秒殺系統?

如你我所見,秒殺系統已經成為了在大廠工作必不可少的技術門檻。

但我發現,無論是在面試還是工作中,大家總會有這樣那樣的疑問,比如:秒殺系統的業務挑戰是什麼?如何做秒殺的流量控制?如何應對瞬時高并發流量?如何防止超賣?如何保證服務的高可用等等問題。

其實沒我們想的那麼複雜,秒殺系統是屬于系統設計類的題型,一般面試官問這個點最想考察的無非就是你在設計過程中處理實際應用場景的能力,歸根結底就是“如何設計秒殺系統?”這個簡單的問題。

這裡,分享給你一張「從零打造秒殺系統」的全流程樹形圖,它把看起來很繁瑣的秒殺系統設計的整體流程,細化分為了 6 個子產品,包括前期準備、系統動工、穩定壓倒一切、準确無誤、雷厲風行和尾聲,每個闆塊清晰明了,不管在哪一步出現了問題,都可以直接對應找到答案,超級适合查缺補漏。

阿裡最後一面,高并發下如何設計一個秒殺系統?

此圖出自佘志東,他曾是京東的秒殺系統負責人、也在唯品會、思科、華為、朗訊等知名企業任職過,目前,東哥正專注于網際網路高性能高并發分布式系統的架構設計與開發。

東哥有着近 20 年網際網路一線工作經驗,尤其是電商交易平台這塊,經驗非常豐富,可以說是秒殺系統界的老大哥了。2020年,疫情背景下,他帶領團隊做的全民搶口罩項目,其秒殺系統成功扛住了三百萬人同時秒殺的巨大壓力。

最近,他将自己 20多年的秒殺設計經驗,做了一次系統全面的總結,都集合在了《手把手帶你搭建秒殺系統》中。在專欄中,為了能讓大家對秒殺系統有更全面的認知,他從基礎設計原則講起,再到高階的設計技巧實戰,真正做到帶你從 0 到 1 去實作一個自己的可抗百萬級流量秒殺實戰項目,而不是簡單說說設計流程、資料庫分庫分表等了事。

說實話,之前關于秒殺系統的資料我也看過不少,但沒有項目加持,總有種紙上談兵的感覺,之是以選擇這門課程,完全是沖着一步步實作的百萬級流量秒殺實戰項目來的,我們都知道,秒殺系統體量的大小對于技術選型的要求非常高,就像東哥說的,沒有什麼是比你親手實踐一遍收獲更大的。

當然,因為這門課程是從零開始實戰,是以其閱聽人目标也較為廣泛,既适用于沒有太多經驗的初級工程師學習和參考,也可以讓相對經驗豐富的進階電商從業者查漏補缺,完善學習體系。

下面來看看這門課具體要怎麼講,東哥根據秒殺系統的前中後原則,把專欄一共分為六個部分:

前期準備:主要從秒殺系統的業務挑戰開始講起,看看各大電商平台的秒殺玩法,總結設計原則;然後帶着大家做秒殺的技術選型,安裝基礎環境。

系統動工:這部分的内容比較基礎,包括對秒殺系統進行業務解構,開始着手搭建秒殺的項目工程,梳理秒殺的業務流程,分析系統提供的接口,填充秒殺的業務實作,最終完成一個最簡秒殺系統。

穩定壓倒一切:這部分聚焦在“穩”上,在最簡秒殺系統的基礎上,将帶着大家進行高可用建設,重點講解秒殺的隔離、流控、削峰、限流、降級、熱點和容災。

準确無誤:這部分聚焦在“準”上,将通過防刷和風控,學習如何保證商品不賣給黃牛和刷子,以確定秒殺的公平性;接着會介紹秒殺的庫存和限購設計,以確定商品不超賣,符合限購規則。

雷令風行:這部分聚焦在“快”上,帶着大家一起進行系統優化,進而讓我們的秒殺系統響應更快,使用者體驗更好。

尾聲:最後就是總結部分,梳理整個實戰項目的關鍵點;另外還會結合自身經驗,帶給大家在頭部電商的秒殺玩法中,除了上述技術内容外的業務協同思考。

更詳細的内容就看目錄吧: