如何設計乙個高可用 高併發秒殺系統

2022-09-05 23:42:30 字數 826 閱讀 5037

如今的網際網路已經在海量服務領域有了很成熟的理論,因此自己也很慶幸,能夠從 0 到 1 完整踐行海量服務。微視春節專案中的集卡瓜分活動,是乙個典型的秒殺場景,自己參與其中,分享一些心得和總結。

上圖是乙個典型的網際網路業務,使用者完成乙個寫操作,一般會通過接入層和邏輯層,這裡的服務都是無狀態,可以通過平行拓展去解決高併發的問題;到了 db 層,必須要落到介質中,可以是磁碟/ssd/記憶體,如果出現 key 的衝突,會有一些併發控制技術,例如 cas/加鎖/序列排隊等。

直筒型直筒型業務,指的是使用者請求 1:1 的洞穿到 db 層,如下圖所示。在比較簡單的業務中,才會採用這個模型。隨著業務規模複雜度上來,一定會有 db 和邏輯層分離、邏輯層和接入層分離。

漏斗型漏斗型業務,指的是,使用者的請求,從客戶端到 db 層,層層遞減,遞減的程度視業務而定。例如當 10w 人去搶 1 個物品時,db 層的請求在個位數量級,這就是比較理想的模型。如下圖所示

這個模型,是高併發的基礎,翻譯一下就是下面這些:

漏斗型系統需要從產品策略/客戶端/接入層/邏輯層/db 層全方位立體的設計。

產品策略

客戶端接入層

邏輯層儲存層

對於業務模型而言,對於 db 的要求需要保證幾個原則:

微視集卡瓜分專案屬於微視春節專案之一。使用者的體驗流程如下:

架構圖獎品模組主要是發錢和其他獎品。

瓜分降級預案

為了做好瓜分時刻的高併發,對整個系統需要保證兩個重要的事情:

如下圖所示,是針對瓜分全鏈路呼叫分析如下圖,需要特別說明的幾點:

我們的降級預案大概如下:

綜上,整個瓜分時刻體驗如下所示:

回顧下漏斗模型,總結下整個實踐:

高併發解決方案 如何設計乙個秒殺系統

秒殺場景一般會在電商 舉行一些活動或者節假日在12306 上搶票時遇到。對於電商 中一些稀缺或者 商品,電商 一般會在約定時間點對其進行限量銷售,因為這些商品的特殊性,會吸引大量使用者前來搶購,並且會在約定的時間點同時在秒殺頁面進行搶購。限流 鑑於只有少部分使用者能夠秒殺成功,所以要限制大部分流量,...

如何設計乙個高併發系統

總結如果你確實有真才實學,在網際網路公司裡幹過高併發系統,那你確實拿 offer 基本如探囊取物,沒啥問題。面試官也絕對不會這樣來問你,否則他就是蠢。假設你在某知名電商公司幹過高併發系統,使用者上億,一天流量幾十億,高峰期併發量上萬,甚至是十萬。那麼人家一定會仔細盤問你的系統架構,你們系統啥架構?怎...

如何設計乙個高併發系統

系統拆分,將乙個系統拆分為多個子系統,用dubbo來搞。然後每個系統連乙個資料庫,這樣本來就乙個庫,現在多個資料庫,不也可以抗高併發麼。快取,必須得用快取。大部分的高併發場景,都是讀多寫少,那你完全可以在資料庫和快取裡都寫乙份,然後讀的時候大量走快取不就得了。畢竟人家redis輕輕鬆鬆單機幾萬的併發...