Logo
Section 1 / 9

问题描述

让我们来看一个要求你设计 Twitter 动态系统的问题描述。

导入

问题描述

让我们来看一个要求你设计 Twitter 动态系统的问题描述。

问题描述

面试官要求你设计一个 Twitter 信息流系统,能够根据用户的社交关系图(social graph)展示最相关的内容。

理解问题

用户 A 在 Twitter 平台上关注了其他个人或机构,他们希望通过自己的信息流了解这些关注对象的动态。

过去通常采用一种较为简单的方式:将用户 A 上次访问以来其关注对象发布的所有推文按时间倒序排列展示。

然而,这种按时间倒序的信息流展示方式常常导致用户 A 错过一些本可能非常感兴趣的内容。我们来看一下为什么会发生这种情况。

Twitter 拥有大量日活跃用户,因此平台产生的数据量极为庞大。一条可能极具吸引力的推文,由于在其之后发布了大量其他推文,被迅速刷到了信息流底部。

因此,为了提供更具吸引力的用户体验,必须根据用户的兴趣和社交关系,对推文进行相关性排序,将最相关的内容优先展示。

通过基于内容与用户的相关性来组织信息流,可以显著提升体验。如今,信息流的排序已从单纯的时间顺序转变为基于相关性的排序。

问题规模

明确了问题背景后,我们进一步定义问题的规模:

  1. 假设有五亿日活跃用户;
  2. 每个用户平均关注 100 人;
  3. 每位用户每天平均查看 10 次自己的信息流。

这意味着,每天总共会产生 50 亿次信息流请求(5 亿 × 10),即你的推文排序系统每天需要运行 50 亿次。

最后,我们将该问题建模为一个机器学习任务:

“给定一组推文,训练一个机器学习模型,预测每条推文的互动概率,并据此得分对推文进行排序”

搜索排名

指标