关注推送
关注推送也称为Feed流(直译为投喂),为用户持续的提供“沉浸式”的体验,通过无限下拉刷新获取新的信息(如,短视频、博客等)。
获取信息的两种模式
-
传统模式:需要用户自己去根据所需去查询内容。
-
Feed模式:内容通过匹配用户需要,推送给用户。(节省用户时间)
Feed流模式
Feed流产品通常分为两种常见的模式
- Timeline:不做内容筛选,简单的按照内容发布时间排序,常用于好友或关注。例如朋友圈等。
- 优点:信息全面,不会有缺失,实现相对简单。
- 缺点:信息杂乱无章,用户不一定感兴趣,内容获取效率低。
- 智能排序:利用智能算法屏蔽掉违规的、用户不感兴趣的内容。推送用户感兴趣的信息来吸引用户,增加用户的黏度。
- 优点:投喂用户感兴趣的信息,用户粘度较高,容易沉迷。
- 缺点:如果算法不精准,则会可能起到反作用。
实现方案
拉模式
拉模式也称为读扩散。
每个被关注的人都会有一个“收件箱”,发送的消息都会先存入其中。而关注的人与之对应的有一个“收件箱”,它只有在读消息的时候才会去被关注的人那里拉取发布的消息并将其进行时间排序。这种模式的优点在于节省内存空间(收件箱读完之后就可以将其清理掉,后续读的时候再重新拉取,只保留了一份在发件人的发件箱里)。缺点也显而易见耗时大,延迟高(因为每次读的时候都要重新拉取数据)。
推模式
推模式叫做写扩散。与拉模式恰恰相反,被关注的人没有自己的“发件箱”,所以当他们发布消息的时候会自动推送到关注人的收件箱中进行保存。所以该模式的优点在于延迟低,缺点为占用内存大
推拉结合模式
别称为读写混合,兼容推和拉两种模式的优点。
对于普通的博主,其对应的粉丝也很少,所以可以采取“推模式”,低延迟,用户体验较好。而那些大V,粉丝很多,但其粉丝也分为三种:一种是关注后就从来没有去读过消息(俗称“僵尸粉”),另一部分是平时偶尔读取消息的普通粉丝,还有一小部分天天都要读取信息的活跃粉丝(俗称“真爱粉”)。针对这三类粉丝,前两种可以采用拉模式,当他们需要读取消息的时候采取发件箱中获取信息,这样节省空间。而对于那一小部分活跃粉丝则采用推模式,降低延迟,提升用户体验。
拉模式 | 推模式 | 推拉结合 | |
---|---|---|---|
写比例 | 低 | 高 | 中 |
读比例 | 高 | 低 | 中 |
用户读写延迟 | 高 | 低 | 低 |
实现难度 | 复杂 | 简单 | 很复杂 |
使用场景 | 很少使用 | 用户量少 | 用户量很大(过千万) |
收件箱可以用Redis中的SortedSet实现。