電商專案中的秒殺
阿新 • • 發佈:2019-02-20
秒殺業務
一、秒殺價格(參考京東)
1、秒殺開始前,秒殺商品顯示原價(涉及除秒殺活動頁面外所有商品的顯示頁面,包括購物車、收藏、足跡等頁面)
2、秒殺開始前,可以使用原價購買商品
3、秒殺開始前,秒殺活動中的商品顯示秒殺價,而非原價。進入商品詳細可顯示原價
4、秒殺開始後,秒殺商品顯示秒殺價(所有商品顯示頁面)
5、秒殺結束後,秒殺商品恢復原價(涉及除秒殺活動頁面外所有商品的顯示頁面,包括購物車、收藏、足跡等頁面)
二、秒殺庫存(根據專案實際情況總結)
1、商品庫存是以SKU為單位計量的,即每個商品的每個規格為最小庫存計量單位
2、SKU秒殺庫存和實際庫存分開設定,如實際庫存為50,秒殺庫存可使用<=50的任意一個值
3、由於秒殺開始前也可以購買商品,所以下單時應同時減少SKU的實際庫存和秒殺庫存,取消訂單時如秒殺活動還在進行,也應該同時恢復實際庫存和秒殺庫存
4、相反的,秒殺商品生成訂單後,SKU的秒殺庫存和實際庫存也應該同時減少,取消訂單後同時恢復
5、應限制秒殺商品的購買數量,否則容易因為惡意下單導致庫存不足
三、秒殺活動
1、秒殺活動開始結束時間不能重疊(針對一個B端,如果有開發平臺則每個商戶不能重疊)
2、秒殺活動的規則一般是:當天/未過期/開始時間最早的一條,如果需要同時顯示多個秒殺活動,類似京東,則需要另外設計
3、秒殺活動的倒計時:在前臺用js控制/開始前顯示:離秒殺開始還剩00:00:00/開始後顯示:離秒殺結束還剩:00:00:00
秒殺活動結束後,自動替換下一個秒殺活動,如果沒有則不顯示秒殺活動 4、秒殺活動一般時間範圍為當天,不會跨天;時間精確到秒 5、可根據秒殺庫存數、秒殺銷售數在前端顯示秒殺銷售進度 6、秒殺活動表的基本設計 編號、活動名稱、活動型別、開始時間、結束時間、是否有效、活動描述、建立時間、建立人、修改時間、修改人 秒殺商品
1、一般來說,秒殺商品只需要設定秒殺價,但有些特殊的業務場景,比如某系統所有商品都是【價格+積分】的組合,那麼秒殺商品通常也需要設定【秒殺價格+秒殺積分】
2、選擇秒殺商品時應將其相關資訊列舉清晰,如商品名稱、規格、原價、優惠價、積分、庫存、是否顯示、秒殺Title說明、顯示序號(秒殺商品以一個SKU為單位進行設定)
3、秒殺商品的圖片需要單獨設定,比如PC、APP、微信可能需要設定不同圖片
4、秒殺庫存的設定:不能大於SKU庫存,還需考慮秒殺開始前的購買情況,開始前購買是否減秒殺庫存
5、秒殺銷售數:記錄秒殺銷售數,主要使用者統計和前端顯示
6、秒殺商品表的基本設計
商品編號、活動編號、秒殺價格、秒殺積分、庫存數、銷售數、顯示順序、秒殺圖片(各種客服端)、商品描述、是否有效、建立時間、建立人、修改時間、修改人
秒殺使用技術
一、價格服務
1、引入秒殺活動後,所有顯示商品價格的地方都需要判斷該商品是否是秒殺商品並獲取秒殺價格(不管有沒有秒殺活動都需要呼叫相關邏輯)
2、獲取秒殺價格服務的呼叫量非常大,所以需要考慮優化
1、引入快取,秒殺價格從快取獲取
2、定時任務更新快取:當任務檢測到價格變化時,實時更新快取
3、價格服務的引數儘可能簡單
1、輸入:商品編號、客戶端型別、其它可能的擴充套件欄位
2、輸出:商品編號、秒殺價、秒殺積分、其它秒殺資訊
二、鎖
1、因為秒殺瞬間併發比較大,所以很可能影響到庫存,如果庫存資料在快取快取中,需要對快取加鎖;如果在資料庫中判斷,則需要對資料庫加鎖
秒殺活動結束後,自動替換下一個秒殺活動,如果沒有則不顯示秒殺活動 4、秒殺活動一般時間範圍為當天,不會跨天;時間精確到秒 5、可根據秒殺庫存數、秒殺銷售數在前端顯示秒殺銷售進度 6、秒殺活動表的基本設計 編號、活動名稱、活動型別、開始時間、結束時間、是否有效、活動描述、建立時間、建立人、修改時間、修改人 秒殺商品