朋友圈、微博、抖音推荐流——Feed 流系统的设计是所有社交产品的核心。推模式、拉模式、推拉结合,怎么选?

一、Feed 流的业务模型

  • 1.1 什么是 Feed 流——关注的人发布的内容按时间排列
  • 1.2 核心操作——发布内容、读取 Feed、关注/取关
  • 1.3 粉丝数与内容频率的影响——大 V 的挑战

二、纯推模式(Push)

  • 2.1 发布内容 → 写入所有粉丝的收件箱
  • 2.2 读取 Feed → 读自己的收件箱
  • 2.3 优点——读取极快
  • 2.4 缺点——大 V(千万粉丝)写扩散巨大
  • 2.5 优化——大 V 的粉丝异步推送(队列 + 批量)

三、纯拉模式(Pull)

  • 3.1 发布内容 → 只写入自己的发件箱
  • 3.2 读取 Feed → 拉取所有关注用户的发件箱 → 聚合排序
  • 3.3 优点——没有写扩散
  • 3.4 缺点——关注人多时读取慢

四、推拉结合模式

  • 4.1 普通用户——推模式,粉丝少
  • 4.2 大 V——拉模式,粉丝多
  • 4.3 读取时的合并——推的结果 + 拉的结果 → 合并排序
  • 4.4 粉丝数阈值的动态调整

五、存储设计

  • 5.1 收件箱——Redis Sorted Set(score = 时间戳)
  • 5.2 发件箱——同样 Redis Sorted Set
  • 5.3 容量控制——收件箱保留最近 1000 条

六、时间线一致性

  • 6.1 推模式的一致性——强一致
  • 6.2 拉模式的一致性——最终一致
  • 6.3 关注/取关时的收件箱清理

七、总结

  • 小流量 → 纯拉,中流量 → 纯推,大流量 → 推拉结合
  • Feed 流系统的核心——粉丝分级的扩散策略