秒殺系統設計思路


業務特點:
1、瞬時並發量大,秒殺時會有大量用戶在同一時間進行搶購,瞬時並發訪問量突增幾倍、甚至幾十倍以上
2、庫存量少,一般秒殺活動商品量很少,這就導致了只有極少量用戶能成功購買到。
3、業務和流程較為簡單,一般都是下訂單、扣庫存、支付訂單。

技術難點:
1、若秒殺活動若與其他營銷活動同時進行,可能會對其他活動造成沖擊,極端情況下可能導致整個服務宕機。
2、頁面流量突增,秒殺活動用戶訪問量會突增。需確保訪問量的突增不會對服務器、數據庫、Redis等造成過大的壓力。
3、秒殺活動庫存量小,瞬時下單量大,易造成超賣現象

架構設計思想
1、限流:由於庫存量很少,對應的只有少部分用戶才能秒殺成功。所以要限制大部分用戶流量,只准少量用戶流量進入后端服務器。
2、削峰:秒殺開始瞬間,大量用戶進來會有一個瞬間流量峰值。把瞬間峰值變得更平緩是設計好秒殺系統關鍵因素。一般的采用緩存和MQ實現流量的削峰填谷。
3、異步:秒殺可以當做高並發系統處理。即可以從業務上考慮,將同步的業務,設計成異步處理的任務。
4、緩存:秒殺瓶頸主要體現在下單、扣庫存的數據操作中。關系型數據庫寫入和讀取效率較低。若將部分操作放到緩存中能極大提高並發效率(如使用Redis操作庫存)

整體架構

一、客戶端優化
1、秒殺頁面:
如果秒殺頁面的資源,如:CSS、JS、圖片、商品詳情等都經后端,服務肯定承受不住。如果將這個頁面進行靜態化,秒殺時肯定能起到壓力分散的作用。
2、防止提前下單:
使用JS控制提交訂單按鈕,如果秒殺時間,就不能點擊該按鈕。

二、服務端優化
1、對查詢秒殺商品進行優化
將首次查詢到的商品信息進行數據放入緩存,后面再訪問時直接返回緩存的信息。
2、對庫存的優化
在設置秒殺活動時就將商品庫存放於Redis中,在下單扣庫存時,直接對Redis進行操作。
3、后端流量控制優化(參加用戶量過大時)
使用消息隊列、異步處理等方式解決。即超過系統水位線的請求直接拒絕掉。

核心思想:
1、層層過濾,逐漸遞減瞬時訪問,降低下游的壓力,減少最終對數據庫的沖擊
2、充分利用緩存與消息隊列,提高請求處理速度以及削峰填谷的作用

 

 

微信掃碼關注公眾號,有意想不到的驚喜哦!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM