銷量最優解
阿新 • • 發佈:2022-05-23
目錄
微信公眾號:molashaonian
業務背景
商品列表等場景需要展示商品銷量,銷量自然就跟訂單關聯,那麼統計銷量就需要統計商品訂單銷售的sku 數量
痛點:目前銷量計算以 spu(商品) 維度,通過JOB定時查詢訂單商品表進行統計,以及更新銷量快取,對資料庫表的全量查詢消耗過大
優化方案初版(優化大多不能一步到位,請看到最後)
- 從計算入手。目前問題也知道了,全量查詢計算消耗大,那就從計算銷量入手。
- spu首次全量計算銷量,並記錄該spu最後計算銷量得到的訂單ID
- 存在spu最後計算的訂單ID,根據該訂單ID進行銷量的增量計算
- 新增全量計算開關控制,用以銷量校準
該優化方案解決了多次的全量查詢消耗過大問題,只會有初始的一次全量計算,之後便是增量,同時為了校準銷量,也保留了全量計算的功能,通過開關控制。
- 不足。雖然避免了全量計算,不過每次的Job都會對全部的 spu 進行銷量計算,儘管有些 spu 在這期間並沒有產生銷售訂單
優化方案升級版
為了解決初版無法避免對全部 spu 進行銷量計算,在這一步決定把它幹掉
- 找出銷量有變動的 spu。訂單支付成功則記為有效銷量,所以在支付回撥處入手
- 支付回撥:對銷量快取進行更新,並對有銷量新增的 spu 快取起來
- 保留初版優化的全量計算銷量Job處理方案,用以銷量校準 (該Job預設不開啟)
- 新增銷量增量同步Job:從快取中取銷量資料(就是支付回撥時存下的快取資料)對資料庫表,ES 同步
- 結合實現邏輯圖理解
- 對於銷量解決方案歡迎留意評論
微信公眾號:molashaonian