由微視春節集卡瓜分活動,看高可用秒殺系統的架構設計

2022-09-15 02:33:10 字數 1669 閱讀 7254

微視春節專案中的集卡瓜分活動,是乙個典型流量洪峰下的秒殺場景,本文作者參與其中,對高可用秒殺系統的架構設計做了一些思考和總結。(流量洪峰所帶來的一系列挑戰,足以激發每位程式設計師的鬥志。雲加社群將推出「高可用架構之流量洪峰」系列內容,歡迎關注)。

如今的網際網路已經在海量服務領域有了很成熟的理論,有很多在流量洪峰下的實踐。而微視春節專案中的集卡瓜分活動,主要環節包括發卡、集卡、瓜分等流程,涉及到高併發、降級預案等,是乙個典型流量洪峰下的秒殺場景。我有幸參與其中,從0到1完整踐行了海量服務。本文是對高可用秒殺系統的架構設計的一些思考,希望對讀者有所幫助。

使用者不能接受破窗的體驗,例如:系統超時、系統錯誤的提示,或者直接404頁面。

木桶短板理論,整個系統的瓶頸往往都在db,如何設計出高併發、高可用系統?

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

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

漏斗型架構設計,指的是,使用者的請求,從客戶端到db層,層層遞減,遞減的程度視業務而定。例如當10萬人去搶1個物品時,db層的請求在個位數量級,對於秒殺系統來講,漏斗型架構設計就是比較理想的模型,如下圖所示。

漏斗型的架構設計,是高併發的基礎,能夠做到:

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

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

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

微視集卡瓜分專案的架構設計如下圖所示。

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

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

針對瓜分全鏈路呼叫分析時,需要特別說明的幾點:

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

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

最後,對應漏斗模型,總結下這次活動的實踐。

OpenCV 由點集擬合直線

opencv有乙個函式fitline,其函式原型 void cv fitline inputarray points,outputarray line,int disttype,double param,double reps,double aeps 其中,計算距離有這幾種方式 這裡就選用檢測到的第...

使用nLite封裝2003整合Raid卡驅動

整合驅動程式到系統安裝盤 多是因為適應不同使用者的需求,其實操作過程很簡單,也就是點幾下滑鼠的事。如何使用nlite整合驅動 一切都準備妥當後啟動nlite,如果希望使用中文操作介面,啟動後可以在軟體嚮導式的操作介面第一步的下拉列表中選擇 simplified chinese 軟體將馬上轉為簡體中文...

由訊號集聯想 位域授權模式的不限長擴充套件

author selfimpr blog mail lgg860911 yahoo.com.cn 位域是一種常用的授權手段 利用整型數值的每乙個二進位制位代表一種授權,1和0分別代表有 無授權.例如 如果以乙個整型進行增刪改查四種授權.假定使用該整型的後4位從右至左分別代表增刪改查四種操作的授權.那...