feed流推模式和拉模式学习
1.定义
Feed 流(如朋友圈、短视频首页、微博时间线)确实通常有 推(Push) 和 拉(Pull) 两种模式(以及一种常见的混合模式)。
2.推模式push
写扩散(Write Amplification)、读便宜(Read Cheap)。
✅ 优点
读性能极好:用户打开首页时直接读自己的feed列表(cache中就有),无需实时计算。
时间线实时性强:粉丝几乎能立即看到新内容。
容易实现个性化排序(部分):推送时可以按粉丝画像定制推送权重或过滤。
❌ 缺点
写放大严重:一个大V发一条内容,可能要写入数百万个粉丝feed。
存储开销巨大:每个粉丝都有独立的feed副本。
高并发写入压力:写路径成本高,写失败或延迟时容易引起不一致。
3.拉模式pull
用户打开首页时才查询:
1. 找出我关注的人(或算法推荐内容源)
2. 拉取这些人的最新内容
3. 排序 + 去重 + 分页
读扩散、写便宜。
✅ 优点
写入成本低:用户发内容只写一份到公共内容池。
存储节省:不需要为每个粉丝维护独立feed。
适合动态推荐算法:可以结合用户实时行为做排序(比如兴趣衰减、实时热度等)。
❌ 缺点
读性能差:每次打开feed都要实时查询 + 聚合 + 排序。
不易保证时间一致性:不同时间拉取可能结果不一样。
高延迟问题:实时聚合多个源数据时容易卡顿。
4.混合模式
大多数大型feed系统采用混合策略: