什么是Feed流?
Feed是将用户主动订阅的若干消息源组合在一起形成内容聚合器,帮助用户持续地获取最新的订阅源内容。
严格按照上述定义来说,我们通常说的搜索结果、排序列表都不能算作feed流。
从定义来看,
- feed是一种给用户持续提供内容的数据形式
- 是由多个内容提供源组成的资源聚合器,由用户主动订阅消息源并且向用户提供内容
Feed流的展现形式有很多种,主要的有timeline以及rank。
- timeline:是最典型的feed流展示方式,按照feed流内容更新的时间先后顺序,将内容展示给用户,早期的微博、朋友圈都是典型的timeline。
- rank:即按照某些因素计算内容的权重,从而决定内容展示的先后顺序。例如当前的微博主页信息流算法即抛弃了原始的timeline,而采用最新的智能排序。
Feed系统架构
Feed系统: Push/PuLL
对于中小型的Feed系统,feed数据可以通过同步push模式进行分发。如图12-1,用户每发表一条feed,后端系统根据用户的粉丝列表进行全量推送,粉丝用户通过自己的inbox来查看所有最新的feed。新浪微博发展初期也是采用类似方案,通过LAMP架构进行feed push分发,从而实现快速开发及上线。
不同模式的适用场景:
拉模式:许多feed流系统初版会基于拉模式,因为用户数较少且日活低,拉取成本较低
推模式:
1. 用户关系数比较均匀,且有上限,如朋友圈
2. 偏向推荐类feed,同一个feed对不同用户价值不同,计算feed和用户间的分数,只推荐给分数较高的用户
推拉结合模式:大部分用户关系数比较均匀,少数用户千万级别,无上限。例如微博。能够解决单纯采用推模式时大V用户高并发写问题。
以微博为例,使用两种推拉模式:
① 在线推,离线拉:大V发布动态后,有限推送给同时在线的粉丝,离线粉丝上线后再拉取该动态。
![](http://upload-images.jianshu.io/upload_images/15086835-27e2d45fa25e4e10.png?imageMogr2/auto-orient/strip|imageView2/2/w/720/format/webp)
② 定时推,离线拉:大V发布动态后,以常驻进程的形式推送到粉丝关注✌️。
![](http://upload-images.jianshu.io/upload_images/15086835-cee54bf2dfda547a.png?imageMogr2/auto-orient/strip|imageView2/2/w/720/format/webp)
feed流智能排序(Ranking):
智能排序基于趋势trending、热门hot、用户生产UGC 、编辑推荐PGC、相似Similarity等等因素综合考虑,随着技术的进步智能算法将会更加懂得用户的喜好。
参考: