聽陳老師的,擼一個簡單的秒殺架構

前言:轉後端也有兩年多了,一直以來懵懵懂懂,雖然總是想着努力進步,卻茫然不知方向。在go朋友羣吹水的時候,說自己秒殺活動胸有成竹。煎魚大哥叫我看他的簽名:最短的距離是從手到嘴,最長的距離是從說到做。
所以我決定寫一套簡單的秒殺示例,來驗證我的想法!

1.架構圖

簡單架構圖.png

2.架構說明

因爲這次純粹驗證我的秒殺思路,所以只關注主要方面,其他細節就不深究了,不然太浪費時間了。
例如:nginx省略了,web端省略了。
實驗步驟分爲四個:

  • 圖一: 直接使用單點DB扛流量,試試MongoDB能夠扛多少。
  • 圖二: 使用MongoDB讀寫分離,看看能夠抗多少。
  • 圖三: 推測寫Mongo會存在瓶頸,使用MQ削峯寫Mongo,看看能夠扛多少。
  • 圖四: 加大讀力度,看看能不能壓爆Mongo,壓爆後用redis緩存扛高併發讀。

核心思想:
秒殺活動最重要的是要明白一點,這只是一個活動而已,數量有限,搶不到很正常。有了這個大前提,那麼啥都好做了,跟運營團隊預估參與活動人數,例如十萬人蔘與的活動,秒殺一萬份商品,那就流氓一點,極端一點,丟掉90%的請求都可以,實際打入server的流量只有一萬個,那麼這個流量是完全可以承受的(承受不住日常就崩潰了),爲了保險起見,可以申請臨時加機器。

3.併發目標

十萬QPS

4.如何檢驗

  1. 通過wrk發送獲取商品詳情請求,獲取庫存。
  2. 支付下單
  3. 通過wrk日誌查看請求驗證結果。
  4. 通過服務器壓力狀態驗證結果。
  5. 通過數據庫記錄是否與預期相符合來驗證結果。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章