Feed 流推拉设计模式

1. 什么是 Feed 流

Feed 是将用户主动订阅的若干消息源组合在一起形成内容聚合器,帮助用户持续地获取最新的订阅源内容。 Feed 流即持续更新并呈现给用户内容的信息流。在生活中 Feed 流也是很常见的,比如微信朋友圈、微博等,就是 Feed 流的经典实现。

2. Feed 流的经典推拉模式

在了解推拉设计模式之前,先看几个概念:

  • 发件箱:用于存储发出消息的用户消息的容器
  • 收件箱:用于存储粉丝订阅的用户发送的消息的容器

有了这两个概念之后,就引出了拉架构推架构,其中拉架构对应发件箱,推架构对应收件箱。

2.1 推模式/拉模式的交互流程

假设此时有A用户和B用户,其中B是A的粉丝,当A发送一条消息时会把消息投递到自己的发件箱和B的收件箱,那么这时候这条消息就产生了两条Feed。

当B用户登录成功后查看自己的Feed流时(查看收件箱)可以有两套技术选型,分别是拉模式推模式

2.1.1 拉模式(读扩散)

拉模式是指B用户要查询关注的用户的列表,再查询关注的用户的发件箱,从而获取关注用户发送给B用户的信息。

优点:

  1. 关注的用户少的时候,可以快速找到发送给自己的消息

缺点:

  1. 如果关注的用户很多,那么查询的消耗是比较大的

2.1.2 推模式(写扩散)

推模式是指A用户在发送消息时,会先查询自己的粉丝列表,再向所有关注自己的粉丝的收件箱投递一条信息。

优点:

  1. 粉丝数量较少的时候,可以更快的将发送的消息推送到粉丝的收件箱,粉丝直接查看自己的收件箱即可
  2. 可以异步化的处理消息写入(实时性要求不高时)

缺点:

  1. 当粉丝数量较多时,用户发送一条消息会产生大量的写入粉丝收件箱的操作,性能较差
  2. 非活跃用户较多时,不会产生实际意义的读取操作,浪费磁盘空间

2.2 推拉混合模式

由于只使用推模式或拉模式都有不可避免的一些问题,这里就可以使用推拉混合模式来尽可能的避免在一种模式下的缺点。

其中推拉混合模式的方法是:

  1. 大V不推,只写入发件箱,对大V用户采用拉模式
  2. 非大V用户采用推模式,让用户直接读取收件箱

此时粉丝在获取Feed时需要将大V发件箱的信息和自己收件箱的信息进行merge后再展示。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值