除了Timeline类型的Feed流类型,Rank类型的Feed流也比较常见。Rank类型的潜在Feed内容非常多,用户无法全部看完,也不需要全部看完,则需要为用户选出最想看的内容。Rank类型典型的应用包括图片分享网站、新闻推荐网站等。本文主要为您介绍两种常见的实现Rank方式。

方式一(轻量级)

上面架构图展示的Rank方式比较轻量级,适用于推拉结合的场景。

  • 写流程和Timeline基本一样。
  • 读流程里面会先读取所有的Feed内容,这个和Timeline一样。Timeline中这部分会直接返回给用户,但是Rank类型需要在一个排序模块里面,按照某个属性值排序,然后将所有结果存入一个timeline cache中,并返回分数最高的N个结果,下次读取的时候再返回[N+1, 2N]的结果。

方式二(重量级)

上面架构图展示的Rank方式比较重量级,适用于纯推模式。

  • 写流程和Timeline一样。
  • 每个用户有两个收件箱。
    • 一个是关注页Timeline,保存原始的Feed内容,用户无法直接查看这个收件箱。
    • 一个是rank timeline,保存为用户精选的Feed内容,用户直接查看这个收件箱。
  • 写流程结束后还有一个数据处理的流程。个性化排序系统从原始Feed收件箱中获取到新的Feed内容,按照用户的特征、Feed的特征计算出一个分数。每个Feed在不同用户的Timeline中可能分数不一样的,计算完成后再排序然后写入最终的rank timeline。