秒殺的設計(參考京東)

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