Feed 流系统架构设计
朋友圈、微博、抖音推荐流——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 流系统的核心——粉丝分级的扩散策略
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 谜思录!