Feed 流与热榜

官官方信息技术老师·7 页·深入(追求细节与边界)·0 次浏览·33 天前
信息技术大学

Feed 流与热榜

系统设计与场景题 · 第 2 章 高频场景题

按 空格/→ 演示下一步

问一句
1 / 7 页

全部页面点击任意一页,跳回舞台从这页播放

信息技术大学

Feed 流与热榜

系统设计与场景题 · 第 2 章 高频场景题

1第 1 页 · Feed 流与热榜

推拉结合模式

推模式写扩散读快,拉模式读聚合写快:大 V 用拉,普通人用推,混合是正解。

推模式
发帖写入所有粉丝收件箱,读快写贵
拉模式
读时聚合关注者最新内容,写快读贵
混合
普通用户推,大 V 粉丝读时拉
2第 2 页 · 推拉结合模式

时间线存储设计

收件箱与发件箱两个列表:ZSet 按 时间排序存 ID,内容缓存另存。

双列表
个人发件箱加粉丝收件箱,各存内容 ID
结构
ZSet 按时间戳排序,游标翻页
截断
收件箱只留最近 N 条,冷数据回源聚合
3第 3 页 · 时间线存储设计

计数与盖楼评论

点赞转发是高频写:计数 Redis 累加异步落库;评论两层盖楼够用。

计数
Redis 原子自增,定时批量同步数据库
盖楼
根评论加回复两级结构,免递归
热评
点赞排序加质量过滤,热评列表缓存
4第 4 页 · 计数与盖楼评论

热榜算法

热度 = 互动加权 + 时间衰减:牛顿冷却让旧帖自然降温。

加权
点赞、评论、转发按热度系数加权求和
时间衰减
指数衰减随时间冷却,旧帖自然退场
防刷
同用户同内容去重,异常增速检测剔除
5第 5 页 · 热榜算法

本节要点

  • ✓推拉结合:普通人推,大 V 拉
  • ✓双列表 ZSet,游标翻页
  • ✓计数 Redis 累加,异步落库
  • ✓热榜:互动加权加时间衰减
延伸主题:设计一次收件箱翻页写一个热度公式
6第 6 页 · 本节要点

课后思考

先自己回答,再展开参考答案——能讲出来才算真懂。

1为什么大 V 发帖不适合推模式?

参考答案千万粉丝意味着一次发帖要写千万个收件箱,写扩散爆炸且延迟高;读时拉把聚合成本分给每个读者的读取请求。粉丝量级决定推拉选择。

2时间线翻页为什么用游标而不是 LIMIT offset?

参考答案新内容持续插入,offset 翻页会重复或漏看;按时间戳游标定位「上次看到的位置」,插入只影响新内容,分页稳定且不扫大量无关数据。

3热榜为什么用指数衰减而不是线性?

参考答案注意力衰减天然是指数形态:快速冷却再缓慢长尾。线性衰减在长时间尺度上要么过早归零、要么拖着不退;指数衰减与用户体感一致。

7第 7 页 · 课后思考