zoukankan      html  css  js  c++  java
  • 系统设计-电商排名

    销售排名:大型电子商务公司希望列出最畅销的产品,整体和类别。例如,一款产品可能是整体销量排名第1056位的产品,但在“运动器材”一栏中排名第13位,在“安全:·”一栏中排名第24位。描述你将如何设计这个系统。

    1.分析步骤

    • 步骤1: 确定问题的范围
      • 首先,我们需要定义我们正在构建什么
        • 我们假设只要求我们设计与此问题相关的组件,而不是整个电子商务系统。
        • 我们还应该定义销售排名的含义。
          • 它是所有时间的总销售额吗?
          • 上个月的销售额是多少?
          • ...
    • 步骤2:做出合理的假设
      • 我们假设统计数据不需要是100%最新的。
      • 对于最受欢迎的项目,精度是很重要的,但是对于不太受欢迎的项目,有一定程度的误差也是可以的。
      • 我们假设数据应该每小时更新一次(对于最流行的项目),但是数据的时间范围不需要精确到最后七天(168小时)。如果有时超过150个小时,也没关系。
      • ...
    • 步骤3:绘制主要组件


    • 步骤4: 确定关键问题
      • 如果查询和写非常昂贵,我们可以考虑完全放弃数据库,只使用日志文件。这将允许我们利用MapReduce之类的东西。

        • 我们将运行频繁的作业,根据产品ID和时间范围将文件合并在一起,以便最终将给定一天(或可能一个小时)内的所有购买组合在一起
      • 要获得每个类别中最畅销的产品,只需对每个目录进行排序
      • 我们将运行频繁的作业,根据产品ID和时间范围将文件合并在一起,以便最终将给定一天(或可能一个小时)内的所有购买组合在一起
        • 我们如何得到整体排名?有两种很好的方法:
          • 我们可以将一般类别视为另一个目录,并将每次购买写入该目录。
          • 或者,因为我们已经按照每个类别的销售量顺序对产品进行了排序,所以我们还可以进行N-way merge来获得总排名

    2.问题延伸

    • 你认为你会在哪里遇到下一个瓶颈?你会怎么做?
    • 如果还有子类别呢?所以项目可以列在“体育”和“体育器材”下面(甚至“运动”>“运动器材”>“网球”>“球拍”)?
    • 如果需要更准确的数据怎么办?如果所有产品都需要在30分钟内准确无误,该怎么办?
  • 相关阅读:
    通过哪吒动漫豆瓣影评,带你分析python爬虫与BeautifulSoup快速入门
    带着canvas去流浪系列之九 粒子动画
    带着canvas去流浪系列之八 碰撞
    Python小数据保存,有多少中分类?不妨看看他们的类比与推荐方案...
    免费试用 | 多模 NoSQL 服务GeminiDB for Cassandra 全球首发
    Vue+ElementUI项目使用webpack输出MPA
    nmon
    补习系列(12)-springboot 与邮件发送
    从React 编程到"好莱坞"
    百度网盘API的操作--PCS 百度个人云存储 上传 ,下载文件
  • 原文地址:https://www.cnblogs.com/ice-line/p/11757996.html
Copyright © 2011-2022 走看看