销量最优解

 

 

微信公众号:molashaonian

业务背景

商品列表等场景需要展示商品销量,销量自然就跟订单关联,那么统计销量就需要统计商品订单销售的sku 数量

痛点:目前销量计算以 spu(商品) 维度,通过JOB定时查询订单商品表进行统计,以及更新销量缓存,对数据库表的全量查询消耗过大

优化方案初版(优化大多不能一步到位,请看到最后)

  • 从计算入手。目前问题也知道了,全量查询计算消耗大,那就从计算销量入手。
  • spu首次全量计算销量,并记录该spu最后计算销量得到的订单ID
  • 存在spu最后计算的订单ID,根据该订单ID进行销量的增量计算
  • 新增全量计算开关控制,用以销量校准

该优化方案解决了多次的全量查询消耗过大问题,只会有初始的一次全量计算,之后便是增量,同时为了校准销量,也保留了全量计算的功能,通过开关控制。

  • 不足。虽然避免了全量计算,不过每次的Job都会对全部的 spu 进行销量计算,尽管有些 spu 在这期间并没有产生销售订单

优化方案升级版

为了解决初版无法避免对全部 spu 进行销量计算,在这一步决定把它干掉

  • 找出销量有变动的 spu。订单支付成功则记为有效销量,所以在支付回调处入手
  • 支付回调:对销量缓存进行更新,并对有销量新增的 spu 缓存起来
  • 保留初版优化的全量计算销量Job处理方案,用以销量校准 (该Job默认不打开)
  • 新增销量增量同步Job:从缓存中取销量数据(就是支付回调时存下的缓存数据)对数据库表,ES 同步
  • 结合实现逻辑图理解
Syntax error in textmermaid version 10.9.0
Syntax error in textmermaid version 10.9.0
  • 对于销量解决方案欢迎留意评论

微信公众号:molashaonian
Alt

posted on   EvanLong  阅读(77)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示