秒殺系統設計

2022-05-19 09:17:56 字數 1342 閱讀 8879

秒殺系統在很多平台都有,小公尺手機的秒殺購買,京東618,**雙11等等。

1. 瞬時流量突增

秒殺活動一般會定某個特定時間開啟,大量使用者請求在活動開始的瞬間湧入,會給服務造成極大的壓力。

2. 持續時間短

一半秒殺活動持續時間比較短,可能幾個小時就結束了。

3. 對資料的爭搶,資料一致性要求很高

秒殺中的最大壓力就是對商品庫存的併發爭搶,秒殺一般是訪問請求數量遠遠大於庫存數量,只有少部分使用者能夠秒殺成功。

商品秒殺可以簡單分為兩步,第一步鎖單,第二步支付。鎖單是使用者在獲得秒殺資格的時候能夠及時占用庫存,庫存中心也能及時減庫存。在獲得秒殺資格後,要能夠及時讓使用者支付,否則會因為無法支付引起客訴。

秒殺系統需要解決問題

1. 對現有業務的衝擊

秒殺是營銷活動中的一種,如果和其他營銷活動應用部署在同一伺服器上,肯定會對現有其他活動造成衝擊,極端情況下可能導致整個電商系統服務宕機。

2. 高併發導致系統負載高

3. 突然增加的網路與服務頻寬

4. 超發設計  

當庫存數量有限,如何有效控制商品超賣是秒殺系統不可避免的乙個問題。

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

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

秒殺系統

架構設計思想

1. 限流

由於活動庫存量一般都是很少,對應的只有少部分使用者才能秒殺成功。所以我們需要限制大部分使用者流量,只准少量使用者流量進入後端伺服器。

2. 削峰

秒殺開始的那一瞬間,會有大量使用者衝擊進來,所以在開始時候會有乙個瞬間流量峰值。如何把瞬間的流量峰值變得更平緩,是能否成功設計好秒殺系統的關鍵因素。實現流量削峰填谷,一般的採用快取和 mq 中介軟體來解決。

3. 非同步處理

秒殺其實可以當做高併發系統來處理,在這個時候,可以考慮從業務上做相容,將同步的業務,設計成非同步處理的任務,提高**的整體可用性。

4. 快取

秒殺系統的瓶頸主要體現在下訂單、扣減庫存流程中,對資料庫讀寫,在這些流程中主要用到 oltp 的資料庫,類似 mysql、sqlserver、oracle。由於資料庫讀寫屬於磁碟io,對應我們隨機寫入與讀取的效率,相對較低,如果能夠把部分資料或業務邏遷移到記憶體的快取或者 redis 中,會極大的提高併發效率。如果我們把部分業務邏輯。

5. 動靜分離

將大量靜態資源進行cdn快取,減少後端伺服器的請求壓力。

秒殺系統設計

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

秒殺系統設計

一 穩 1 前端 1 前端靜態資源快取 cdn 按鈕置灰 ip限流 一段時間內現在使用者ip 2 同一userid限制訪問頻率,超過頻率返回同乙個頁面,進行限流。利用驗證碼防止惡意攻擊。後端 1 請求丟到mq中按照訊息佇列進行處理,進行削峰 2 因為秒殺是讀多寫少,把庫存資料預先載入到redis中,...

秒殺系統設計

1 什麼是秒殺系統 秒殺系統 就是網路商家為 商品,以低 商品賣出做的限時限量搶購活動 2 秒殺系統可以解決什麼問題,用在哪些場景 解決問題 解決網路商家快速 商品,以低 商品賣出做的限時限量搶購活動 應用場景 商品搶購 3 秒殺系統會出現什麼問題,解決方案 出現的問題 1 併發量大 2 防止超賣 ...