1、什么是Feed 流?
在移动互联网时代,Feed流产品是非常见的,比如我们每天都会用的微博、朋友圈、抖音、今日头条等都是非常典型的Feed流产品
Feed流是Feed+流,Feed本意是投喂,feed流的本意就是再往一个地方投喂新鲜的饲料。
Feed流中的一些概念:
在Feed流中:每一条状态或者消息都是一个Feed单元信息。 Feed:每一个feed都是一个单元信息
比如:一条朋友圈状态、一条微博、一条视频、一条私信 所以Feed流就是不停更新的单元信息并呈现给用户内容的信息流
Feed流有三种模式
拉模式(读扩散)
博主发布一条帖子。粉丝获取博主帖子时,只能通刷新接口获取最新帖子数据
这种方式可以让用户更加灵活性地选择自己想看到的内容,而不是被动地接收推送信息。提高用户体验。
系统层面:提高系统的效率、减少服务器的负载压力,提高系统的响应速度
优点
节省内存空间。个性化和灵活选择方式
缺点
耗时久、不实时
推模式(写扩散)
博主发帖子,直接推送给所有粉丝。 用户行为分析:根据用户的浏览历史记录、点赞、评论等行为,推荐给用户可能感兴趣的内容。
用户兴趣标签:根据用户的兴趣标签,推荐与用户兴趣相关的内容
优点
耗时低(实时更新)
缺点
耗内存高
推拉结合模式
推拉模式:主要用于大V博主、粉丝量多大。 在线推、
离线拉: 只推送给在线活跃用户。不在线的用户不推送 定时推、
离线拉:
用户登陆,上传活跃标识。推送到用户队列里面
2、为什么使用Feed流?
当前ai产品,有广场帖子、用户关注、私信、点赞、评论等通知。
产品特性:读写比例,很不平衡。读多写少。可能是100:1,或者10:1。发帖的人不多。看帖的多
非稳定的账号关系:账号之间取关等操作,所以用户之间的关系一直在变动,是一种非稳定的状态
消息必达性:发一条私信、帖子、评论。没有通知。用户会错失很多信息。很难对产品产生依赖性。
为用户持续提供“沉浸式”的体验。
而目前所有通知等通知都是由单一通过接口刷新来完成的。存在诸多缺陷:通知不及时。比如私信、评论、点赞通知。需要一直刷新等待。对于用户来说刷新等待(多等1秒都觉的是卡)
很差的用户体验感。
增加Feed流 系统会有功能哪些完善?
用户发送帖子、评论、点赞、私信、通知都跟实时推送给在线用户或者粉丝。这对于用户或者粉丝来说更加简单高效的了解到最新的消息和内容
解决哪些痛点?
一、状态信息、实时通知
二、解决动态帖子分页问题。与传统分页不一样
3、Feed流两种Timeline
1、TimeLine模式
不做内容筛选,简单的按照内容发布时间排序,常用于朋友圈:朋友圈,微博
优点
信息全面,不会有缺失。并且实现也相对简单
缺点
信息杂乱比较多,用户不一定感兴趣,内容获取效率低
2、智能排序模式
利用智能算法屏蔽掉违规的、用户不感兴趣的内容。推送用户感兴趣信息来吸引用户。比如:抖音,不是按照发布时间排序,而是根据个人用户的喜好分析推送
优点
推送用户感兴趣信息,用户粘度很高,容易沉迷。
缺点
要求算法必须精准,如果算法不精准,可能起到反作用
4、实现方式
实现模式:推拉模式(在线推、离线拉)
Feed流系统最关键的两个核心:一个是存储、一个是推送
存储:
Redis:最新时效消息列表、用于存储接受的时间热度数据。
MySql:关系表、消息,永久性保存
推送:
Netty:用于推送到客户端信息
代码待更新
5、Feed流下实现分页
代码待更新。待补充